У меня есть количество процессоров и один массив, и каждый процессор выполняет свою работу, одномерный массив, например:
- dens_process_array для процесса 1:
| Process1 | 0000000000000 |
- dens_process_array для процесса 2:
| 000000 | Process2 | 000000 |
каждый процесс заполняет свой интервал, тогда я хочу, чтобы у всех процессоров были другие результаты в одном массиве.
- Процесс 1 => dens_process_array | process1 | process2 | ..... | processN |
- Процесс 2 ... Процесс N
(как и all2all bcast) Поэтому каждый процесс вызывает эту функцию:
void doCommunication(int id, int numprocs, int start_point, int end_point) {
int size_of_length = end_point - start_point + 1;
MPI_Scatter(dense_process_array+start_point, size_of_length, MPI_DOUBLE, dense _process_array +start_point, size_of_length, MPI_DOUBLE, id, MPI_COMM_WORLD;
}
Но, в конце концов, когда я посмотрел свой массив из какого-либо процесса, я увидел, что он не может получить результаты других процессов, можете ли вы что-нибудь предложить?
нет: я новичок в MPI, и в основном я хочу, чтобы все2 всех bcast.