MatsuLab. Lecture Note/sougouenshu2006/1stround
はすでに存在します。
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[MatsuLab. Lecture Note/sougouenshu2006]]
*TSUBAMEを使って並列プログラミングをしよう [#yb72efb4]
担当:滝澤<takizawa@matsulab.is.titech.ac.jp>~
時間:月 13:20 - 15:00 木 15:00 - 16:30
**目次 [#uf741cae]
#contents
**スケジュール [#sd1ed9e9]
進捗によって変わると思います。
-10/16
--C言語とMPIの簡単な課題の説明
-10/19
--%%松岡先生から研究室の説明%%
-10/23
--予備日
-10/26
--C言語とMPIの課題のチェック
--スパコンコンテスト課題の説明
-10/31
--予備日
-11/2
--松岡先生から研究室の説明
-11/6
--予備日
-11/9
--スパコンコンテスト課題のチェック
「予備日」は研究室に来なくてもよい。担当TAは研究室に在室...
**講義内容 [#o740a4fc]
***Cの基礎課題 [#nad4b9bd]
行列とベクトルの掛け算を行うプログラムを書きなさい。行列...
また、行列、ベクトルの要素を生成するときに、乱数を用いて...
例えば、以下のように3つの引数を取ればよい。
$ ./serial 乱数シード 行列の行数 行列の列数(ベクトルの...
行列、ベクトルの要素の生成ルーチンをまとめたライブラリの...
/home/takizawa/array_gen.h
/home/takizawa/array_gen.c
このファイル内には以下の1つの関数が用意されている。
-void array_gen_init(int seed)
--引数に乱数生成時のシードを取る
--プログラム中、1度だけ実行する
-void create_random_array(int *array, int size)
--第1引数で与えられたINT型のポインタが指すアドレスから、...
--関数実行後、arrayが初期化されている。
以下のように使うこと。
#include "array_gen.h"
int seed, *matrix, matrix_len;
・・・
array_gen_init(seed);
matrix = (int *)malloc(・・・);
create_random_array(matrix, matrix_len);
・・・
free(matrix);
メインプログラムを「serial.c」とした場合、次のようにコン...
$ gcc -c array_gen.c
$ gcc -c -Wall serial.c
$ gcc -o serial serial.o array_gen.o
$ rm serial.o array_gen.o <- 必要ないなら削除してか...
ヒント&注意
-行列のメモリ領域は1つの連続的な領域として確保すること。...
int *matrix = (int *)malloc(行数 * 列数)
-計算結果のオーバーフローは考慮しなくてよい。
-メモリ管理が必要であること以外はJavaと同じように記述でき...
-以下のCの関数が参考になるかもしれない。使い方はWEBで検索...
atoi
free
malloc
printf
***MPIの基礎課題 [#c40d3253]
「Cの基礎課題」のプログラムをMPIを使って並列化する。
このとき、行列の分割は、「COLOR(BLUE){全てのプロセスが同...
すなわち、16x16行列が与えられ、2プロセスで計算する場合に...
この場合、行列の要素数は使用プロセス数で割り切れる必要が...
余裕があれば、任意のプロセス数で処理できるようにプログラ...
メインプログラムを「mpi.c」とした場合、次のようにコンパイ...
$ gcc -c array_gen.c
$ mpicc -c -Wall mpi.c
$ mpicc -o mpi mpi.o array_gen.o
$ rm mpi.o array_gen.o <- 必要ないなら削除してかま...
以下のように実行できるようにすること。
$ mpirun -np 4 -machinefile machines -nolocal ./mpi 乱数...
ヒント&注意
-MPIについては参考文献の1や2、3を参考にするとよい。
-行列データ、ベクトルデータの生成は1プロセス上でのみ行い...
-最後に各プロセスが計算した結果を1つのプロセスに集めるこ...
-実際、MPI_SendとMPI_Recvだけで実装できてしまう(通信関数...
-集団通信関数は、以下の3つを参考に。
MPI_Bcast
MPI_Gather
MPI_Scatter
-さらに、任意個のプロセスで実行できるようにするときには、...
MPI_Gatherv
MPI_Scatterv
***スパコンコンテスト課題 [#m8b7eed5]
[[課題(PDF):http://www.gsic.titech.ac.jp/supercon/super...
課題を解くために必要なファイルをPrestoIIIの以下の場所に置...
各自cpコマンドを用いて自分のホームディレクトリにコピーす...
/home/takizawa/sougouenshu/
このディレクトリには以下のファイルが置かれている。
- sc06.c & sc06.h
-- コンテスト問題用のルーチンが定義されているファイル。使...
-- ここで定義されているルーチン自体MPIを使って書かれてい...
- matrix/*.mat
-- サンプル行列データとコンテストで用いた行列データ
- progrule.html
-- コンテスト用のプログラム作成ルールが記述されているファ...
- slide.ppt
-- 渡辺先生がコンテストの説明用に作成したスライド
progrule.htmlとslide.pptはPrestoIII上では閲覧できない。
scpコマンドを用いてコピーすること(下記のコマンドをMAC上...
$ scp eugs0X@nimbus.titech.hpcc.jp:/home/takizawa/sougou...
コンパイル方法
$ mpicc -c sc06.c
$ mpicc -c YOUR_FILE.c
$ mpicc -o scon sc06.o YOUR_FILE.o
ヒント&注意
- 今回もシングルプロセスで動くものを作ってから並列化する...
- スパコンコンテストでは44x16CPU Coreを使っている。今回の...
-- 実は優勝者は1CPUしか使わなかった、という話もあるが
**課題の進め方 [#ib4f1098]
その1
-演習室MACでプログラムを編集
-scpコマンドでプログラムを実行環境(PrestoIIIクラスタ、TS...
-sshコマンドで実行環境にログイン
-実行環境でプログラムをコンパイル&実行
その2
-sshコマンドで実行環境にログイン
-実行環境上でviやemacs( -nw)などでプログラムを編集、コン...
***松岡研PCクラスタ PrestoIII の使い方 [#p9d75bfc]
-ログイン
++ログインノードnimbus.titech.hpcc.jpへログイン
$ ssh -l USERNAME nimbus.titech.hpcc.jp
++実行マシンへログイン
$ rsh pad018.titech.hpcc.jp
-リモートコピー
--使用端末(演習室のMACなど)から以下のコマンド
$ scp mpi.c USERNAME@nimbus.titech.hpcc.jp:
-使用するマシン
--18台
--/home/eugs0X/sougouenshu/machinesファイルを参考に
--使用するMPIはMPICH
***TSUBAMEの使い方 [#j5fbd017]
TSUBAMEでは「バッチキューイングシステム」が使われている。
バッチキューイングシステムでは、ユーザはジョブ(今回の場...
バッチキューイングシステムは、キュー内の計算機に空きがで...
ログイン
-login.cc.titech.ac.jpにssh
$ ssh -l YOUR_NAME login.cc.titech.ac.jp
-ログイン後、自動的にインタラクティブノード(tgg075001〜t...
-インタラクティブノードは4台しかないが、その上でアプリケ...
リモートコピー
-各自のコンピュータ(MAC)から手元のファイルをTSUBAMEにコ...
$ scp YOUR_FILE YOUR_NAME@login.cc.titech.ac.jp:
プログラムのコンパイル
-インタラクティブノードで行う。gcc、mpiccが利用可能。ただ...
$ mpicc -c sc06.c
$ mpicc -o scon.c
$ mpicc -o scon scon.o sc06.o
インタラクティブノード上でのプログラムの実行
-通常通りmpirunを使う。「-machinefile」、「-nolocal」オプ...
$ mpirun -np 4 ./PROG_NAME
バッチキューイングシステムを用いたプログラムの実行
-ジョブ投入
$ n1ge -N JOB_NAME -q default -mpi 4:2 ./PROG_NAME
-- -N JOB_NAMEはキューに登録する際のジョブの名前。指定し...
-- -q default
---使用するキューを指定。今回は「default」キューと「high...
-- -mpi 4:2
---MPIアプリケーションを実行することを表す。「-mpi 」の後...
--PROG_NAME
---アプリケーション実行ファイル。パスで指定する
--このコマンドはすぐに実行が終わる。バックグラウンドでジ...
--以下のように出力されたらOK。
stakizaw@tgg075003:/home0/usr1/stakizaw> n1ge -N bcast.4...
*n1ge> Number of CPUs for each node => 2
*n1ge> Total number of CPUs => 4
*n1ge> Checking which tool have the command you specifie...
*n1ge> Reading specific configuration file for each tool...
*n1ge> Creating qsub options....
*n1ge> Submitting Job to Cluster......
Your job 340322 ("bcast.4") has been submitted
--コマンド実行完了後、コマンドを実行したディレクトリに「J...
bcast.4.o340322
bcast.4.po340322
---JOB_NAME.oNUMはジョブの画面への出力(標準出力)をファ...
---JOB_NAME.poNUMはジョブの情報。開始時刻、使用したコンピ...
-ジョブ実行状況の確認
$ qstat -u USER_NAME
--指定したユーザのジョブの状況を確認できる
stakizaw@tgg075003:/home0/usr1/stakizaw> qstat -u stakizaw
job-ID prior name user state submit/sta...
--------------------------------------------------------...
340258 0.50500 LOGIN stakizaw r 10/30/2006 ...
340413 0.00000 bcast.4 stakizaw qw 10/30/2006 ...
---「r」stateは実行中を表し、「qw」stateは実行待ちを表す
-ジョブの削除
$ qdel JOB_ID
--JOB_IDはqstatの出力の第1要素のjob-ID
--終了を待たずにジョブを中断する場合や、実行開始されない...
**参考文献(URL) [#ze2b62e8]
+MPIによる並列プログラミングの基礎(PDF)
--[[http://mikilab.doshisha.ac.jp/dia/smpp/cluster2000/PD...
+MPI-1.1 Document(PDF)
--[[http://www.mpi-forum.org/docs/mpi1-report.pdf:http://...
--サイズが大きいので、ダウンロードして読むことを薦めます
+MPI Routines
--[[http://www-unix.mcs.anl.gov/mpi/www/www3/:http://www-...
+TSUBAME概要
--[[http://www.gsic.titech.ac.jp/%7Eccwww/Announce/newsys...
+TSUBAME
--[[http://www.gsic.titech.ac.jp/~ccwww/tgc/:http://www.g...
+TSUBAME利用の手引き(PDF)
--[[http://www.gsic.titech.ac.jp/%7Eccwww/tebiki/Riyou_Te...
--ジョブの実行方法に関しては24〜25ページ(文書中のページ...
+11月からの課金に向けたN1GE変更点について(PDF)
--[[http://www.gsic.titech.ac.jp/~ccwww/tgc/TITECH_N1GE_2...
終了行:
[[MatsuLab. Lecture Note/sougouenshu2006]]
*TSUBAMEを使って並列プログラミングをしよう [#yb72efb4]
担当:滝澤<takizawa@matsulab.is.titech.ac.jp>~
時間:月 13:20 - 15:00 木 15:00 - 16:30
**目次 [#uf741cae]
#contents
**スケジュール [#sd1ed9e9]
進捗によって変わると思います。
-10/16
--C言語とMPIの簡単な課題の説明
-10/19
--%%松岡先生から研究室の説明%%
-10/23
--予備日
-10/26
--C言語とMPIの課題のチェック
--スパコンコンテスト課題の説明
-10/31
--予備日
-11/2
--松岡先生から研究室の説明
-11/6
--予備日
-11/9
--スパコンコンテスト課題のチェック
「予備日」は研究室に来なくてもよい。担当TAは研究室に在室...
**講義内容 [#o740a4fc]
***Cの基礎課題 [#nad4b9bd]
行列とベクトルの掛け算を行うプログラムを書きなさい。行列...
また、行列、ベクトルの要素を生成するときに、乱数を用いて...
例えば、以下のように3つの引数を取ればよい。
$ ./serial 乱数シード 行列の行数 行列の列数(ベクトルの...
行列、ベクトルの要素の生成ルーチンをまとめたライブラリの...
/home/takizawa/array_gen.h
/home/takizawa/array_gen.c
このファイル内には以下の1つの関数が用意されている。
-void array_gen_init(int seed)
--引数に乱数生成時のシードを取る
--プログラム中、1度だけ実行する
-void create_random_array(int *array, int size)
--第1引数で与えられたINT型のポインタが指すアドレスから、...
--関数実行後、arrayが初期化されている。
以下のように使うこと。
#include "array_gen.h"
int seed, *matrix, matrix_len;
・・・
array_gen_init(seed);
matrix = (int *)malloc(・・・);
create_random_array(matrix, matrix_len);
・・・
free(matrix);
メインプログラムを「serial.c」とした場合、次のようにコン...
$ gcc -c array_gen.c
$ gcc -c -Wall serial.c
$ gcc -o serial serial.o array_gen.o
$ rm serial.o array_gen.o <- 必要ないなら削除してか...
ヒント&注意
-行列のメモリ領域は1つの連続的な領域として確保すること。...
int *matrix = (int *)malloc(行数 * 列数)
-計算結果のオーバーフローは考慮しなくてよい。
-メモリ管理が必要であること以外はJavaと同じように記述でき...
-以下のCの関数が参考になるかもしれない。使い方はWEBで検索...
atoi
free
malloc
printf
***MPIの基礎課題 [#c40d3253]
「Cの基礎課題」のプログラムをMPIを使って並列化する。
このとき、行列の分割は、「COLOR(BLUE){全てのプロセスが同...
すなわち、16x16行列が与えられ、2プロセスで計算する場合に...
この場合、行列の要素数は使用プロセス数で割り切れる必要が...
余裕があれば、任意のプロセス数で処理できるようにプログラ...
メインプログラムを「mpi.c」とした場合、次のようにコンパイ...
$ gcc -c array_gen.c
$ mpicc -c -Wall mpi.c
$ mpicc -o mpi mpi.o array_gen.o
$ rm mpi.o array_gen.o <- 必要ないなら削除してかま...
以下のように実行できるようにすること。
$ mpirun -np 4 -machinefile machines -nolocal ./mpi 乱数...
ヒント&注意
-MPIについては参考文献の1や2、3を参考にするとよい。
-行列データ、ベクトルデータの生成は1プロセス上でのみ行い...
-最後に各プロセスが計算した結果を1つのプロセスに集めるこ...
-実際、MPI_SendとMPI_Recvだけで実装できてしまう(通信関数...
-集団通信関数は、以下の3つを参考に。
MPI_Bcast
MPI_Gather
MPI_Scatter
-さらに、任意個のプロセスで実行できるようにするときには、...
MPI_Gatherv
MPI_Scatterv
***スパコンコンテスト課題 [#m8b7eed5]
[[課題(PDF):http://www.gsic.titech.ac.jp/supercon/super...
課題を解くために必要なファイルをPrestoIIIの以下の場所に置...
各自cpコマンドを用いて自分のホームディレクトリにコピーす...
/home/takizawa/sougouenshu/
このディレクトリには以下のファイルが置かれている。
- sc06.c & sc06.h
-- コンテスト問題用のルーチンが定義されているファイル。使...
-- ここで定義されているルーチン自体MPIを使って書かれてい...
- matrix/*.mat
-- サンプル行列データとコンテストで用いた行列データ
- progrule.html
-- コンテスト用のプログラム作成ルールが記述されているファ...
- slide.ppt
-- 渡辺先生がコンテストの説明用に作成したスライド
progrule.htmlとslide.pptはPrestoIII上では閲覧できない。
scpコマンドを用いてコピーすること(下記のコマンドをMAC上...
$ scp eugs0X@nimbus.titech.hpcc.jp:/home/takizawa/sougou...
コンパイル方法
$ mpicc -c sc06.c
$ mpicc -c YOUR_FILE.c
$ mpicc -o scon sc06.o YOUR_FILE.o
ヒント&注意
- 今回もシングルプロセスで動くものを作ってから並列化する...
- スパコンコンテストでは44x16CPU Coreを使っている。今回の...
-- 実は優勝者は1CPUしか使わなかった、という話もあるが
**課題の進め方 [#ib4f1098]
その1
-演習室MACでプログラムを編集
-scpコマンドでプログラムを実行環境(PrestoIIIクラスタ、TS...
-sshコマンドで実行環境にログイン
-実行環境でプログラムをコンパイル&実行
その2
-sshコマンドで実行環境にログイン
-実行環境上でviやemacs( -nw)などでプログラムを編集、コン...
***松岡研PCクラスタ PrestoIII の使い方 [#p9d75bfc]
-ログイン
++ログインノードnimbus.titech.hpcc.jpへログイン
$ ssh -l USERNAME nimbus.titech.hpcc.jp
++実行マシンへログイン
$ rsh pad018.titech.hpcc.jp
-リモートコピー
--使用端末(演習室のMACなど)から以下のコマンド
$ scp mpi.c USERNAME@nimbus.titech.hpcc.jp:
-使用するマシン
--18台
--/home/eugs0X/sougouenshu/machinesファイルを参考に
--使用するMPIはMPICH
***TSUBAMEの使い方 [#j5fbd017]
TSUBAMEでは「バッチキューイングシステム」が使われている。
バッチキューイングシステムでは、ユーザはジョブ(今回の場...
バッチキューイングシステムは、キュー内の計算機に空きがで...
ログイン
-login.cc.titech.ac.jpにssh
$ ssh -l YOUR_NAME login.cc.titech.ac.jp
-ログイン後、自動的にインタラクティブノード(tgg075001〜t...
-インタラクティブノードは4台しかないが、その上でアプリケ...
リモートコピー
-各自のコンピュータ(MAC)から手元のファイルをTSUBAMEにコ...
$ scp YOUR_FILE YOUR_NAME@login.cc.titech.ac.jp:
プログラムのコンパイル
-インタラクティブノードで行う。gcc、mpiccが利用可能。ただ...
$ mpicc -c sc06.c
$ mpicc -o scon.c
$ mpicc -o scon scon.o sc06.o
インタラクティブノード上でのプログラムの実行
-通常通りmpirunを使う。「-machinefile」、「-nolocal」オプ...
$ mpirun -np 4 ./PROG_NAME
バッチキューイングシステムを用いたプログラムの実行
-ジョブ投入
$ n1ge -N JOB_NAME -q default -mpi 4:2 ./PROG_NAME
-- -N JOB_NAMEはキューに登録する際のジョブの名前。指定し...
-- -q default
---使用するキューを指定。今回は「default」キューと「high...
-- -mpi 4:2
---MPIアプリケーションを実行することを表す。「-mpi 」の後...
--PROG_NAME
---アプリケーション実行ファイル。パスで指定する
--このコマンドはすぐに実行が終わる。バックグラウンドでジ...
--以下のように出力されたらOK。
stakizaw@tgg075003:/home0/usr1/stakizaw> n1ge -N bcast.4...
*n1ge> Number of CPUs for each node => 2
*n1ge> Total number of CPUs => 4
*n1ge> Checking which tool have the command you specifie...
*n1ge> Reading specific configuration file for each tool...
*n1ge> Creating qsub options....
*n1ge> Submitting Job to Cluster......
Your job 340322 ("bcast.4") has been submitted
--コマンド実行完了後、コマンドを実行したディレクトリに「J...
bcast.4.o340322
bcast.4.po340322
---JOB_NAME.oNUMはジョブの画面への出力(標準出力)をファ...
---JOB_NAME.poNUMはジョブの情報。開始時刻、使用したコンピ...
-ジョブ実行状況の確認
$ qstat -u USER_NAME
--指定したユーザのジョブの状況を確認できる
stakizaw@tgg075003:/home0/usr1/stakizaw> qstat -u stakizaw
job-ID prior name user state submit/sta...
--------------------------------------------------------...
340258 0.50500 LOGIN stakizaw r 10/30/2006 ...
340413 0.00000 bcast.4 stakizaw qw 10/30/2006 ...
---「r」stateは実行中を表し、「qw」stateは実行待ちを表す
-ジョブの削除
$ qdel JOB_ID
--JOB_IDはqstatの出力の第1要素のjob-ID
--終了を待たずにジョブを中断する場合や、実行開始されない...
**参考文献(URL) [#ze2b62e8]
+MPIによる並列プログラミングの基礎(PDF)
--[[http://mikilab.doshisha.ac.jp/dia/smpp/cluster2000/PD...
+MPI-1.1 Document(PDF)
--[[http://www.mpi-forum.org/docs/mpi1-report.pdf:http://...
--サイズが大きいので、ダウンロードして読むことを薦めます
+MPI Routines
--[[http://www-unix.mcs.anl.gov/mpi/www/www3/:http://www-...
+TSUBAME概要
--[[http://www.gsic.titech.ac.jp/%7Eccwww/Announce/newsys...
+TSUBAME
--[[http://www.gsic.titech.ac.jp/~ccwww/tgc/:http://www.g...
+TSUBAME利用の手引き(PDF)
--[[http://www.gsic.titech.ac.jp/%7Eccwww/tebiki/Riyou_Te...
--ジョブの実行方法に関しては24〜25ページ(文書中のページ...
+11月からの課金に向けたN1GE変更点について(PDF)
--[[http://www.gsic.titech.ac.jp/~ccwww/tgc/TITECH_N1GE_2...
ページ名:
既存のページ名で編集する