用MPI设计实现高斯算法,求1+2+3……+100的和。
时间: 2023-10-24 21:23:55 浏览: 44
下面是使用 MPI 实现高斯算法的代码,可以计算 1 到 100 的和:
```c
#include <stdio.h>
#include <mpi.h>
int main(int argc, char* argv[]) {
int rank, size;
int sum = 0;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
int n = 100;
int local_n = n / size;
int local_sum = 0;
int start = rank * local_n + 1;
int end = (rank + 1) * local_n;
if (rank == size - 1) {
end = n;
}
for (int i = start; i <= end; i++) {
local_sum += i;
}
MPI_Reduce(&local_sum, &sum, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
if (rank == 0) {
printf("The sum is %d\n", sum);
}
MPI_Finalize();
return 0;
}
```
在这个程序中,每个进程都计算从 `start` 到 `end` 的和,并使用 `MPI_Reduce` 函数将局部和累加到进程 0 中。最后,进程 0 打印出结果。