MPI рассеивают и собирают несколько раз - PullRequest
0 голосов
/ 04 сентября 2018

У меня проблема с разбросом и разбросом. Допустим, у меня есть одна таблица [tableSize]. В этой таблице я хочу сделать некоторые вычисления для каждых 25 элементов. Я хочу разделить его между всеми процессами, которые у меня есть в моем MPI. Я пытаюсь что-то вроде этого

MPI_Scatter(table, 25, MPI_INT, tmpTable, 25, MPI_INT, 0, MPI_COMM_WORLD);
tmpTable[12] = doTheCalculation(tmpTable);
MPI_Gather(tmpTable, 25, MPI_INT, table, 25, MPI_INT, 0, MPI_COMM_WORLD);

Но это работает, только если это 25 * число процессов = tableSize правильно. Как мне поступить, если я хотел бы, чтобы tableSize составлял 125, но выполнялись только 3 процесса? Моей целью было бы, чтобы процессы 0 и 1 учитывались дважды (процесс 0, элементы 1-25, а затем 75-100 и процесс 1 для подсчета 25-50 и 100-125). Разве можно собрать и собрать? Должен ли я посмотреть на что-то еще? Заранее спасибо

...