91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-09-22
  • 語言: 其他
  • 標簽: 矩陣mpi??

資源簡介

本程序利用mpi實現矩陣并行相乘。你需要安裝mpich并配置好環境。編譯:mpicc Matrixmulti.c -o Matrixmulti 運行:mpirun -np 5 ./Matrixmulti ;5為進程數,可以更換

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?


#define?blockstart(Mijrows_per_blkcols_per_blkstride)\(M+(i)*(rows_per_blk))*(stride)+(j)*(cols_per_blk)

int?main(int?argcchar?*argv[])
????{int?SNSPSM;???
?????SN=10000;SP=10100;SM=10200;??
?????double?**SA**SB**SC;
?????int?dimNdimPdimM;
?????int?addNaddPaddM;
?????int?dimNbdimPbdimMb;
?????int?ijk;??
?????double?*sumC;
?????double?**AA**BB**CC;
?????double?*A*B*C;
?????double?*Abuffer*Bbuffer;
?????FILE?*fp;
?????fp=fopen(“4A10000-10100.txt““rb“);
??????if(fp==NULL)
?{printf(“file?can?not?open!\n“);??exit(0);}
??????SA=(double**)malloc(SN*sizeof(double*));
?????for(i=0;i????????{SA[i]=(double*)malloc(SP*sizeof(double));}

?????for(i=0;i ?for(j=0;j ?fscanf(fp“%lf“&SA[i][j]);}}
????//?for(i=0;i????// ?for(j=0;j????// ??printf(“%lf?“SA[i][j]);}
????// ???printf(“\n“);}
?????fclose(fp);

???????????
????SB=(double**)malloc(SP*sizeof(double*));
????for(i=0;i????????{SB[i]=(double*)malloc(SM*sizeof(double));}

?????fp=fopen(“4B10100-10200.txt““rb“);
?????if(fp==NULL)
?{printf(“file?can?not?open!\n“);?exit(0);}
?????for(i=0;i ?for(j=0;j????????????fscanf(fp“%lf“&SB[i][j]);}}
???//?for(i=0;i???//? ?for(j=0;j???// ?????printf(“%lf?“SB[i][j]);}
???// ?????printf(“\n“);}
?????fclose(fp);
??????
?????int?numProcsmyIDmyID_imyID_jNB;
?????double?startend;
?????MPI_Status?status;
?????MPI_Init(&argc&argv);
?????MPI_Comm_size(MPI_COMM_WORLD&numProcs);
?????MPI_Comm_rank(MPI_COMM_WORLD&myID);?????
?????NB=(int)sqrt((double)numProcs);
?????start=MPI_Wtime();
?????if(SP%NB==0)
???????{dimPb=SP/NB;addP=0;}
?????else?{dimPb=SP/NB+1;addP=NB*dimPb-SP;}
?????if(SN%NB==0)
???????{dimNb=SN/NB;addN=0;}
?????else?{dimNb=SN/NB+1;addN=NB*dimNb-SN;}
??????if(SM%NB==0)
????????{dimMb=SM/NB;addM=0;}
?????else?{dimMb=SM/NB+1;addM=NB*dimMb-SM;}
????dimN=SN+addN;dimM=SM+addM;dimP=SP+addP;
???//?printf(“%d?%d?%d\n“dimNdimPdimM);
????AA=(double**)malloc(dimN*sizeof(double*));
????for(i=0;i????????{AA[i]=(double*)malloc(dimP*sizeof(double));}
????for(i=0;i????????for(j=0;j????????for(k=SP;k????for(i=SN;i????????for(j=0;j????????????AA[i][j]=0;}
?????free(SA);?
????/*?if(myID==0){
?????for(i=0;i????????for(j=0;j
????BB=(double**)malloc(dimP*sizeof(double*));
????for(i=0;i????????{BB[i]=(double*)malloc(dimM*sizeof(double));}
????for(i=0;i???????for(j=0;j?????????for(k=SM;k??????????}
????free(SB);
????for(i=SP;i??????for(j=0;j??/*?if(myID==0){
????for(i=0;i???????printf(“\n“);
???????for(j=0;j??????????printf(“%f?“BB[i][j]);}}*/
???if(myID==0){
???CC=(

評論

共有 條評論

相關資源