linux安裝mpich

爲了做課設,不得不安裝個mpich,找了好久方法。下面簡單介紹下安裝方法

  1. yum安裝,這是比較簡單的安裝方式
    注意:先要配置好yum的網絡源安裝epel-release擴展源,我試了下本地的貌似沒安裝成功

    [root@c1 yum.repos.d]# yum -y install mpich-3.2-devel.x86_64 mpich-3.2-devel.x86_64 mpich-3.2-doc.noarch 
    
    安裝好之後是找不到命令的,需要手動配置環境變量
    
    [root@c1 yum.repos.d]# find / -name "mpicc"
    /usr/lib64/mpich-3.2/bin/mpicc
    先搜索一下安裝路徑
    
    設置環境變量:
    在 /etc/profile添加一下內容:
    PATH=$PATH://usr/lib64/mpich-3.2/bin/
    
    刷新一下:
    source /etc/profile
    
    命令就可直接使用了
    新建一個文件test.c
    [root@host ~]# cat test.c 
    #include <mpi.h>
    #include <stdio.h>
    #include <math.h>
    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(MPI_COMM_WORLD,&myid);/* 當前進程的ID號 */
        MPI_Comm_size(MPI_COMM_WORLD,&numprocs);/* 進程的總數 */
        MPI_Get_processor_name(processor_name,&namelen);/* 當前處理器的名稱 */
    
        fprintf(stderr,"Hello World! Process %d of %d on %s\n",
                                    myid, numprocs, processor_name);
    
        MPI_Finalize();/* 結束並行環境 */
        return 0;
        }
    
    [root@c1 ~]# mpicc -o hello test.c 
    
    [root@c1 ~]# mpirun -np 4 ./hello 
    Fatal error in MPI_Init: Other MPI error, error stack:
    MPIR_Init_thread(474)..............: 
    MPID_Init(190).....................: channel initialization failed
    MPIDI_CH3_Init(89).................: 
    MPID_nem_init(320).................: 
    MPID_nem_tcp_init(173).............: 
    MPID_nem_tcp_get_business_card(420): 
    MPID_nem_tcp_init(379).............: gethostbyname failed, c1 (errno 1)
    
    但是這裏運行還是會報錯,原因在於,沒有配置好域名解析:
    需要配置域名解析
    
    在/etsc/hosts中與/etc/hostname中的名字需要一致,貼出我的配置
    [root@host ~]# cat /etc/hosts
    127.0.0.1   host
    ::1         localhost 
    
    [root@host ~]# cat /etc/hostname
    host
    
    可以通過ssh 連接host   如果連接成功說明配置成功
    
    接下來就可運行了
    [root@host ~]# mpirun -np 4 ./hello 
    Hello World! Process 0 of 4 on host
    Hello World! Process 2 of 4 on host
    Hello World! Process 1 of 4 on host
    Hello World! Process 3 of 4 on host

2. 源碼安裝mpich

[root@c1 ~]# wget http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
--2018-05-28 18:06:45--  http://www.mpich.org/static/downloads/3.2/mpich-3.2.tar.gz
正在解析主機 www.mpich.org (www.mpich.org)... 140.221.6.71
正在連接 www.mpich.org (www.mpich.org)|140.221.6.71|:80... 已連接。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度:11862150 (11M) [application/x-gzip]
正在保存至: “mpich-3.2.tar.gz”

100%[=====================================================>] 11,862,150   213KB/s 用時 54s    

2018-05-28 18:07:40 (215 KB/s) - 已保存 “mpich-3.2.tar.gz” [11862150/11862150])

[[root@c1 ~]# tar zxf mpich-3.2.tar.gz 
[root@c1 ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  mpich-3.2  mpich-3.2.tar.gz
[root@c1 ~]# cd mpich-3.2/

[root@c1 mpich-3.2]# ls
aclocal.m4  configure     doc          Makefile.in       mpi.def        src
autogen.sh  configure.ac  examples     man               README         subsys_include.m4
CHANGES     contrib       maint        mpich.def         README.envvar  test
confdb      COPYRIGHT     Makefile.am  mpich-doxygen.in  RELEASE_NOTES  www

編譯
[root@c1 mpich-3.2]# ./configure --prefix=/usr/local/mpich
………………..
config.status: executing default-4 commands
Configuration completed.   //中間一大串,看見這個就成功了

安裝:
注意:中間如果報錯,可能是缺少gcc、build-essential依賴,yum直接安裝就行了
[root@c1 mpich-3.2]# make && make install

安裝成功後同樣找不到命令,還是需要配置環境變量

[root@c1 mpich-3.2]# ls /usr/local/mpich/bin/*    //這是之前指定的安裝目錄
/usr/local/mpich/bin/hydra_nameserver  /usr/local/mpich/bin/mpiexec.hydra
/usr/local/mpich/bin/hydra_persist     /usr/local/mpich/bin/mpif77
/usr/local/mpich/bin/hydra_pmi_proxy   /usr/local/mpich/bin/mpif90
/usr/local/mpich/bin/mpic++            /usr/local/mpich/bin/mpifort
/usr/local/mpich/bin/mpicc             /usr/local/mpich/bin/mpirun
/usr/local/mpich/bin/mpichversion      /usr/local/mpich/bin/mpivars
/usr/local/mpich/bin/mpicxx            /usr/local/mpich/bin/parkill
/usr/local/mpich/bin/mpiexec

添加環境和之前一樣

[root@c1 mpich-3.2]# tail -1 /etc/profile
PATH=$PATH:/usr/local/mpich/bin/
[root@c1 mpich-3.2]# source /etc/profile

這會兒就能看到mpicc的命令了。。。成功了

測試下:(還是利用上面那個例子)

[root@c1 ~]# mpicc -o test test.c 
[root@c1 ~]# mpirun -np 4 ./test
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(474)..............: 
MPID_Init(190).....................: channel initialization failed
MPIDI_CH3_Init(89).................: 
MPID_nem_init(320).................: 
MPID_nem_tcp_init(173).............: 
MPID_nem_tcp_get_business_card(420): 
MPID_nem_tcp_init(379).............: gethostbyname failed, c1 (errno 1)

同樣報錯…….
但是解決方法和上面那個完全一樣,都是host名字設置不一樣造成的

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