MPI編程環(huán)境配置與示例_第1頁
MPI編程環(huán)境配置與示例_第2頁
MPI編程環(huán)境配置與示例_第3頁
MPI編程環(huán)境配置與示例_第4頁
MPI編程環(huán)境配置與示例_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、.目錄一 .系統(tǒng)安裝21.下載地址22.安裝步驟23.Visual Stdio設置2二 .實驗程序31.簡單的 MPI 編程示例32.消息傳遞 MPI 編程示例 143.消息傳遞 MPI 編程示例 254.Monte Carlo 方法計算圓周率75.計算積分9三 .心得體會10.一. 系統(tǒng)安裝1. 下載地址FTP匿名登陸 ,在 pub/mpi/nt文件夾中2. 安裝步驟1) 在安裝有 MPI 的計算機上要建立一個有管理員權限的賬戶, 不可以沒有密碼;2) 雙擊 exe 文件,按默認設置安裝 MPI;3) 注冊 MPI 賬戶,調用 MPIRegister.exe,用

2、戶名和密碼即為第一步中的賬戶。3. Visual Stdio設置為避免每新建一個項目都要設置一次,可以對它進行通用設置。打 開 視 圖 - 其 他 窗 口 - 屬 性 管 理 器 , 點 擊 Debug|Win32 目 錄 下 的Microsoft.Cpp.Win32.user,在 VC+目錄下的包含目錄中添加MPICH的 Include路徑,庫目錄中添加 MPICH的 Lib 路徑;在鏈接器 - 輸入目錄下的附加依賴項中添加 mpich.lib 、mpe.lib 、mped.lib 、mpichd.lib 。.二. 實驗程序1. 簡單的 MPI 編程示例1) 源代碼#include #inc

3、lude int main(int argc, char* argv)int num, rk;MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &num); MPI_Comm_rank(MPI_COMM_WORLD, &rk); printf(Hello world from Process %d of %dn, rk, num); MPI_Finalize();return 0;2) 運行截圖.2. 消息傳遞 MPI 編程示例 11) 源代碼#include #include int main(int argc, char* argv)

4、int myid, numprocs,source; MPI_Status status;char messages100; MPI_Init(&argc, &argv);MPI_Comm_size(MPI_COMM_WORLD, &numprocs); MPI_Comm_rank(MPI_COMM_WORLD, &myid);if (myid != 0)strcpy(messages, Hello World!);MPI_Send(messages, strlen(messages) + 1, MPI_CHAR, 0, 99, MPI_COMM_WORLD);elsefor (source

5、= 1; source numprocs; source+).MPI_Recv(messages, 100, MPI_CHAR, source, 99, MPI_COMM_WORLD,&status);printf(I am process %d I recv string %s from process %dn, myid, messages, source);MPI_Finalize();return 0;2) 運行截圖3. 消息傳遞 MPI 編程示例 21) 源代碼#include #include #include #define N 1002int main(int argc, ch

6、ar* argv).int myid, numprocs, C = 0;doubledataN, SqrtSum=0.0;_double d;for (int i = 0; i N; i+)datai = i;MPI_Status status;MPI_Init(&argc, &argv);_MPI_Comm_rank(MPI_COMM_WORLD, &myid);MPI_Comm_size(MPI_COMM_WORLD, &numprocs);-numprocs;if (myid = 0)for (int i = 0; i N; +i)MPI_Send(&datai, 1, MPI_DOUB

7、LE, i%numprocs + 1, 1, MPI_COMM_WORLD);for (int source = 1; source = numprocs; +source) MPI_Recv(&d, 1, MPI_DOUBLE, source, 99,MPI_COMM_WORLD, &status);SqrtSum += d;elsefor (int i = myid; i N; i = i + numprocs)MPI_Recv(&d, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD,&status);SqrtSum += sqrt(d);+C;MPI_Send(&

8、SqrtSum, 1, MPI_DOUBLE, 0, 99, MPI_COMM_WORLD);printf(I am process %d. I recv total %d from process 0, and SqrtSum=%f.n, myid, C, SqrtSum);_MPI_Finalize();_return 0;.2) 運行截圖4. Monte Carlo方法計算圓周率1) 源代碼#include mpi.h #include #include int main(int argc, char *argv)int myid, numprocs; int source;long c

9、ount = 1000000; MPI_Status status; MPI_Init(&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &myid); MPI_Comm_size(MPI_COMM_WORLD, &numprocs); srand(myid);double y, x, pi = 0.0, n = count; long m = 0, m1 = 0, i = 0, p = 0; for (i = 0; icount; i+).x = (double)rand() / (double)RAND_MAX;y = (double)rand() /

10、 (double)RAND_MAX;if (x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5)0.25)+m;pi = 4.0*m / n;printf(Process %d of % pi = %fn, myid, numprocs, pi);if (myid != 0)MPI_Send(&m, 1, MPI_DOUBLE, 0, 1, MPI_COMM_WORLD);elsep = m;for (source = 1; sourcenumprocs; source+)MPI_Recv(&m1, 1, MPI_DOUBLE, source, 1,MPI_COMM

11、_WORLD, &status);p = p + m1;printf(pi = %fn, 4.0*p / (n*numprocs);MPI_Finalize();return 0;2) 運行截圖.5. 計算積分1) 源代碼#define N 100000000 #define a 0 #define b 10 #include #include #include #include mpi.hint main(int argc, char* argv)int myid, numprocs; int i; _double local = 0.0, dx = (double)b - (double)

12、a) / (double)N; double inte, x;MPI_Init(&argc, &argv);_MPI_Comm_rank(MPI_COMM_WORLD, &myid);_ MPI_Comm_size(MPI_COMM_WORLD, &numprocs); for (i = myid; iN; i = i + numprocs).x = a + i*dx + dx / 2;local += x*x*dx;MPI_Reduce(&local, &inte, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);_if (myid = 0)printf(The integal of x*x in region %d,%d =%16.15fn, a, b,inte);M

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論