MICやGPUを最大限利用した行列演算を作成し、競ってください。
このテストプログラムをリンクし、測定を行います。 その際に、MICとGPU向けの設定項目が存在するので注意してください。(コンパイラが異なるため)
まずオリジナルのリポジトリからforkします。 その後以下のコマンドを入力してください。
git clone --recursive git@gitlab.eidos.ic.i.u-tokyo.ac.jp:(Your Name)/mm.git
make
./main.bin --version
./main.bin --help
-
適当なx86やamd64のマシン(自分のラップトップなど)でg++によりビルドする場合
- srcの中にある、mymulmat.cppを変更する
- このREADME.mdがあるディレクトリに移動して、
make
コマンドを実行 - 生成されるmain.binを実行する
- 問題セットを変更したい場合は、data/list-intel.txtを変更する。
-
MIC向けにビルドする場合
- include.mkを開き、PLATFORMの項目をXEONPHIに変更する
- srcの中にある、mymulmat.cppを変更する
- このREADME.mdがあるディレクトリに移動して、
make
コマンドを実行 - 出来上がったmain.bin、及びdataディレクトリをmicに転送し、実行する。
- 問題セットを変更したい場合は、data/list-intel.txtを変更する。
-
GPU向けにビルドする場合
- include.mkを開き、PLATFORMの項目をCUDAに変更する
- srcの中にある、mymulmat.cppとcuda.cuを変更する
- このREADME.mdがあるディレクトリに移動して、
make
コマンドを実行 - 問題セットを変更したい場合は、data/list-intel.txtを変更する。
また、main.binを始めとする副生成物を削除したい場合は、
make clean
を実行してください。
このReadme.mdがあるディレクトリで以下のコマンドを入力し、ライブラリもまとめてアップデートしてください。
cd mm-core
git pull
cd ..
make full_clean
MPIを利用する際には、include.mkに以下の変更を加える必要があります。
- USEMPIオプションを1にする
- 利用するプラットフォームのCXXを変更する
- MYLOCALであれば、g++からmpic++に変更する
- 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(正方)がある。
Forkを行い、自分のユーザーでリポジトリをかんりするといい感じです。
適当なデータセットでプログラムを走らせ、WRONGが0であればそのデータセットにおいてテストが通っていると言えます。
以下の2点を総合的に評価します。
- 最大効率を発揮(1ノードあたり)
- 最大FLOPSを発揮(複数ノードで)
最大FLOPSの場合ノードの無駄遣いにご注意ください。 スケールしなければ、多くとも100ノード程度に抑えましょう。
データサイズ・データの型はfloat/double/だいたい正方行列系であれば、メモリに乗る限り自由です。
データの作り方は、mm-answer-generator
を参照。
過去のスライドもあるので、見てもいいし、見なくてもいいです。その辺は競技者同士で話し合って決めてください。 頑張ってください!
mm-result-senderをつかって結果ファイル(result.dat)を送信できます。 実装は少しお待ちください。
Makoto Shimazu shimazu@eidos.ic.i.u-tokyo.ac.jp