实验一 网络通讯带宽
1.实验目的和要求
利用MPI获取网络通讯带宽
2.实验环境
安装了docker的PC
3.实验内容及实验数据记录
利用MPI获取网络通讯带宽
4.算法描述及实验步骤
利用两个结点运行mpi程序,先设置一个栅栏MPI_Barrier。Rank=0的机子利用MPI_Send向rank=1的机子发送数据,rank=1的机子利用MPI_Rece接收数据。带宽=send_count / delta_t
5.调试过程
**在命令行中无法运行得到带宽,发现忘记声明总时间t,声明后程序可正常运行**
6. 实验结果
7.代码
#include<stdio.h>
#include <stdlib.h>
#include"mpi.h"
//#include "test.h"
int main(int argc, char **argv) {
int rank;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
int *x;
int cnt =512,M=1024*1024;
double t1,t2;
MPI_Status status;
// int msgtag=99;
x=(int *)malloc(sizeof(int)*cnt);
MPI_Barrier(MPI_COMM_WORLD);
t1=MPI_Wtime();
if( rank==0) {
for(int i=0;i<M;++i){
MPI_Send(x,cnt,MPI_INT,1,99,MPI_COMM_WORLD);
}
} else if(rank==1) {
for(int i=0;i<M;++i){
MPI_Recv(x,cnt,MPI_INT,0,99,MPI_COMM_WORLD,&status);
}
}
MPI_Barrier(MPI_COMM_WORLD);
t2=MPI_Wtime();
int size;
MPI_Type_size(MPI_INT,&size);
if(rank==0){
printf(" Bandwidth is %lf MbpS.\n",(cnt*8*size)/((t2-t1)*1024*1024)*M);
}
MPI_Finalize();
return 0;
}