📄 李天琦论文源程序[1].c.c
字号:
#include "mpi.h"#include <stdio.h>#define max 64#define time 4#define project 6int main(argc,argv)int argc;char * argv[];{ int rank,size,root; float *rbuf,*sbuf; float x[project][time]={ {0.6874,0.3319,0.4010,0.6104},/*the value of the binary*/ {0.4262,0.6037,0.6821,0.6729}, {0.3412,0.4269,0.2822,0.1666}, {0.7302,0.3998,0.3978,0.4415}, {0.8809,0.7118,0.2913,0.3678}, {0.0892,0.2760,0.7326,0.1140}, }; float b[max][project]; /* the percent */ float a[project]={0,0,0,0,0,0};/* */ float buf[time]={0,0,0,0};/**/ int i,j; /* count */ int bn,tn; int flag;/*the flag of if the result is the right one*/ int gsize=time; rbuf=&buf[0]; MPI_Init(&argc,&argv); MPI_Comm_rank(MPI_COMM_WORLD,&rank); MPI_Comm_size(MPI_COMM_WORLD,&size); for(i=0;i<max;i++) { for(j=0;j<project;j++) {b[i][j]=0;} } b[0][0]=0.24;b[0][1]=0.29,b[0][2]=0.05; b[0][3]=0.19,b[0][4]=0.14,b[0][5]=0.09; sbuf=(float *)malloc(sizeof(float)); rbuf=(float *)malloc(time*sizeof(float)); bn=-1; do{ bn++; flag=0; for(i=0;i<project;i++) a[i]=0; for(i=0;i<time;i++) buf[i]=0; j=rank; for(i=0;i<project;i++) buf[j]=buf[j]+(b[bn][i]*x[i][j]); *sbuf=buf[j]; MPI_Barrier(MPI_COMM_WORLD); MPI_Allgather(sbuf,1,MPI_FLOAT,rbuf,1,MPI_FLOAT,MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); for(i=0;i<time;i++) buf[i]=*(rbuf+i); for(j=0;j<project;j++) { for(i=0;i<time;i++) a[j]=a[j]+(x[j][i]/buf[i]); a[j]=a[j]/time; } for(i=0;i<project;i++) { b[bn+1][i]=b[bn][i]*a[i]; if((b[bn+1][i]-b[bn][i])<0.01) flag++; } }while(flag!=project); if(rank==0) {printf("\n==================="); for(i=0;i<project;i++) printf("\n%f",b[bn+1][i]); } MPI_Finalize(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -