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