MPI - считая максимум из столбца матрицы - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть последовательный код для поиска максимального значения в столбцах матрицы.Поскольку эта матрица может быть даже 5000 x 5000, я думаю об ускорении в MPI.Сейчас я не знаю, как этого добиться, но я искал функции MPI_Scatter для распределения элементов по столбцам (возможно, блочное сопоставление) и MPI_Gather для получения максимальных значений из всех процессов (в моем случае максимум 3 процесса), а затем сравнивал их... Как вы думаете, это могло бы принести некоторую выгоду за меньшее время вычислений?Если да, может ли кто-нибудь дать мне шанс?

1 Ответ

3 голосов
/ 13 апреля 2011

Является ли все, что вы хотите сделать, узнать максимальную запись в матрице (или в пределах части матрицы)?

Если это так, самый простой способ для вас, вероятно, разделить матрицу на различные процессы.найдите максимальное значение в части, которой назначен каждый процесс, а затем сравните их, используя MPI_Allreduce, который может отправить максимальное значение переменной, имеющей разные значения в каждом процессе, всем процессам.

Неважно, имеете ли вы дело с целой матрицей или просто столбцом, этот метод, конечно, всегда можно применить.Вам просто нужно подумать о хорошем способе разделения области на различные процессы

Конечно, это ускорит ваши вычисления только с определенного размера матрицы и выше.Я предполагаю, что если вы имеете дело с матрицей 10 x 10 и хотите разделить ее на 3 процесса, накладные расходы для MPI больше, чем выигрыш от распараллеливания.:)

...