1、Mac下OpenMPI的安裝
所用電腦:MacBook Pro,OSX 10.11.2
- 從openmpi官網下載相應版本:OpenMPI 1.8下載
- 解壓文件
雙擊解壓或者tar zxvf openmpi***.tar.gz
- 指定安裝路徑
進入解壓的目錄,指定要安裝的路徑:./condigure --prefix=/usr/local
- 編譯mpi源碼
make all
- sudo make安裝
sudo make install
- 檢查是否加入環境變量
echo $PATH 查看MPI所在的/usr/local/bin是否在環境變量PATH中
- 編譯examples源碼並運行
首先進入examples文件夾,該文件夾下有一些MPI的簡單源碼例子
編譯hello world的C程序,mpicc hello_c.c -o test
或者編譯hello world的C++程序,mpicxx hello_cxx.cc -o test
這樣生成名叫test的可執行程序,而後使用mpirun執行:mpirun -np 2 ./test //np指定使用幾個進程
2、MPI函數簡單說明
下面以examples裏的hello_c.c爲例說明MPI經常使用函數數組
int myid, numprocess;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myid);
MPI_Comm_size(MPI_COMM_WORLD, &numprocess);
MPI_Get_processor_name(processor_name, &namelen);
fprintf(stderr, "To you : Process %d of %d on %s\n", myid, numprocess, processor_name);
MPI_Finalize();
return 0;
- 初始化 MPI_Init(int argc, char **argv)
參數:argc變量個數,argv變量數組
- 獲取當前進程標識 MPI_Comm_rank(MPI_Comm comm, int rank)
參數:comm該進程所在的通訊域句柄,rank該進程在通訊域中的標識號
- 獲取通訊域進程總數 MPI_Comm_size(MPI_Comm comm,int size)
參數:comm該進程所在的通訊域句柄,size通訊域comm中的進程總數
- 獲取本線程機器名 MPI_Get_processor_name(char *name,int resultlen)
參數:name爲返回的機器名字符,resultlen爲機器名長度
結束函數 MPI_Finalize()函數
另外,MPI有預約義的數據類型與C語言中的對應關係以下:
MPI數據類型 對應C數據類型
MPI_CHAR signed char
MPI_SHORT signed short int
MPI_INT signed int
MPI_LONG signed long int
MPI_UNSIGNED_CHAR unsigned char
MPI_UNSIGNED_SHORT unsigned short int
MPI_UNSIGNED unsigned int
MPI_UNSIGNED_LONG unsigned long int
MPI_FLOAT float
MPI_DOUBLE double
MPI_LONG_DOUBLE long double
MPI_BYTE 無相應數據類型
MPI_PACKED 無相應數據類型
MPI_LONG_LONG_INT long long int線程