安裝和配置MPI
- mpi的下載路徑:https://www.microsoft.com/en-us/download/details.aspx?id=57467,兩個文件都要安裝(SDK和Bin),並記住路徑(注意:由於MPI的bin在安裝時自動添加了環境變量,故此時應該重啓Windows使其生效)。
- 在vs工程的項目屬性頁配置MPI(以我的項目爲例,配置x64平臺的Debug和Release):
- 選擇所有配置,x64平臺
- “VC++目錄”=>包含目錄添加MPI頭文件所在的路徑:C:\Program Files (x86)\Microsoft SDKs\MPI\Include\x64和C:\Program Files (x86)\Microsoft SDKs\MPI\Include;
- “VC++目錄”=>庫目錄添加MPI鏈接庫所在的目錄:C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64;
- 鏈接器=>輸入=>附加依賴項添加msmpi.lib;
- C/C++ => 預處理器=>預處理器定義添加MPICH_SKIP_MPICXX;
- C/C++ => 代碼生成=>運行庫添加:
- debug模式下添加多線程調試 (/MTd)
- release模式下添加多線程 (/MT)
使用MPI
MPI程序的測試代碼如下:
#include <mpi.h>
int main(int argc, char*argv[])
{
int myid, numprocs, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
//用MPI_Comm_rank 獲得進程的rank,該rank值爲0到p-1間的整數,相當於進程的ID
MPI_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();
return 0;
}
編譯成功後用cmd進入到該可執行文件所在路徑,運行如下命令:
# 5爲啓動的並行進程數,test_mpi.exe爲編寫的mpi程序
mpiexec -n 5 test_mpi.exe
MPI程序主要利用其同步和互斥API,具體用法還需進一步探索。