歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux CentOS下安裝MPICH以及運行第一個並行程序

一:Linux下安裝與配置MPICH

為了在Linux下運行我們的並行程序,我們需要安裝MPICH,現在的版本是MPICH2,下載地址:mpich2-1.5.tar.gz  [文件大小:21.77 MB] 下載: 

FTP地址:ftp://www.linuxidc.com

用戶名:www.linuxidc.com

密碼:www.muu.cc

在 2012年LinuxIDC.com\10月\Linux CentOS下安裝MPICH以及運行第一個並行程序

下載方法見 http://www.linuxidc.net/thread-1187-1-1.html

下載完成後,用SSH登錄Linux系統,在這裡我用的root的登錄身份。在/home 下創建一個目錄,用來表示某個用戶的文件 mkdir  houqingdong  , 將tar.gz(注意,這裡是tar.gz後綴的壓縮文件,不一樣的壓縮文件在Linux下解壓縮時所用的命令也不一樣),還要注意一點,就是解壓縮文件的過程一定要在Linux系統下完成,(起初的時候我是在Windows下解壓完成的,將解壓完成後的文件夾直接上傳到Linux下,在安裝執行./configure時會出現錯誤!!)。

現在我們解壓縮文件:tar -zxv -f mpich2-1.5.tar.gz(這裡是你自己的壓縮文件) ,然後會出現具體的解壓縮過程,解壓完畢後,在/home 下會出現mpich2-1.5這個文件夾

進入該文件夾:cd mpich2-1.5  ,進入之後,接下來我們要做的工作就是要配置它的安裝目錄,在這之前我們先在houqingdong文件夾下創建我們存放MPICH程序的文件夾,假如該文件夾為mpiexe :  cd /home/houqingdong    mkdir  mpiexe  ,創建完成後,就執行  ./configure -prefix=/home/houqingdong/mpiexe  就是配置我們的安裝目錄,這裡同樣會等待一段時間,等成功執行後,在mpich2-1.5下會生成mkfile文件,這裡我們執行的時候有時會出現這樣的提示:-bash: ./configure: Permission denied 這句話是提醒我們權限不夠,仔細看一下會發現configure沒有x(執行)權限,這裡我們要執行: chmod +x ./configure 即可,這句指令的意思是為configure增加x的權限

再一次執行:./configure -prefix=/home/houqingdong/mpiexe  同樣會等一段時間,最終執行完後不會報錯,才能繼續向下執行,如果發生某些錯誤,請參考:http://www.linuxidc.com/Linux/2008-12/17595.htm

上一步執行完我們接著執行: mkfile

執行完mkfile, 然後開始實際的安裝 執行  mkfile install,就會看到程序正在安裝,安裝完成後進入/home/houqingdong/mpiexe可以看到多出了很多像bin  include  lib樣的文件。

先在將我的第一個並行文件上傳到/home/houqingdong/目錄下:

程序為:

  1. #include "mpi.h" 
  2. #include <stdio.h> 
  3.  
  4. int main (int argc, char *argv[]) { 
  5.    int i; 
  6.    int id;               /* Process rank */ 
  7.    int p;                /* Number of processes */ 
  8.    void check_circuit (int, int); 
  9.  
  10.    MPI_Init (&argc, &argv); 
  11.    MPI_Comm_rank (MPI_COMM_WORLD, &id); 
  12.    MPI_Comm_size (MPI_COMM_WORLD, &p); 
  13.  
  14.    for (i = id; i < 65536; i += p) 
  15.       check_circuit (id, i); 
  16.  
  17.    printf ("Process %d is done\n", id); 
  18.    fflush (stdout); 
  19.    MPI_Finalize(); 
  20.    return 0; 
  21.  
  22.  
  23. /* Return 1 if 'i'th bit of 'n' is 1; 0 otherwise */ 
  24. #define EXTRACT_BIT(n,i) ((n&(1<<i))?1:0) 
  25.  
  26. void check_circuit (int id, int z) { 
  27.    int v[16];        /* Each element is a bit of z */ 
  28.    int i; 
  29.  
  30.    for (i = 0; i < 16; i++) v[i] = EXTRACT_BIT(z,i); 
  31.    if ((v[0] || v[1]) && (!v[1] || !v[3]) && (v[2] || v[3]) 
  32.       && (!v[3] || !v[4]) && (v[4] || !v[5]) 
  33.       && (v[5] || !v[6]) && (v[5] || v[6]) 
  34.       && (v[6] || !v[15]) && (v[7] || !v[8]) 
  35.       && (!v[7] || !v[13]) && (v[8] || v[9]) 
  36.       && (v[8] || !v[9]) && (!v[9] || !v[10]) 
  37.       && (v[9] || v[11]) && (v[10] || v[11]) 
  38.       && (v[12] || v[13]) && (v[13] || !v[14]) 
  39.       && (v[14] || v[15])) { 
  40.       printf ("%d) %d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d\n", id, 
  41.          v[0],v[1],v[2],v[3],v[4],v[5],v[6],v[7],v[8],v[9], 
  42.          v[10],v[11],v[12],v[13],v[14],v[15]); 
  43.       fflush (stdout); 
  44.    } 

如果我們現在想編譯文件: 在/home/houqingdong下執行:  mpicc -o hello  hello.c  這時候會提醒:-bash:mpicc  command not found 這是因為我們還沒有配置路徑

在命令行下輸入: export PATH=/home/houqingdong/mpiexe/bin:$PATH  注意:這裡僅僅是暫時的設置路徑,在重啟後效果會消失,如果想一勞永逸的配置,請google查詢

看一下我們配置是否成功可以執行一下  echo $PATH 看一下輸出結果中是否有我們的路徑

我們再來編譯一次: mpicc -o hello hello.c

然後在/home/houqingdong 目錄下會生成一個hello的可執行文件,然後運行 mpirun -n 2 ./hello 即可看到輸出結果,這裡我們采用2個處理器來執行。

輸出結果為:

嘿嘿 。。。 大功告成!!!!

Copyright © Linux教程網 All Rights Reserved