• mpich2多節點并行運算的設置

    mpich2多節點并行運算的設置

    文/Sobereva @北京科音   寫于約2008年


    在單節點上使用mpich2,編譯并行amber9并且并行運行的方法我前面已經介紹過了,下面介紹mpich2通用的多節點的設置方法,關于amber的并行設置,都在之前的帖子里。這里用root,fedora7。建立多節點并行運算,是計算化學工作者必備的能力,這里講得詳細些。


    這里假設有兩臺電腦,分別叫vmware1和vmware2,IP分別為192.168.0.2和192.168.0.3


    在兩臺電腦上都運行下列步驟:

    -------------------------------
    如果fortran編譯器裝了ifort,運行export FC=/opt/intel/fce/10.0.023/bin/ifort

    復制mpich2-1.0.6.tar.gz到/sob,解壓到/sob/mpich2-1.0.6,進入此目錄,運行:
    ./configure
    make
    make install

    運行
    touch /etc/mpd.conf           

    chmod 700 /etc/mpd.conf
    將下面加入mpd.conf:
    secretword=<secretword>            (比如secretword=ltwd)

    修改/etc/hosts,把里面的內容改為
    192.168.0.2 vmware1
    192.168.0.3 vmware2

    這樣在linux中就可以用主機名稱來代替IP了。



    修改/root/mpd.hosts,把里面的內容改為
    vmware1
    vmware2

    ---------------------------------


    為了使MPICH2可以在兩臺電腦上相互傳輸數據,必須把ssh打通,也就是不用密碼即可直接用ssh在電腦之間登陸,方法如下:


    在vmware1中:
    運行ssh-keygen -t rsa    全都按回車用默認,生成了RSA密鑰
    cd /root/.ssh
    cp id_rsa.pub authorized_keys
    建立本身的信任連接:ssh vmware1   回答輸入yes


    在vmware2中:
    運行ssh-keygen -t rsa    全都按回車用默認
    把vmware1中的/root/.ssh/*復制到vmware2中/root/.ssh/ 全部覆蓋
    chmod 700 /root/.ssh/*        把.ssh內的文件設為root專用
    ssh vmware1              回答輸入yes


    測試ssh:
    無論在vmware1還是vmware2,無論ssh vmware1還是ssh vmware2,現在都應當可以不輸入任何東西直接登陸。
    可以用這個命令來驗證是否無誤,比如ssh vmware1 date,如果顯示了日期,就沒問題了。


    現在,在任意一臺電腦中,輸入mpdboot -n 2,就在兩臺電腦上都同時啟動mpd了,-n 2代表啟動2臺上的mpd。要想并行運算,必須開啟mpd才行。如果此時提示無法打開mpd.hosts,但確實已經在root下建立了mpd.hosts文件,則用mpd.hosts -n 2 -f /root/mpd.hosts來具體指定mpd.hosts的位置并啟動mpd。

    然后運行mpdtrace,察看現在有哪些電腦可以并行運算了,應當顯示:
    vmware1
    vmware2

    假設兩臺電腦都是雙核,運行mpirun -np 4 sander.MPI xxxxxxxxxx就可以在兩臺電腦上同時運行sander了,自動調用總共4個core。注意用mpirun所運行的并行程序,必須存在于兩臺電腦相同位置上。

    如果退出mpd,輸入mpdallexit。




    注意:兩臺電腦的mpich2安裝位置最好一樣,/etc/mpd.conf中的密碼應當相同。

    驗證是否可以多節點正常并行運算,可運行mpirun -np number /sob/mpich2-1.0.6/examples/cpi number為使用的core數。這是一個測試程序。




    以上方法適用于建立n臺電腦并行運算。多個節點上,CPU不能100%滿載是正常的,在一定程度上受限于網絡連接方式,比如把100M網換到1000M網會有好處,若能用InfiniBand、Myrinet等專適于HPC的連接方式當然更好,只是沒錢,只能用以太網了。如今中檔芯片組大都集成1000M控制器,中檔主板也帶了1000M支持,便宜的realtek 1000M芯片的網卡諸如TP-LINK的,才35元。當然別忘了用超五類或者六類線。

    以上內容在vmware station 6,XP SP2,Q6600建立兩臺雙核虛擬機測試通過。值得一提的是,vmware6中fedora下,網卡虛擬的是82545EM千兆網卡,雙虛擬機互連速度是夠了。這種方式可以解決目前vmware版本不支持4核的問題,經本測試,這種方式可以達到實際fedora中單節點4核速度的82%,實際運算速度等于單核的三倍,還是可以滿意的。在測試過程中,虛擬機的網絡用vmnet1也就是host-only方式,這樣虛擬機之間以及主機之間可以互相訪問,可以共享上網,比較方便。

    在雙虛擬機中雙節點并行跑amber在系統監視器中會看到數據吞吐量往往最高也才十幾兆,當初我也懷疑是否實際上虛擬的是100M網。后來將監控的速度間隔調成0.25s,才發現峰值數據吞吐速度遠高于100M網的限制,只是瞬間傳一次數據后,持續幾秒不傳輸數據,所以如果用了1s一次檢測速度,會取平均值,誤令人以為虛擬千兆網卡是假的。

    另外在vmware6中,可以將多個虛擬機建立一個team,在team中,虛擬機互相之間和外界是封閉的,并且可以在team里的虛擬機之間建立高速網絡連接,沒有數據傳輸速度上限,但經我測試,速度相對于vmnet1方式連接沒有絲毫提升。而且team里面無論是開機關機都必須同時進行,不夠靈活。team方式至少對跑amber9來說沒有太大作用。但是我發現vmware6虛擬XP仍然是虛擬的100M AMD網卡,這種team內提供的專線虛擬機互聯方式,對于XP虛擬機之間傳輸數據會有好處。
    久久精品国产99久久香蕉