MPI学習ノート(1)

1363 ワード

今日はMPIを書く勉強を始めました。
1)mpi環境の設定
2)小セグメントのMPIコード試験を持ってきました。http://blog.csdn.net/zhuliting/article/details/5868425
#include 
#include 
#include "mpi.h"
int main(int argc,char *argv[])
{
 	int i,j,k,n,myid,numprocs,namelen;
 	char processor_name[MPI_MAX_PROCESSOR_NAME];
 	double startwtime=0.0,endwtime;
 	float mysum, sum;
 	MPI_Init(&argc,&argv);
	 MPI_Comm_rank(MPI_COMM_WORLD,&myid);
 	MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
 	MPI_Get_processor_name(processor_name,&namelen);
	n = 1;
    for(j = 1; j <= 1000; ++j) {
     	mysum = 0;
        for(k = myid + 1; k <= 16; k += numprocs) {
  			mysum += k;
     	}
        MPI_Reduce(&mysum,&sum,1,MPI_FLOAT,MPI_SUM,0,MPI_COMM_WORLD);
 	}
 	for(i = 1; i <= 14; ++i) {
 		 n = n << 2;
         startwtime=MPI_Wtime();
         for(j = 1; j <= 100; ++j) {
   			mysum = 0;
  			for(k = myid + 1; k <= n; k += numprocs) {
    			mysum += k;
   			}
            MPI_Reduce(&mysum,&sum,1,MPI_FLOAT,MPI_SUM,0,MPI_COMM_WORLD);
 		 }
		 if (myid == 0) {
			 fprintf(stderr,"4^%d: total 100 times cost:%lf s and result is %f/n", i
				, (MPI_Wtime() - startwtime), sum);
          }
 	}
 	MPI_Finalize();
 	return 0;
}
3)コンパイル運転
コンパイル:mpicxx sum.cpp-o sum
実行:mpirun-np 4./sum