Технология программирования для распределенных параллельных систем. Демьянович Ю.К - 66 стр.

UptoLike

§ 4. Портфель задач
Реализация параллельных вычислений возможна с использова-
нием так называемого портфеля задач.
Задача здесь представляет независимую единицу работы. За-
дачи помещаются в “портфель”, разделяемый всеми процессами,
работающими по программе
while(true) {
[получить задачу из "портфеля"];
if([задач больше нет])
break; # выход из цикла
fi
}
Парадигма портфеля задач имее т следующие положительные
черты:
1) она весьма проста:
нужно дать представление задач;
определить портфель (набор задач, их расположение);
дать программу выполнения задачи;
определить критерий ее окончания;
2) программы с использованием портфеля задач легко масшта-
бируются: нужно просто изменить число процессов (но производи-
тельность может не измениться, если число процессов больше числа
задач);
3) упрощается балансировка нагрузки: освободившиеся процес-
сы берут на себя решение новых задач из портфеля (пока задач в
два или три раза больше, чем процессов, загрузка процессов ока-
жется более или м ене е одинаковой).
Рассмотрим решение задачи о генерации простых чисел (решето
Эратосфена) с помощью портфеля задач, используя C-Linda (эта
задача уже рассматривалась ранее на языке CSP).
Числа-кандидаты на простое число хранятся в пространстве
кортежей. Управляющий процесс собирает результаты и помещает
числа-кандидаты в портфель.
Каждый процесс удаляет число-кандидат из портфеля и прове-
ряет, является ли оно простым, деля его на м´еньшие простые чис-
ла. Для реализации этой схемы . е. для того, чтобы все м´еньшие
67