【发布时间】:2015-12-06 03:30:29
【问题描述】:
我试图让每个进程计算一个总和,然后将总和发送回根进程。
但是,printf("\nSUMS[%d] = %d",i,sums[i]); 行打印的总和与 printf("\nI am process %d and my sum is %d", my_rank, sum); 打印的总和不同
只有root的和与sums[0]相同。
有人能解释为什么会这样吗?如果这个问题有一个明显的答案,但我是 MPI 的新手,请问一下。
sum = 0;
for ( i=0 ; i < np; i++)
sum += y[i];
printf("\nI am process %d and my sum is %d", my_rank, sum);
if (!my_rank)
sums = (int *)malloc(sizeof(int) * comm_size);
MPI_Gather(&sum, 1, MPI_INT, sums, comm_size, MPI_INT, 0, MPI_COMM_WORLD);
if (!my_rank)
for ( i = 0; i < comm_size; i++)
printf("\nSUMS[%d] = %d",i,sums[i]);
【问题讨论】:
标签: c parallel-processing mpi