1. 程式人生 > >Linux系統下MPICH的安裝、配置、HelloWorld程式演示

Linux系統下MPICH的安裝、配置、HelloWorld程式演示

我們在學習並行這門課的時候使用MPI來講解課程例項的,我是在VMware下安裝了CentOS來跑的,root許可權有風險,操作需謹慎,所以我是在使用者下安裝的。

MPICH3是MPI(Message-Passing Interface)的一個應用實現。所以這篇文章簡單記錄一下安裝MPICH3的過程,最後的目的是實現在一臺linux機器下模仿叢集的功能的程式:三個Slave向一個Master打招呼。

1.下載

這裡是MPICH下載的官網,進去後選擇Downloads選擇想安裝的版本下載即可,但在官網下載速度牛慢,我是在其他地方找的安裝包,我安裝的是mpich-3.1.tar.gz
,我剛開始不會掛載什麼的,沒法下這個安裝包,就使用圖形介面的瀏覽器下載,下載的安裝包預設在使用者的Downloads資料夾下(希望你linux裡已經有了C++的編譯環境,因為之後安裝過程中會用到)。

[[email protected] ~]$ cd /home/gg/Downloads
[[email protected] Downloads]$ ls
mpich-3.1.tar.gz

2.解壓

將安裝包拷貝到另一個資料夾,比如新建一個temp資料夾,準備在這裡進行解壓

[[email protected] ~]$ mkdir temp
[

[email protected] ~]$ cp ~/Downloads/mpich-3.1.tar.gz ~/temp
[[email protected] ~]$ cd temp
[[email protected] temp]$ ls
mpich-3.1.tar.gz
[[email protected] temp]$ tar -zxvf mpich-3.1.tar.gz

[[email protected] temp]$ ls
mpich-3.1  mpich-3.1.tar.gz

運行了tar命令後,開始解壓,出來一大串解壓資訊,這樣就將安裝包解壓到了temp
目錄下,temp下多了一個解壓後的檔案mpich-3.1,進入這個資料夾,我們可以找到configure這個檔案。再然後執行命令./configure -prefix=/home/gg/mpich3進行軟體配置與檢查(這裡出來一大串檢查資訊,直到出現Configuration completed.),這裡的路徑就是下一步的安裝目錄,也就是軟體會安裝在mpich3下,在檢查階段如果你沒有安裝gcc一類的編譯器他會提醒,這就需要你安裝C++的編譯環境,網上優秀的教程文章很多,這裡就不說了。

[[email protected] temp]$ cd mpich-3.1
[[email protected] mpich-3.1]$ ./configure -prefix=/home/gg/mpich3

Configuration completed.
[[email protected] mpich-3.1]$

注:prefix引數是表示安裝路徑

3.安裝

執行make && make install(當然也可以先執行make命令編譯,再執行make install命令安裝,作用一樣。)也是一大串安裝命令。

[[email protected] mpich-3.1]$ make && make install

[[email protected] mpich-3.1]$

安裝完成了,接著就要配置環境變量了。

4.環境配置

使用過javac,java的朋友都知道,這兩個命令經常使用,他倆的實質是執行檔案,我們只有配置了環境變數,才能直接使用,當然不配置也行,那麼要使用這兩個執行檔案就必須寫絕對路徑系統才能找到,這裡也同理。如果是Ubuntu的就在~目錄下修改.bashrc檔案,我們的CentOS是修改.bash_profile檔案,用vi編輯該檔案,在檔案的末尾跟上:

export MPI_ROOT=/home/gg/mpich

export PATH=$MPI_ROOT/bin:$PATH

export MANPATH=$MPI_ROOT/man:$

先返回到~目錄下:

[[email protected] mpich-3.1]$ cd ~
[[email protected] ~]$ vi ./.bash_profile

~export MPI_ROOT=/home/gg/mpich
~export PATH=$MPI_ROOT/bin:$PATH
~export MANPATH=$MPI_ROOT/man:$
[[email protected] ~]$ source .bash_profile

.bash_profile檔案

儲存檔案退出,使用source .bash_profile命令更新使配置檔案生效。

至此大功告成,測試一下。

5.測試

5.1我們先用一個hellow.c程式來演示,這個程式在剛才解壓縮包裡有個examples檔案,用mpicc來編譯c檔案,-o後面的名字是編譯成的可執行檔案的名字,hellow(注意什麼字尾也沒有哈)就是可執行檔案了;可以直接執行hellow(注意這裡加上”./”),也可以用mpirun或mpiexec跟上引數-np 4,表示模擬4個程序來執行。

[[email protected] ~]$ cd temp/mpich-3.1/examples
[[email protected] examples]$ mpicc -o hellow hellow.c
[[email protected] examples]$ ./hellow
Hello World from process 0 of 1
[[email protected] examples]$ mpirun -np 4 ./hellow
Hello World from process 3 of 4
Hello World from process 2 of 4
Hello World from process 1 of 4
Hello World from process 0 of 4
[[email protected] examples]$ mpiexec -np 4 ./hellow
Hello World from process 3 of 4
Hello World from process 1 of 4
Hello World from process 2 of 4
Hello World from process 0 of 4
[[email protected] examples]$

這裡每次執行的結果不盡相同,大家應該知道。

5.2再來一個問候的程式,從程序向主程序問候,主程序自己表明身份。我們可以在~下新建一個codes資料夾來放自己寫的程式碼,新建一個greetings.c的檔案,用vi編輯器編輯。

[[email protected] ~]$ mkdir codes
[[email protected] ~]$ cd codes
[[email protected] codes]$ vi greetings.c

[[email protected] codes]$ mpicc -o greetings greetings.c
[[email protected] codes]$ mpirun -np 5 ./greetings
Hello,everyone,I am master,my rank is : 0
Greeting from process 1 of 5 !
Greeting from process 2 of 5 !
Greeting from process 3 of 5 !
Greeting from process 4 of 5 !

程式碼如下:

#include<stdio.h>
#include<string.h>
#include<mpi.h>

const int MAX_STRING = 100;
int main(void)
{
    char greeting[MAX_STRING];
    int comm_sz;
    int my_rank;

    MPI_Init(NULL, NULL);
    MPI_Comm_size(MPI_COMM_WORLD, &comm_sz);
    MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

    if(my_rank != 0)//These are slave proceses
    {
        sprintf(greeting, "Greeting from process %d of %d !", my_rank, comm_sz);
        MPI_Send(greeting, strlen(greeting) + 1, MPI_CHAR, 0, 0, MPI_COMM_WORLD);
    }
    else//This is master process
    {
        printf("Hello,everyone,I am master,my rank is : %d\n", my_rank);
        int q;//Must pre-state before block "for" using the "q",because of gcc perform the stander c99
        for(q = 1; q < comm_sz; q++)
        {
            MPI_Recv(greeting, MAX_STRING, q, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
            printf("%s\n", greeting);
        }
    }
    MPI_Finalize();
    return 0;
}

總結:作為一個linux小白,只是在學習了幾個簡單命令後就直接上,所以踩了好多坑,但總歸跑起來了,可以進行下一階段的學習,儘可能詳盡的記錄安裝過程,以便大家閱讀和我日後的查閱。

在這之前我CentOS上安過MPICH2,但由於各種困難導致最後不能使用,昨天在同學的幫助下在root許可權下安裝成功,但總感覺root有點太“軍閥”,今天就在我的普通使用者下安裝了這個MPICH3,之前那個2也是這個使用者下,也沒有解除安裝(因為我不會,哎),安好3後並未衝突,把環境變數裡的系統路徑改了(刪了之前的2,加了這個3的)。

希望本文能幫助到初次接觸mpi的您,還是那句話,像我這樣智力平平的選手,學習得實踐理論結合著一個坑一個坑地走,不會了就去查,齊頭並進。

相關推薦

Nginx Linux系統安裝配置應用

Nginx 安裝配置 Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高效能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 在高連線併發的情況下,Nginx是Apache伺服器

Keepalived介紹以及在Linux系統安裝配置

一、簡介 Keepalived是一個免費開源的,用C編寫的類似於layer3, 4 & 7交換機制軟體,具備我們平時說的第3層、第4層和第7層交換機的功能。主要提供loadbalancing(負載均衡)和 high-availability(高可用)功能,負載均衡實現需要依賴Linux的虛

Linux系統MPICH安裝配置HelloWorld程式演示

我們在學習並行這門課的時候使用MPI來講解課程例項的,我是在VMware下安裝了CentOS來跑的,root許可權有風險,操作需謹慎,所以我是在使用者下安裝的。 MPICH3是MPI(Message-Passing Interface)的一個應用實現。所以

ubuntu系統postgres安裝python語言postgres安裝圖資料AgensGraph

一、首先安裝python,ubuntu預設有python2.7,python3.5,我採用的是python3.6.5版本。                            2.  解壓檔案                         $> tar

Linux系統建立tomcat快捷啟動停止以及檢視日誌方式的方式

1.建立bash指令碼tomcat檔案 vi /etc/init.d/tomcat 2.在tomcat中寫入一下指令碼內容 # !/bin/bash # Description: start or stop the tomcat # Usage: tom

Linux 系統 JDK 安裝和 Java 環境變數配置

1. 下載 JDK Linux 版本的 JDK 包有兩種形式,rpm包 和 tar.gz包,這裡下載 JDK 8 的 tar.gz 包,tar.gz 是普通的壓縮包檔案,直接解壓即可。 以 32 位

linux系統nginx/mysql/php啟動停止重啟命令

/usr/local/nginx/sbin/nginx /etc/init.d/mysql start /usr/local/php/sbin/php-fpm start #nginx命令  start:  /usr/local/nginx/sbin/nginx  s

linux系統apache服務的啟動停止重啟命令

本文假設你的apahce安裝目錄為/usr/local/apache2,這些方法適合任何情況 apahce啟動命令: 推薦/usr/local/apache2/bin/apachectl start apaceh啟動 apache停止命令 /usr/local/apa

Linux 系統離線安裝 mysql glibc版

目錄 AI x86_64 設置mysql 執行權限 連接數 改密碼 permanent yum 一.安裝前的檢查 1. 下載的時候,註意留意是32位還是64位 Linux查看位數的命令是 uname -a ,如果出現x86_64,那就是64位。

Linux系統Tensorflow安裝教程

人工智慧/機器學習/深度學習交流QQ群:116270156 Linux系統下Tensorflow安裝教程 準備工作 安裝Anaconda 設定映象 配置Tensorflow虛擬環境 安裝tensorflow

網際網路技術學習——28redis介紹及redis在linux系統安裝

NOSQL簡介 NoSQL,泛指非關係型的資料庫,NoSQL資料庫主要分為四大類。 鍵值儲存資料庫:主要使用雜湊表,這個表中有一個特定的鍵和一個指標指向特定的資料。如Redis,Voldemort,Oracle BDB 類儲存資料庫:通常用來應對分散式儲存的海量資料。鍵仍然存在,

[OpenCV] Linux系統 OpenCV安裝

前言:          推薦從原始碼安裝的模式,編譯過程需要一點時間。 1.下載原始碼     下載 OpenCV 3.1.0 原始碼,這裡提供兩種方式: 官網:http://opencv.org/do

linux系統 Anaconda 安裝python擴充套件模組 非常方便

最近需要在linux上安裝一些python的擴充套件模組,而我的電腦yum源又不能使用(主要是自己懶得換yum源),如果直接下載模組,然後離線安裝的話,會發現由於缺少其他模組導致安裝失敗,所以非常浪費時間,,,因此,你可以通過安裝Anaconda來安裝pytho

linux系統jdk安裝

  自1994.3月linux1.0釋出以來,在windows系統幾乎佔領整個計算機行業的今天(macos也有一部分使用者),linux仍以其獨有的穩定性和安全性被很多公司用來當做伺服器釋出專案,下面就介紹一下linux環境下如何安裝jdk。 1.linux系統和工具:

Linux系統redis安裝

$ make  OK "bar" 5、修改redis.conf配置檔案: ## 為了redis客戶端遠端能夠訪問 1.將`bind 127.0.0.1`改為`#bind 127.0.

RabbitMQ(一) Win7系統安裝配置

安裝 下載Erlang,地址:http://www.erlang.org/download/otp_win32_R15B.exe,雙擊安裝即可(首先裝) 下載RabbitMQ,地址:http://www.rabbitmq.com/releases/rabbitmq-serv

Linux系統MySQL安裝(單例項)

1、安裝依賴包 #yum -y  install gcc gcc-c++ ncurses-devel perl cmake bison 2、建立使用者 # groupadd mysql # useradd mysql –g mysql –s /sbin/nologi

Windows系統nodejs安裝配置

關於nodejs中文站,目前活躍度最好的知識站應該是http://www.cnodejs.org/ ,而http://cnodejs.org/則活躍度較低。Express.js是nodejs的一個MVC開發框架,並且支援jade等多種模板,是Node.js上最流行的Web開發框架。這幾天剛接觸Pho

redis原理以及redis在linux系統安裝(二)

上一篇文章,我們講的是redis的原理,這一篇文章,我們一起學習redis在linux系統下的安裝: 首先,我們需要知道linux系統下其實簡單來講,就是: 1、redis上的安裝包解壓、編譯。

iTOP-4412開發板Linux系統使用wifi模組配置

精英版在 linux 下使用 wifi,需要進行下面的配置: 首先使用者在拿到光碟資料以後檢視下光盤裡面的“linux”->”root_xxxxxxxx.tar.gz”檔案,其中的 “xxxxxxxx” 代表linux系統的版本日期, 迅為提供的支援linux下wi