编写一个矩阵向量乘法的MPI编程代码
时间: 2023-03-08 14:58:51 浏览: 86
答:下面是一个用MPI编写的矩阵向量乘法的示例代码:#include <stdio.h>
#include <mpi.h>int main(int argc, char *argv[])
{
int rank, size;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size); int n = 4;
int a[n], b[n], c[n]; // 初始化矩阵
if (rank == 0){
for (int i=0; i<n; i++){
a[i] = i;
b[i] = i;
}
} // 广播矩阵
MPI_Bcast(a, n, MPI_INT, 0, MPI_COMM_WORLD);
MPI_Bcast(b, n, MPI_INT, 0, MPI_COMM_WORLD); // 计算结果
int local_row = n / size;
int start_row = rank * local_row;
int end_row = start_row + local_row;
for (int i=start_row; i<end_row; i++){
c[i] = 0;
for (int j=0; j<n; j++){
c[i] += a[i] * b[j];
}
} // 将计算结果收集起来
MPI_Gather(c+start_row, local_row, MPI_INT, c, local_row, MPI_INT, 0, MPI_COMM_WORLD);
// 打印结果
if (rank == 0){
for (int i=0; i<n; i++){
printf("%d ", c[i]);
}
printf("\n");
} MPI_Finalize();
return 0;
}