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

  • 大小: 5KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-03
  • 語言: 其他
  • 標(biāo)簽: MPI矩陣??

資源簡介

通過減少問題規(guī)模形式,做并行計算,求解矩陣相乘問題,mpi,MPI,思想是將第一個矩陣分塊,每個進程只計算矩陣的幾行,最終傳給主進程嗎、,主進程輸出結(jié)果

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include???
#define?N?8192?????????????????????//矩陣的階數(shù)??
#define?MASTER?0??????????????????//主進程號??
#define?FROM_MASTER?1?????????????//設(shè)置消息類型??
#define?FROM_WORKER?2?????????????//設(shè)置消息類型??
MPI_Status?status;??
void?main(int?argcchar?**argv)??
{??
????int?numtasks???????????????????//進程總數(shù)??
?????????taskid????????????????????//進程標(biāo)識??
?????????numworkers????????????????//從進程數(shù)目??
?????????source????????????????????//消息源??
?????????dest??????????????????????//消息目的地??
?????????nbytes??
?????????mtype?????????????????????//消息類型??
?????????rows???????????????????????
?????????averowextraoffset???????//從進程所分的行數(shù)??
?????????ijkt??
?????????count;??
???double?A[N][N]B[N][N];??
???long?long?C[N][N];??
???long?long?sumand?=?0;???????????//求的乘積矩陣的所有元素的和??
???double?starttimeendtime;??
???MPI_Init(&argc&argv);???//?初始化MPI環(huán)境??
???MPI_Comm_rank(MPI_COMM_WORLD&taskid);//標(biāo)識各個MPI進程?,告訴調(diào)用該函數(shù)進程的當(dāng)前進程號??
???MPI_Comm_size(MPI_COMM_WORLD&numtasks);//用來標(biāo)識相應(yīng)進程組中有多少個進程??
???numworkers?=?numtasks-1;?????//從進程數(shù)目??
??
/*?程序采用主從模式,以下為主進程程序?*/??
?????
if(taskid==MASTER)??
{??
????printf(“--------主進程開始對矩陣A、B初始化\n“);??
????//對A矩陣B矩陣?進行初始化賦值??
????for(i=0;i????{??
????????t?=?i?+?1;???
????????for(j=0;j????????{??
???????????A[i][j]=?t?++?;??
???????????B[i][j]=?1;??
????????}??
????}??
????printf(“--------主進程開始對從進程發(fā)送數(shù)據(jù)\n“);??
???starttime?=?MPI_Wtime();
?/*將數(shù)據(jù)(A矩陣B矩陣)發(fā)送到從進程*/??
????averow=N/numworkers;???//?每個從進程所得到的行數(shù)??
????extra=N%numworkers;??
????offset=0;??
????mtype=FROM_MASTER;??
????for(dest=1;dest<=numworkers;dest++)??
????{??
????????rows=(dest<=extra)???averow+1:averow;??
????????//發(fā)送標(biāo)識每個從進程開始尋找數(shù)據(jù)矩陣的偏移地址??
????????MPI_Send(&offset1MPI_INTdestmtypeMPI_COMM_WORLD);??
????????//發(fā)送每個從進程需要計算的行數(shù)??
????????MPI_Send(&rows1MPI_INTdestmtypeMPI_COMM_WORLD);??
????????//發(fā)送每個從進程?count=rows*N?比特流偏移量??
????????count=rows*N;??
????????//發(fā)送?矩陣?A??
????????MPI_Send(&A[offset][0]countMPI_DOUBLEdestmtypeMPI_COMM_WORLD);

評論

共有 條評論