1.mpd & 啟動本機的mpi守護進程
2. mpdboot:
啟動集群mpd守護進程,在運行MPI程序前必須開啟每個節點上的mpd守護進程。常用的參數:
-n nodenum,需要啟動的節點數量
-f hostsfile節點列表,與-n 一起使用表示啟動節點列表中的nodenum個節點。
若沒有-n選項,則只啟動本地mpd進程。
3. mpdtrace:
查看集群mpd守護進程。
常用參數:
-l 輸出mpdid和IP
4. mpdexit:
殺死指定節點mpd守護進程。
常用參數:
-mpdid
5. mpdallexit:
殺死所有的mpd守護進程。
6.mpdtrace:查看MPI環境中的機器
MPI程序運行命令,運行前必須開啟mpd守護進程。
常用形式:
mpiexec <g-options> <l-options> <executable>
mpiexec <g-options> <l-options> <executable>
mpiexec –configfile <file>
其中,
<g-options> 全局選項運用於所有MPI進程。
<l-options> 本地選項應用於部分MPI進程集合。
<executable> 可執行文件的路勁。
<file> 包含命令行選項的文件。
全局選項中常用參數:
-gdb 調試運行
-machinefile <file> MPI進程分配文件。
本地選項中常用參數:
-n num 設置執行MPI程序的進程總數
注意:全局選項和本地選項順序不要弄錯。
8. mpirun:
MPI程序快速執行命令,運行前不必運行mpdboot開啟守護進程。
9. mpd測試命令:mpdcheck和mpdringtest
mpdcheck用來檢查mpi安裝和運行時的故障和異常。
mpdringtest測試一個mpd回環的傳輸時間。
10. mpd幫助命令:mpdhelp
mpdhelp顯示所有mpd命令。
11. 編譯命令
mpicc:
MPI程序編譯命令。
常用參數: -g 加入調試信息。
mpiCC/mpicc/mpif77/mpif90
mpiCC編譯並聯接用C++編寫的MPI程序 而mpicc是編譯並聯接用C編寫的MPI程序
mpif77和mpif90分別編譯並聯接用FORTRAN77和Fortran90編寫的MPI程序
這些命令在聯接時可以自動提供MPI需要的庫 並提供特定的開關選項
注意mpiCC不能不能用於編譯C程序 常用的編譯選項是
-mpilog 產生MPE的log文件
-mpitrace 產生跟蹤文件
這樣在該MPI程序執行時會打印出其運行蹤跡信息,但是它和-mpilog 在編譯時不能同時存在 只能二者選一
-mpianim 產生實時動畫
-show 顯示編譯時產生的命令 但並不執行它
-help 給出幫助信息
-echo 顯示出當前正在編譯聯接的命令信息
此外它們還可以使用一般的C++/C/FORTRAN77/Fortran90通用的選項,含義和原來的編譯器相同
To compile a single file foo.c, use
mpicc -c foo.c
To link the output and make an executable, use
mpicc -o foo foo.o
Combining compilation and linking in a single command
mpicc -o foo foo.c
最簡單的MPI運行命令是
mpirun –np N program
program是可執行MPI程序名 以這種方式進行執行
其中N是同時運行的進程的個數
需要首先對可用的機器進行配置 配置文件是$(HOME)/mpich/util/machines/machines.LINUX
在這個文件中 每一行寫上可用的機器名 比如
tp5.cs.tsinghua.edu.cn
tp1.cs.tsinghua.edu.cn
tp2.cs.tsinghua.edu.cn
tp3.cs.tsinghua.edu.cn
tp4.cs.tsinghua.edu.cn
83
tp8.cs.tsinghua.edu.cn
這樣就有6台機器可供MPI使用 使用這種方式啟動時 可執行程序必須放在不同機
同帳戶的相同路徑下 比如在tp5.cs.tsinghua.edu.cn上$(HOME)/mpich/examples/basic/下
mpirun –np 6 cpi
則需要在{tp1,tp2,tp3,tp4,tp8}上的$(HOME)/mpich/examples/basic/下都有該cpi程序
如果不使用缺省的配置文件 則需要在命令行給出配置文件 該配置文件的
mashines.LINUX相同
比如
mpirun –machinefile hosts –np 6 cpi
只需在hosts中給出可使用的機器名字即可
還有一種更為靈活的配置方式 它允許可執行程序有不同的名字 有不同的路徑
啟動方式是
mpirun –p4pg pgfile cpi
它的配置文件pgfile的格式如圖 38所示
<機器名> <進程數> <程序名>
<機器名> <進程數> <程序名>
<機器名> <進程數> <程序名>
圖 38 配置文件的通用格式
需要多少機器 就寫幾行 注意在這種啟動格式中 不需要指出啟動多少個進程 進
配置文件指定 一種可能的格式如圖 39所示
tp5 0 /home/pact/mpich/examples/basic/cpi
tp1 1 /home/pact/mpich/examples/basic/cpi
tp2 1 /home/pact/mpich/examples/basic/cpi
tp3 1 /home/pact/mpich/examples/basic/cpi
tp4 1 /home/pact/mpich/examples/basic/cpi
tp8 1 /home/pact/mpich/examples/basic/cpi
圖 39 配置文件示例
注意第一行的0並不表示在tp5上沒有進程
這里0特指在tp5上啟動MPI程序的執行
mpirun是MPI程序的啟動腳本 它可以簡化作業的啟動程序 並且盡可能把不同特征屏蔽掉
提供給用戶一個通用的MPI並行機的概念
MPI程序的一般啟動方式是
mpirun -np <number of processes> <program name and arguments>
一般MPI會自動決定使用什么樣的設備和什么樣的結構
若MPI無法決定 則可以通過選擇開關指定 可用的設備選項有
chameleon (包括chameleon/pvm, chameleon/p4, ...)
meiko (使用meiko設備)
paragon (paragon上的ch_nx設備)
p4 (工作站機群上的ch_p4設備)
ibmspx (IBM SP2上的ch_eui)
anlspx (ANLs SPx上的ch_eui)
ksr (KSR 1和2上的ch_p4)
sgi_mp (SGI多處理器上的ch_shmem)
cray_t3d (Cray T3D上的t3d)
smp (SMPs上的ch_shmem)
execer (一個定制腳本,目前還不穩定)
對於MPI無法識別的選項 它將拋棄 完整的MPI運行方式為
mpirun [mpirun_options...] <progname> [options...]
在${MPIR_HOME}/util/machines下有對應的
-arch <architecture> 指明結構信息
machines.<arch> 文件
-h 幫助信息
-machine <machine name> use startup procedure for <machine name>
-machinefile <machine-file name> 列出可選的機器
-np <np> 指出運行需要的處理器個數
-nolocal 不在本地機運行
-stdin filename 用給定的文件名作為標准輸入
只顯示執行的命令 而不實際運行它
-t 用於測試
-v 盡可能顯示詳細的信息
-dbx 在dbx下啟動第一個進程
-gdb 在gdb下啟動第一個進程
-xxgdb 在xxgdb下啟動第一個進程
-tv 在totalview上啟動
針對NEC - CENJU-3的特殊選項有
-batch作為批處理作業執行
-stdout filename 用指定的文件名作為輸出
-stderr filename 用指定的文件名作為標准輸出
針對Nexus設備的特殊選項有
並且使-np -nolocal無效 自動選
-nexuspg filename用給定的文件作為配置文件
擇 -leave_pg
-nexusdb filename 使用Nexus給定的資源數據庫
針對工作站機群的特殊選項有
-e 用execer來啟動程序
而不是execer
-pg 用配置文件來啟動一個p4程序
-leave_pg 運行結束后不刪除P4配置文件
-p4pg filename用指定的進程組配置文件而不是臨時創建一個
使得-np和-nolocal無效 自動選擇 -leave_pg
-tcppg filename使用指定的tcp進程組配置文件而不是臨時創建一個使得-np和-
nolocal無效
自動選擇 -leave_pg
-p4ssport num 使用p4安全服務程序來啟動該程序
該服務器使用的端口號為
num 如果num=0 則使用環境變量MPI_P4SSPORT的值 該服務器可以加速進程的啟動
如果設置了MPI_USEP4SSPORT和MPI_P4SSPORT的值 其效果就如同-p4ssport 0
針對批處理環境的特殊選項
-mvhome 將可執行程序移到home路徑下
-mvback files 將指定的文件移到當前路徑下
-maxtime min 以分鍾為單位的最大運行時間
-nopoll 不使用查詢模式進行通信
-mem value 每個結點需要的內存
-cpu time 硬件CPU約束時間
針對IBM SP2的特殊選項
-cac name 指定ANL 調度期
針對Intel Paragon的特殊選項
-paragontype name 選擇遞交作業的方式
-paragonname name 指定運行作業的遠程shells的名字
-paragonpn name 在Paragon上運行部分的名字
異構系統上的運行
通過指定多個-arch -np 參數對 可以在不同的結構上協同運行一個MPI程序 比如利用
本地機sun4和另一個機器rs6000同時執行一個程序 在sun4上啟動2個進程 在rs6000上啟動
則啟動命令為
3個進程
mpirun -arch sun4 -np 2 -arch rs6000 -np 3 program
如果不同機器上的程序名字不同 比如sun4上的程序名字是program.sun4 rs6000上的
機器名字是program.rs6000 則可以用%a代替機器名
mpirun -arch sun4 -np 2 -arch rs6000 -np 3 program.%a
比如分別存放在
如果執行程序的存放路徑也不相同
/tmp/me/sun4 和 /tmp/me/rs6000下 則啟動命令為
mpirun -arch sun4 -np 2 -arch rs6000 -np 3 /tmp/me/%a/program
其它可執行命令
mpiman
啟動MPI的手冊幫助程序 它提供兩種顯示方式 一種是UNIX的man方式 一種是通過
缺省情況下 mpiman使用xman, 即X窗口系統的手冊幫助瀏覽器來閱
Web的HTML格式
讀各個幫助頁面 其它的開關選項是
-xmosaic 指定使用xmosaic Web瀏覽器
-mosaic 指定使用mosaic Web瀏覽器
-netscape 指定使用netscape Web瀏覽器
-xman 指定使用X窗口系統的xman手冊瀏覽器
-man 指定使用man program (比如mpiman -man MPI_Send)
mpireconfig
根據模板文件產生make文件 它可以根據特定MPICH的配置 將模板中的變量替換為
合適的參數形成所需要的make文件
命令格式是
mpireconfig filename
filename 是將要產生的文件名
但是相應的filename.in文件必須是已經存在了的