输入作乘法的次数K
然后输入矩阵和向量的维度n
然后输入一个n维向量
然后输入K个n阶方阵
程序会给出该向量连续与此K个方阵做乘法后的结果
主要用了MPI_Gather, MPI_Allgather, MPI_Bcast, MPI_Scatter 等
注意printf在终端中打印的时机会很玄学 往往会在程序完全执行完毕之后才会打印
注意 本程序将矩阵的所有行划分成一些段,分别分配给各个进程 仍然没有处理进程数无法整除维度n的情况
typedef long long __int64;#include "mpi.h"#include#include using namespace std;int main(int argc, char* argv[]){ int my_rank=0, comm_sz=0, local_int=0, total_int=0; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); MPI_Comm_size(MPI_COMM_WORLD, &comm_sz); int n,zongci; int* x; if(my_rank==0){ scanf("%d%d",&zongci,&n); } MPI_Bcast(&zongci,1,MPI_INT,0,MPI_COMM_WORLD); MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD); x=new int[n]; if(my_rank==0){ for(int i=0;i