Теория распараллеливания и синхронизация. Демьянович Ю.К - 75 стр.

UptoLike

причинам:
1) их легко конструировать;
2) в ряде случаев легко поддерживать неделимость инструк-
ций;
3) они удобны для решения больших задач.
Недостатки таких вычислительных систем:
1) SIMD-машины в определенном смысле специализирован-
ные каждый момент времени рашется одна задача);
2) трудно обеспечить высокую загрузку частности, в приве-
денном примере все м´еньшее число процессоров обновляет значе-
ния sum[i], а остальные не делают полезной работы); часто загрузка
таких ВС не превышает 20%.
§17 Умножение матриц
При перемножении двух квадратных матриц используем прием, на-
зываемый вычислениями с портфелем задач. Обычно такой прием
применяют по отношению к совокупности независимых задач или
независимых подзадач, возникающих в исходной задаче. Освобо-
дившийся вычислительный модуль параллельной вычислительной
системы “подхватывает” задачу из “портфеля” и начинает ее реше-
ние. Благодаря таком у подходу, нагрузка хорошо распределяется
между вычислительными модулями (получается хорошая баланси-
ровка загрузки).
Пусть матрицу a[n, n] следует умножить на матрицу b[n, n], а
результат получить в массиве c[n, n].
Будем считать, что имеется n процессоров, и что матрицы a и
b хранятся по столбцам частности, это предположение обычно
справедливо при использовании языка Фортран). В данном случае
схе ма перемножения матриц с помощью пор тфеля задач принимает
вид:
int nextRow = 0; # портфель задач
double a[n, n], b[n, n], c[n, n];
process Worker[w = 1 toP] {
int row;
double sum; # используется для промежуточных вычислений
76