=============================== GRAPE ソフトウェアパッケージ grapepkg version 1.1.2 =============================== 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 5,10,11 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/ ディレ クトリについては川井敦に帰属します。 ------------------------------------------------------------------------------- MIT ライセンス (日本語訳) 以下に定める条件に従い、本ソフトウェアおよび関連文書のファイル (以下 「ソフトウェア」)の複製を取得するすべての人に対し、ソフトウェアを無制 限に扱うことを無償で許可します。これには、ソフトウェアの複製を使用、複 写、変更、結合、掲載、頒布、サブライセンス、および/または販売する権利、 およびソフトウェアを提供する相手に同じことを許可する権利も無制限に含ま れます。 上記の著作権表示および本許諾表示を、ソフトウェアのすべての複製または重 要な部分に記載するものとします。 ソフトウェアは「現状のまま」で、明示であるか暗黙であるかを問わず、何ら の保証もなく提供されます。ここでいう保証とは、商品性、特定の目的への適 合性、および権利非侵害についての保証も含みますが、それに限定されるもの ではありません。作者または著作権者は、契約行為、不法行為、またはそれ以 外であろうと、ソフトウェアに起因または関連し、あるいはソフトウェアの使 用またはその他の扱いによって生じる一切の請求、損害、その他の義務につい て何らの責任も負わないものとします。 ------------------------------------------------------------------------------- MIT ライセンス (原文) The MIT Software License: Copyright (c) 2009-, K&F Computing Research Co. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------- 7. 謝辞 ======= 本ソフトウェアパッケージの作成、改変には以下の方の協力を頂きました。 ここに感謝の意を表します: 似鳥 啓吾 (理化学研究所) 8. 改変履歴 =========== -------------------------------------------------------------------------------------------------- version date author note -------------------------------------------------------------------------------------------------- 1.1.4 12-Mar-2010 TF GRAPE-DR 用 G6 ライブラリの不具合を修正。 1.1.3 23-Dec-2009 TF GRAPE-DR model2000, model460の新しい制御回路に対応。 GRAPE-DR 用 G5 API にカットオフ機能を追加。 GRAPE-DR 用 G6 API に後方互換性を維持するための修正を摘要。 1.1.2 28-Sep-2009 TF パッケージ管理用ツールを改良。 1.1.1 19-Sep-2009 AK 文書の英語版を追加。 1.1.0 17-Sep-2009 AK, TF GRAPE-DR model2000, model460 に対応。管理スクリプトを改良。 1.0 17-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)