今天老师给了个貌似是32还是64核的集群,于是就忍不住登陆进去体验了一把,顺便写了个MPI程序跑了一下。由于是刚接触MPI,所以代码很简单,就是一个求π的简单例子。代码如下:
/*date:2014-9-10
*author: ysc
*email:3100105066@zju.edu.cn
*description: my first MPI program
*/
#include <stdio.h>
#include "mpi.h"
int main(int argc, char* argv[])
{
int i,rank,size;
long N;
double w,PI,temp,sum;
N = 10000000;
w = 1.0/N;sum = 0.0;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
for(i=rank;i<N;i+=size)
{
temp = i*w;
sum += 4.0/(1.0 + temp*temp);
}
MPI_Reduce(&sum,&PI,1,MPI_DOUBLE,MPI_SUM,0,MPI_COMM_WORLD);
if(rank == 0)
printf("PI is %0.7f\n",PI*w);
MPI_Finalize();
return 0;
}
代码中的API我也不多解释了,都是非常简单的。不过要注意加mpi.h到头文件里去。代码写完就是要编译了。这里的编译需要用到mpicc&