Q&A

このページでは,これまでにいただいた質問とその回答の中で, 他参加チームにも有益と思われるものを掲載します.

コンテスト全体について

gpuc01 (gpuc02)マシンにトラブルがあるようなのですが.

下記の連絡先へご連絡ください. チームごとに,利用計算機をgpuc01もしくはgpuc02に割り当てておりますが, もう一台のほうでも同じトラブルがあるかご確認いただければと 思います.

片方だけトラブルがある場合は,下記連絡先へ ご連絡いただいた上で,もう一台の計算機で作業して いただいて結構です. その場合,時間のロスを少なくするために,委員会からの返事を待たなくとも 構いません.

規定課題部門と自由課題部門の両方に参加することはできますか?

それぞれの参加資格を満たせば,できます. その場合は,それぞれの部門用のフォーマットを 使って,それぞれメールで申し込んでください.

規定課題部門について

規定課題ではGPUをいくつまで使ってよいのですか?

コンテスト用マシン一台は,GPU(Tesla C1060)を2つ備えています. 一台が持つGPUであれば,1GPUを用いても2GPUを用いても構いません.

コンテスト用マシンの詳細については,申し込みチーム(基本的に代表者)に メールでお知らせしておりますが,万一連絡がない場合はお知らせください.

複数GPUを用いるために,スレッドを利用することはできますか?

pthreadを各GPUのために立ち上げ,各スレッドが cudaSetDevice()を呼ぶことにより それぞれのGPUを使うことができます. 引数としてあたえるデバイス番号は,それぞれ0と1であることを 前提として結構です.

その場合でも,tk_init, tk_answer, tk_finalizeに ついては,各APIについて,1スレッドのみが1回づつ呼ぶ必要があります. たとえば複数スレッドがそれぞれtk_initを呼ぶことは許されません.

なおコンテスト用計算機にはgccから利用可能なOpenMPもインストールされています. OpenMPに関する質問はできる範囲で受付ますし,動作する ことを期待しておりますが,委員会として 必ずしも動作を保証するものではありません.

上記以外の方法については,別途ご質問ください.

ツールキットのサンプルプログラムでは,各点の更新のために 「X方向の補間4回,Y方向の補間1回」としています. これを「Y方向の補間4回,X方向の補間1回」として良いですか?

規定課題のルールでは,マニュアルに記述の通り「サンプルプログラムと数学的に 同等なアルゴリズムであればOK」です.

ご質問のようにXとYを入れ替え「Y方向の補間4回,X方向の補間1回」の方式は, サンプルプログラムと数学的に同等ですので,OKです.

ちなみに,上記の方式は2つとも,「補間に用いる16点を通る二次元の三次多項式を 求め,その多項式に補間点座標を代入する」という方式と数学的に同値です. ただ,一般的には二次元三次多項式を求めるのは性能的に損と考えられます.

(2010/02/25追加) ルールでは,移流計算やGPUへのデータ転送は,tk_init関数の後に記述 することになっています.それ以外の命令(cudaSetDeviceやcudaMallocなど) はtk_initの前に実行して良いでしょうか. 例えば,tk_initの前にcudaSetDeviceなどを実行しておくと,表示される 実行時間が1秒近く短縮されるようですが.

はい,ルールを守っている限り,実行しても良いです.

ただしcudaMallocについては,問題サイズをユーザプログラムが 知ることができるのは,tk_init呼び出し後であることにご注意 ください.

(2010/03/05追加) サンプルプログラムの実行結果にあるSpeedとは何を表して いるのでしょうか?

tk_answerを呼び出したときの表示の中に, 「tk_answer: Speed is 464.500 x 10^6 updates per second」 のような行があります. このSpeedは,「1秒あたりに更新した格子点の数」 を表示しています.

問題の領域サイズをnx, ny, 計算するステップ数をntとすると, 合計での更新格子点数は(nx-4)*(ny-4)*ntとなります (4を引いているのは境界領域の分). この値を,計算時間(CLOCKで示される)で割ったものが, Speedとなります.

自由課題部門について

自由課題に応募していますが,特別賞(グリッド協議会金融分科会特別賞)にも 興味があります.両方のレポートを提出することはできますか?

自由課題部門に参加する各チームが提出できるレポートの数は,以下の通り とします.

合計で最大二本となります.

その他

質問やバグ情報は gpu2010@matsulab.is.titech.ac.jp までお願いします.