大堀/ツール関係/MPICH
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大堀/ツール関係]]
#contents
*MPICH [#o668e531]
-Parallel Programmingの輪講でも学ぶMPIについて実行環境,プログラム例についてまとめるページ.
**実行環境 [#o2f38fa8]
-学内マシン(Unix)の使用:これがもっとも簡単
--PATH
/usr/local/mpich/bin
--RSHの設定
~/.rhosts
-個人管理マシンor共有マシン(Linux)の使用
--自分でMPICH, RSHなど必要なプログラムをインストール
---RSHのパスの設定なども行う
**実行方法 [#s90904c7]
-コマンド
mpiCC -o program program.c
mpirun -machinefile hostfile -np XX program
-説明
++MPIを使用したプログラムを書く.C,C++など好きなもので.
++mpiCCなどのコンパイラで実行ファイルを生成する.
++動作させるマシンリストをhostfileに書く
++(Unixの場合はファイルシステムの関係上必要ない)実行ファイルを実行できる状態で各マシンに置く
++(Unixの場合はファイルシステムの関係上必要ない)RSHやパスなどの設定を確認しておく
++mpirunコマンドで動作させる.オプションについてはヘルプで確認すること.
---machinefile: マシンリストを読み込む
---np: プロセス数を設定
++どのプロセスがどのマシンで動くかは自動で振り分けてくれる.(自分で設定も可)
**実行例 [#m454d156]
-RANKと動作マシンを表示するプログラム
--rank.c
#include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int numprocs;
int myrank;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stderr,"Process %d on %s\n",myrank, processor_name);
MPI_Finalize();
return 0;
}
--hostfile
hdwXdcXX
hdwXdcXX
hdwXdcXX
stdXdcXX
-実行方法
mpiCC -o rank rank.c
mpirun -machinefile hostfile -np 6 rank
-実行結果(一例)
Process 0 on hdwXdcXX.
Process 3 on hdwXdcXX.
Process 2 on hdwXdcXX.
Process 1 on hdwXdcXX.
Process 5 on hdwXdcXX.
Process 4 on hdwXdcXX.
終了行:
[[大堀/ツール関係]]
#contents
*MPICH [#o668e531]
-Parallel Programmingの輪講でも学ぶMPIについて実行環境,プログラム例についてまとめるページ.
**実行環境 [#o2f38fa8]
-学内マシン(Unix)の使用:これがもっとも簡単
--PATH
/usr/local/mpich/bin
--RSHの設定
~/.rhosts
-個人管理マシンor共有マシン(Linux)の使用
--自分でMPICH, RSHなど必要なプログラムをインストール
---RSHのパスの設定なども行う
**実行方法 [#s90904c7]
-コマンド
mpiCC -o program program.c
mpirun -machinefile hostfile -np XX program
-説明
++MPIを使用したプログラムを書く.C,C++など好きなもので.
++mpiCCなどのコンパイラで実行ファイルを生成する.
++動作させるマシンリストをhostfileに書く
++(Unixの場合はファイルシステムの関係上必要ない)実行ファイルを実行できる状態で各マシンに置く
++(Unixの場合はファイルシステムの関係上必要ない)RSHやパスなどの設定を確認しておく
++mpirunコマンドで動作させる.オプションについてはヘルプで確認すること.
---machinefile: マシンリストを読み込む
---np: プロセス数を設定
++どのプロセスがどのマシンで動くかは自動で振り分けてくれる.(自分で設定も可)
**実行例 [#m454d156]
-RANKと動作マシンを表示するプログラム
--rank.c
#include <stdio.h>
#include <mpi.h>
int main(int argc, char **argv)
{
int numprocs;
int myrank;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stderr,"Process %d on %s\n",myrank, processor_name);
MPI_Finalize();
return 0;
}
--hostfile
hdwXdcXX
hdwXdcXX
hdwXdcXX
stdXdcXX
-実行方法
mpiCC -o rank rank.c
mpirun -machinefile hostfile -np 6 rank
-実行結果(一例)
Process 0 on hdwXdcXX.
Process 3 on hdwXdcXX.
Process 2 on hdwXdcXX.
Process 1 on hdwXdcXX.
Process 5 on hdwXdcXX.
Process 4 on hdwXdcXX.
ページ名: