Fx10やMICを最大限利用した行列演算を作成し、競ってください。
このテストプログラムをリンクし、測定を行います。 その際に、Fx10とMIC向けの設定項目が存在ので注意してください。(コンパイラやエンディアンが異なるため)
-
適当なx86やamd64のマシン(自分のラップトップなど)でg++によりビルドする場合
- srcの中にある、mymulmat.cppを変更する
- このREADME.mdがあるディレクトリに移動して、
makeコマンドを実行 - 生成されるmain.binを実行する
- 問題セットを変更したい場合は、data/list-intel.txtを変更する。
-
FX10向けにビルドする場合
- Makefileを開き、PLATFORMの項目をFX10に変更する
- data/list.txtのシンボリックリンクを、data/list-fx10.txtに張り替える。
dataディレクトリにcdした後、
ln -fs list-fx10.txt list.txtを実行すればできる。 - srcの中にある、mymulmat.cppを変更する
- このREADME.mdがあるディレクトリに移動して、
makeコマンドを実行 - run.bashの中のrscgrp, node, elapseなどを適切に設定し、
pjsub run.bashを実行 pjstatコマンドでタスクが終わるのを確認する- run.bash.oXXXXXXのようなファイルに結果が書き込まれているのを確認する
- 問題セットを変更したい場合は、data/list-fx10.txtを変更する。
-
MIC向けにビルドする場合
- Makefileを開き、PLATFORMの項目をXEONPHIに変更する
- srcの中にある、mymulmat.cppを変更する
- このREADME.mdがあるディレクトリに移動して、
makeコマンドを実行 - 出来上がったmain.bin、及びdataディレクトリをmicに転送し、実行する。
- 問題セットを変更したい場合は、data/list-intel.txtを変更する。
また、main.binを始めとする副生成物を削除したい場合は、
make clean
を実行してください。
MPIを利用する際には、Makefileに以下の変更を加える必要があります。
- USEMPIオプションを1にする
- 利用するプラットフォームのCXXを変更する
- MYLOCALであれば、g++からmpic++に変更する
- FX10であれば、FCCpxからmpiFCCpxに変更する
- XEONPHIであれば、iccからmpiiccに変更する
プログラムの全体の実行の流れとしては以下のようになるので注意してください。
- [ALL] MPI::Init()
- [ALL] mymulmatのコンストラクタ
- [ALL] mymulmat.init n,m,kは全てのプロセスに同じものが渡されます。
- [RANK0] A, Bに値がセットされる
- [ALL] mymulmat.multiply A, Bのブロードキャストは各自で実行してください。
- [RANK0] Cをテスト
- [ALL] mymulmatのデストラクタ
- [ALL] MPI::Finalize()
./main.bin : リスト中のの中からランダムにファイルを取ってきて実行
./main.bin -h : ヘルプ
./main.bin -v : バージョン
./main.bin -t type : タイプを指定して実行。typeとしてはfree, mv(mat-vec), trmm(Aが上三角), symm(Aが対称), square(正方)がある。
別にリポジトリを自分で作ってしまって、mymulmat.(cpp|h)をシンボリックリンクに置き換えてしまうのが手軽でよいと思います。
適当なデータセットでプログラムを走らせ、WRONGが0であればそのデータセットにおいてテストが通っていると言えます。
正式な競技内容に関しては検討中です。 詳細が決まるのをお待ちください。
測定結果をうまく表示するためのシステムを用意しようと考えています。 実装をお待ちください。
Makoto Shimazu shimazu@eidos.ic.i.u-tokyo.ac.jp
BSD 2-Clause License