=============================== GRAPE ソフトウェアパッケージ grapepkg version 1.0 =============================== grapepkg は各種 GRAPE 用のライブラリや管理ソフトウェア、ドキュメント、 サンプルプログラムを統合したソフトウェアパッケージです。当社開発による GRAPE-DR, GRAPE-7 に加え、GRAPE-6A, GRAPE-6BX, Phantom-GRAPE-5 向けの ソフトウェアも統合されています。 パッケージには以下のものが含まれています。 ./00readme-j -- パッケージの概要説明 ./00readme -- 00readme-j の英語版 (準備中) ./doc/ -- ユーザガイド、リファレンスマニュアル、その他の文書 ./script/ -- パッケージ管理用のツール (インストール、バックアップ等) ./include -- ヘッダファイル ./lib/ -- ライブラリ ./driver/ -- GRAPE-DR, GRAPE-7 用デバイスドライバ ./hibutil/ -- GRAPE-DR, GRAPE-7 用 Host Interface Bridge (HIB) に関連する各種ソフトウェア ./gdr/ -- GRAPE-DR 用の各種ソフトウェア ./g7/ -- GRAPE-7 用の各種ソフトウェア ./g6a/ -- GRAPE-6A 用の各種ソフトウェア ./g6bx/ -- GRAPE-6BX 用の各種ソフトウェア ./pg5/ -- Phantom-GRAPE-5 用の各種ソフトウェア ./sample/ -- サンプルコード ./sample/direct/ -- 直接法、equal timestep による多体計算コード。言語:C ./sample/directf/ -- 直接法、equal timestep による多体計算コード。言語:Fortran ./sample/vtc/ -- Barnes-Hut ツリー、equal timestep による多体計算コード。言語:C ./sample/s9/ -- 直接法、equal timestep による多体計算コード。言語:C ./sample/s8/ -- 直接法、block timestep による多体計算コード。言語:C ./sample/pairwise/ -- 2 体間相互作用の精度を検査するコード。言語:C ./init/ -- 粒子分布のスナップショット。本パッケージが GRAPE の動作テスト に使用します。 ./tmp/ -- 本パッケージが内部的に使用します。 ./ttf/ -- GRAPE-7 model300, model600 用の回路データ (.ttf) このディ レクトリはオプションです。取得した grapepkg の種別に よっては、このディレクトリが含まれていない場合があります。 このディレクトリ内のファイルは当社 Web サイトより別途 ダウンロードできます (http://www.kfcr.jp/grape7.html)。 目次 ==== 1. インストールと使用準備 1.1 パッケージのインストール 1.2 GRAPE-DR の使用準備 1.3 GRAPE-7 の使用準備 1.4 GRAPE-6A の使用準備 1.5 GRAPE-6BX の使用準備 1.6 Phantom-GRAPE-5 の使用準備 2. コンパイルとリンク 3. 環境変数 3.1 GDEVICE : 計算資源の割り当て 3.2 GWARNLEVEL : 警告メッセージの制御 4. サンプルプログラム 5. 動作確認済みのプラットフォーム 6. ライセンスと著作権 7. 謝辞 8. 改変履歴 9. 連絡先 1. インストールと使用準備 ========================= 1.1 パッケージのインストール ---------------------------- 本パッケージをインストールするには以下のコマンドを実行し、指示に従って ください。なお下記の $pkgroot は grapepkg の最上位ディレクトリを表します。 $pkgroot/script/install 1.2 GRAPE-DR の使用準備 ----------------------- ホスト計算機を起動しなおす毎に、以下 (1)〜(4) の手続きが必要です。 (1) [要 root 権限] デバイスドライバのインストール ディレクトリ $pkgroot/driver/ にて、以下のコマンドを実行してください。 make installmodule このコマンドにより、GRAPE-DR 用のデバイスドライバが Linux カーネル にリンクされます。正常にリンクされると、/sbin/lsmod の出力に hibdrv という文字列が含まれるようになります。 (2) [要 root 権限] MTRR の設定 ディレクトリ $pkgroot/driver/ にて、以下のコマンドを実行してください。 ./setmtrr このコマンドにより、ホスト計算機の MTRR (memory type range register) が "write-combining" モードに設定されます。この設定によっ て、ホスト計算機から GRAPE への Programmed I/O Write (PIOW) 方式に よるデータ転送の速度が向上します。 注意 1: ホスト計算機の設定によっては MTRR を設定できないことがあります (メ モリを 4GB 以上搭載している場合や、8 個すべての MTRR が他の PCI デ バイスによって既に使用されている場合など)。この場合には MTRR の設 定は行わないまま、以降すべての手続きを行って下さい。MTRR を設定し た場合に比べるとホスト計算機から GRAPE への転送性能が低下しますが、 それ以外のすべての機能は正常に動作します。 注意 2: Linux kernel バージョン 2.6.26 以降で、page attribute table (PAT) サポートが有効になっている場合には、MTRR の設定は不要です。PAT サ ポートの有無は、Linux kernel のヘッダファイル autoconf.h (e.g. /usr/src/linux/include/linux/autoconf.h) で確認できます。ファ イル内で定数 CONFIG_X86_PAT が定義されていれば PAT サポートは有効 になっています。 (3) GRAPE-DR の初期化 以下のコマンドを実行してください。GRAPE-DR チップやボードの初期化 と、簡単な動作テストを行います。 $pkgroot/script/config model450, model1800 をお使いの方への注意: model450, model1800 の初期化には、上記コマンドの代わりに、それぞれ $pkgroot/gdr/test/config450 $pkgroot/gdr/test/config1800 をお使いください。 (4) GRAPE-DR の動作チェック 以下のコマンドを実行してください。GRAPE-DR を用いて重力多体計算を 行い、得られた結果と、あらかじめ用意されている正解とを比較します。 $pkgroot/script/check model450, model1800 をお使いの方への注意: model450, model1800 の初期化には、上記コマンドの代わりに、それぞれ $pkgroot/gdr/test/check450 $pkgroot/gdr/test/check1800 をお使いください。 1.3 GRAPE-7 の使用準備 ---------------------- ホスト計算機を起動しなおす毎に、以下 (1)〜(3) の手続きが必要です。 (1) 「GRAPE-DR の使用準備 1.2-(1), 1.2-(2)」に従って、デバイスドライバのインス トールとMTRR の設定を行ってください。 (2) [model300, model600 のみ] FPGA 内部回路のコンフィグレーション カード上に搭載されている演算用 FPGA (pFPGA) に、重力演算回路 G5PIPE を書き込みます。この作業は Model 100 および Model 800 には 不要です。 ディレクトリ $pkgroot/g7/config/ にて、以下のコマンドを実行してください。 ./config [devid] このコマンドにより、デバイス ID として devid を持つカードの pFPGA に内部回路が書き込まれます。引数 devid を省略した場合にはデバイス ID 0 番のカードへ書き込みます。システムにカードを 1 枚しかインストー ルしていない場合には、そのカードのデバイス ID は 必ず 0 となるため、 引数は省略できます。複数のカードをインストールしている場合には、書 き込みを行うカードのデバイス ID を確認し、コマンドconfig への引数 として指定する必要があります。デバイス ID の確認にはコマンド $pkgroot/script/lsgrape を用います。 (3) 「GRAPE-DR の使用準備 1.2-(4)」に従って、動作チェックを行ってください。 GRAPE-7 のインストール方法、使用準備に関するより詳しい説明は「GRAPE-7 インストールガイド」($pkgroot/doc/g7install-j.pdf) を参照してください。 G5PIPE (GRAPE-7 用 GRAPE-5 互換回路) の使用法については「G5PIPE ユーザ ガイド」($pkgroot/doc/g5user-j.pdf) を参照してください。 1.4 GRAPE-6A の使用準備 ----------------------- (1) [要 root 権限] デバイスドライバのインストール ディレクトリ $pkgroot/g6a/pcimem/ にて、以下のコマンドを実行してください。 make installmodule このコマンドにより、GRAPE-6A 用のデバイスドライバが Linux カーネル にリンクされます。正常にリンクされると、コマンド /sbin/lsmod の出 力に pcimem という文字列が含まれるようになります。 (2) 初期化 ディレクトリ $pkgroot/g6a/lib/ にて、 g6aconfig を実行します。 (3) 動作チェック ディレクトリ $pkgroot/g6a/s8 にて、 make s8     s8 を実行し、$pkgroot/g6a/s8/sample.1k と比較します。 1.5 GRAPE-6BX の使用準備 ------------------------ (1) [要 root 権限] デバイスドライバのインストール ディレクトリ $pkgroot/g6bx/pcixmem/ にて、以下のコマンドを実行してください。 make installmodule このコマンドにより、GRAPE-6BX 用のデバイスドライバが Linux カーネル にリンクされます。正常にリンクされると、コマンド /sbin/lsmod の出 力に pcixmem という文字列が含まれるようになります。 (2) 動作チェック ディレクトリ $pkgroot/g6bx/s8 にて、 make s8     s8 を実行し、$pkgroot/g6bx/s8/sample.1k と比較します。 1.6 Phantom-GRAPE-5 の使用準備 ------------------------------ Phantom-GRAPE-5 はパッケージのインストールを完了次第、すぐに使用できます。 使用前の準備手続きは不要です。 2. コンパイルとリンク ===================== ユーザの作成したアプリケーションコードから各種 GRAPE を使用するために は、アプリケーションプログラムに制御ライブラリのヘッダファイルをインク ルードし、また制御ライブラリ本体をリンクします。 制御ライブラリの API には GRAPE-5 相当の機能を持つ G5 API と、GRAPE-6 相当の機能を持つ G6 API の 2 種類が用意されています。GRAPE-7, Phantom-GRAPE-5 には G6 API はありません。また GRAPE-7 には G5nb API が用意されています。G5nb API は G5 API に近傍粒子検索用の API を追加し たものです。G5 API, G5nb API の詳細については、それぞれ「G5PIPE ユーザ ガイド」($pkgroot/doc/g5user-j.pdf) 「G5nbPIPE ユーザガイド」 ($pkgroot/doc/g5nbuser-j.pdf) を参照してください。 各 GRAPE の使用時に必要なヘッダおよびライブラリは下表の通りです。 ------------------------------------------------------------------- GRAPE の種別 API ヘッダ ライブラリ ------------------------------------------------------------------- GRAPE-DR G6 g6util.h libgdr6.a libhib.a libm.a G5 g5util.h libgdr5.a libhib.a libm.a GRAPE-7 G5 g5util.h libg75.a libhib.a libm.a G5nb g5nbutil.h libg75nb.a libhib.a libm.a GRAPE-6A G6 g6util.h libg6a6.a libm.a G5 g5util.h libg6a5.a libm.a GRAPE-6BX G6 g6util.h libg6bx6.a libg6bxhib.a libm.a G5 g5util.h libg6bx5.a libg6bxhib.a libm.a Phantom-GRAPE-5 G5 g5util.h libpg55.a libm.a ------------------------------------------------------------------- コンパイルオプションの例: アプリケーションコード foo.c から G6 API を介して GRAPE-DR を使用 cc -o foo foo.c -L$pkgroot/lib -I$pkgroot/include -lgdr6 -lhib -lm アプリケーションコード foo.c から G5 API を介して GRAPE-7 を使用 cc -o foo foo.c -L$pkgroot/lib -I$pkgroot/include -lg75 -lm 3. 環境変数 =========== GRAPE-DR, GRAPE-7 用制御ライブラリは、以下の環境変数によって挙動を制御 できます。なおこれらの環境変数は、GRAPE-6A, GRAPE-6BX 用の制御ライブラ リでは使用されません。 3.1 GDEVICE : 計算資源の割り当て -------------------------------- システムに複数枚のカードがインストールされている場合、GRAPE の制御ライ ブラリはすべてのカードを使用して計算を行おうとします。この挙動を変更す るには、使用したいカードのデバイス ID を環境変数 GDEVICE に列挙します。 例えば以下の設定: csh> setenv GDEVICE "0 2 3" sh> export GDEVICE="0 2 3" により、G5 の標準関数はデバイス ID 0 番、2 番、3 番 のカードを使用する ようになります。この環境変数はひとつのシステムを他のユーザと共同で利用 する際に役立ちます。 なお GRAPE-DR model1800/2000/4000, GRAPE-7 model 800 については、同一 のカードに搭載されている複数の演算チップに、別個のデバイス ID が割り当 てられます。そのためそれぞれのチップを独立した GRAPE とみなし、別個の 計算に使用することも可能です。例えばシステムに 1 枚の GRAPE-DR model 1800 のみがインストールされている場合、以下の設定: csh> setenv GDEVICE "0 2" sh> export GDEVICE="0 2" を行うと、カード上の 0 番および 2 番の GRAPE-DR チップを使用して計算が 行われます。使用されていない 1 番および 3 番のチップは、他の計算に使用 することが可能です。 3.2 GWARNLEVEL : 警告メッセージの制御 ------------------------------------- 警告メッセージの出力を制御します。この変数は 0, 1, 2, 3 のいずれかの値 を取り得ます。大きな値を設定するほど、より詳細なメッセージが出力されま す。通常利用の際には 1 か 2 を設定することをお勧めします。3 はデバッグ 時に便利かもしれません。0 を設定すると致命的なエラーメッセージ以外の一 切のメッセージが出力されなくなります。動作テスト用プログラム ( $pkgroot/script/check) 実行時には、この変数の値を 0 には設定しないでく ださい。0 に設定するとテストが正常に行われません。 4. サンプルプログラム ===================== 各種 GRAPE を使用するサンプルプログラムがディレクトリ $pkgroot/sample/ 以下に用意されています。原則的には、リンクするライブラリを変更するだけ で、同じサンプルプログラムから各種の GRAPE を用いることができます。た だしすべてのプログラムがすべての GRAPE に対応しているわけではありません。 例えば $pkgroot/sample/direct/ には、直接法による多体計算のサンプルプ ログラムが用意されています。パッケージのインストール時に、このサンプル の各種 GRAPE 向け実行ファイル direct_gdr, direct_g7, direct_g6bx, direct_pg5 が生成されます (順に GRAPE-DR, GRAPE-7, GRAPE-6BX, Phantom-GRAPE-5 向け) が、GRAPE-6A 向けの実行ファイルは生成されません。 5. 動作確認済みのプラットフォーム ================================= Fedora Core 10 x86_64 CentOS 5 x86_64 6. ライセンスと著作権 ===================== 本ソフトウェアパッケージの利用許諾は MIT ライセンスに従います。ただし $pkgroot/driver/ ディレクトリ、$pkgroot/g6a/pcimem/ ディレクトリ、 $pkgroot/g6bx/pcixmem/ ディレクトリについては GNU General Public License (GPL) に従います。 本ソフトウェアパッケージの著作権は株式会社 K&F Computing Research (以 下 KFCR 社と記す) に帰属します。 ただし Phantom-GRAPE-5、つまり $pkgroot/pg5/ ディレクトリに置かれたソー スコードのうち $pkgroot/pg5/phantom_g5mc.c を除いた部分については似鳥 啓吾 (理化学研究所) に帰属します。$pkgroot/pg5/phantom_g5mc.c について は KFCR 社に帰属します。 また、$pkgroot/g6a/ ディレクトリ、$pkgroot/g6bx/ ディレクトリから $pkgroot/g6a/pcimem/ ディレクトリ、$pkgroot/g6bx/pcixmem/ ディレクトリ を除いた部分については福重俊幸に帰属します。$pkgroot/driver/ ディレク トリ、$pkgroot/g6a/pcimem/ ディレクトリ、$pkgroot/g6bx/pcixmem/ ディレ クトリについては川井敦に帰属します。 7. 謝辞 ======= 本ソフトウェアパッケージの作成、改変には以下の方の協力を頂きました。 ここに感謝の意を表します: 似鳥 啓吾 (理化学研究所) 8. 改変履歴 =========== -------------------------------------------------------------------------------------------------- version date author note -------------------------------------------------------------------------------------------------- 1.0 15-Jul-2009 A. Kawai, 初版作成。gdrpkg0.32, g7pkg2.2.1, g6apkg1.1, g6bx, T. Fukushige phantom_limited_accuracy_080110 をベースに改変、統合。 -------------------------------------------------------------------------------------------------- 9. 連絡先 ========= お問い合わせおよびバグレポートは下記へお願いします: K&F Computing Research (support@kfcr.jp)