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

來源:互聯網
上載者:User

 

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 ,隨便輸入個大點的數字(50000,5000000)就可以看到求的的圓周率值。如:

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

1.2 在VC6中添加MPICH2

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

 

 

 

 

二.第一個MPI程式

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

#include <mpi.h>#include <stdlib.h>#include <stdio.h>#include <conio.h>#pragma comment (lib, "mpi.lib") int main(int argc, char* argv[]){int myid,numprocs;int namelen;char processor_name[MPI_MAX_PROCESSOR_NAME];MPI_Init(&argc, &argv);//用MPI_Comm_rank 獲得進程的rank,該rank值為0到p-1間的整數,相當於進程的IDMPI_Comm_rank(MPI_COMM_WORLD, &myid);//用MPI_Comm_size 獲得進程個數  int MPI_Comm_size(MPI_Comm comm, int *size);MPI_Comm_size(MPI_COMM_WORLD, &numprocs);MPI_Get_processor_name(processor_name, &namelen);printf("Hello World! by MoreWindows\nProcess %d of %d on %s\n", myid, numprocs, processor_name);MPI_Finalize();        if (myid == 1)    {        printf("\nPress a key and exit.\n");        getch();    }return 0;}

編譯運行,第一個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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.