Windows 7系統下搭建MPI(並行計算)環境

Windows系統下搭建MPI環境

MPI的全稱是Message Passing Interface即標準消息傳遞界面,可以用於並行計算。MPI的具體實現一般採用MPICH。下面介紹如何在Windows XP系統下VC6中搭建MPI環境來編寫MPI程序。

一.準備工作

1.1   安裝MPI的SDK——MPICH2。

mpich2-1.4.1p1-win-ia32安裝程序的下載地址:

http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.4.1p1/mpich2-1.4.1p1-win-ia32.msi

本文以設置安裝在C:\Program Files\MPICH2目錄下爲例。

測試所安裝的MPICH2

測試前首先需要註冊一個用戶,具體操作如下:“開始”按鈕-->所有程序-->MPICH2-->wmpiregister.exe。輸入用戶名、密碼。有一點需要說明:該用戶名須爲有效的操作系統管理員賬戶,密碼對應爲系統登錄密碼。如圖所示:

接下來選擇開始-->所有程序-->MPICH2-->wmpiexec.exe;

選擇Application爲 c:\program files\mpich2\examples\cpi.exe (就是自帶的一個計算圓周率的例子程序)。在Number of processes的數量選擇2表示用二個進程來協同完成。選中“run in separate windw”選項。再點擊Excute就可以執行了。

然後在控制檯窗口下提示輸入number of intervals ,隨便輸入個大點的數字(500005000000)就可以看到求的的圓周率值。如下圖:

注意到上圖中的Show Comman中的字符串,可以在控制檯下輸入應該字符串得到類似結果,這裏就不再介紹了。

1.2 在VC6中添加MPICH2

先在VC6.0中加入mpi的include和lib。VC6.0程序菜單中“Tools” --> “Optains”-->“Directories”然後添加,如下圖所示:

 

 

 

 

二.第一個MPI程序

加入之後,新建Win32 Console Application工程,加入如下代碼:

  1. #include <mpi.h>  
  2. #include <stdlib.h>  
  3. #include <stdio.h>  
  4. #include <conio.h>  
  5.   
  6. #pragma comment (lib, "mpi.lib")   
  7.   
  8. int main(int argc, char* argv[])  
  9. {  
  10.     int myid,numprocs;  
  11.     int namelen;  
  12.     char processor_name[MPI_MAX_PROCESSOR_NAME];  
  13.       
  14.     MPI_Init(&argc, &argv);  
  15.   
  16.     //用MPI_Comm_rank 獲得進程的rank,該rank值爲0到p-1間的整數,相當於進程的ID  
  17.     MPI_Comm_rank(MPI_COMM_WORLD, &myid);  
  18.     //用MPI_Comm_size 獲得進程個數  int MPI_Comm_size(MPI_Comm comm, int *size);  
  19.     MPI_Comm_size(MPI_COMM_WORLD, &numprocs);  
  20.   
  21.     MPI_Get_processor_name(processor_name, &namelen);  
  22.       
  23.     printf("Hello World! by MoreWindows\nProcess %d of %d on %s\n", myid, numprocs, processor_name);  
  24.       
  25.     MPI_Finalize();  
  26.       
  27.     if (myid == 1)  
  28.     {  
  29.         printf("\nPress a key and exit.\n");  
  30.         getch();  
  31.     }  
  32.     return 0;  
  33. }  

編譯運行,第一個MPI程序就誕生了。下面是我電腦上的運行結果:

 

 

 

三.多臺電腦上協同運行MPI

只有多臺電腦集羣后才能更好的發揮並行計算的威力,當然由於MPI的幫助,這個工作將變得異常簡單。下面以二臺PC協同運行前面提到過的cpi.exe爲例。

3.1 多臺電腦運行MPI的條件

第一.參加並行計算的機器須至少註冊一個相同的賬戶,如兩臺PC上都註冊了一個 mpi 帳號。

第二.創建JOB目錄。每臺機器上須有一個路徑相同的目錄,用於存放待執行的JOB(即 exe 程序),如創建的目錄是 d:\MPI\,再將測試用的可執行文件複製到二臺PC的該目錄下。

 

3.2 聯機執行命令解釋

可以在控制檯下輸入"C:\Program Files\MPICH2\bin\mpiexec.exe" -help2來查看其所以參數,這裏不一一介紹了,重點介紹下用於聯機操作的命令:

聯機執行命令: -hosts n Node_1 Node_2  ...  Node_n  -noprompt ExePath

“-hosts”表示要聯機運行,n 表示有n臺機器參加運算,Node_1(及Node_2 ...)爲各機器的計算機名或IP。ExePath爲exe的文件路徑如d:\MPI\cpi.exe。

3.3 聯機效果示範

可以這個結果與上面單機運行的結果作個比較。

 

不難發現,由於MPI的幫助,使用多臺電腦來進行並行計算其實也是一件比較容易的事件。

 

 

轉載請標明出處,原文地址:http://blog.csdn.net/morewindows/article/details/6823436

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章