22 | | なお、現時点ではDD演算用に特化しているため、アプリケーションもC++でコンパイルする必要がある。 |
23 | | === int GDRsetup(void) === |
24 | | XXX |
| 22 | なお、現時点ではDD演算用に特化しているため、GDRLIBとアプリケーションは、どちらもC++でコンパイルする必要がある。将来的にはより汎用的なデザインと置き換える。以下に出てくるDDやQDは、qd-2.3.7ライブラリにより定義された四倍精度、八倍精度変数のclassである。 |
| 23 | |
| 24 | === int GDRsetup() === |
| 25 | GRAPE-DRボードの利用を開始する。これによりボードなどの初期化処理がおこなわれる。正しく初期化ができた場合は0が返り値になる。(現バージョンはエラーチェックなし) |
| 26 | |
| 27 | === int GDRcleanup() === |
| 28 | GRAPE-DRボードの利用を終了する。ダミー。 |
| 29 | |
| 30 | === void GDRrun(int n) === |
| 31 | GRAPE-DRボードでの計算を開始する。引数nは、ループ回数である。この関数は、以下にでてくるデータ転送関数を適切に実行したあとで、呼ぶことにより、実際の計算がボードで実行される。この関数はボードでの計算が終わるまでブロックする。 |
| 32 | |
| 33 | === int GDRwriteQD_BM(int i, int n, qd_real *p) === |
| 34 | BMにQD変数のデータをn個書き込む。iは書き込む場所(変数)を指定する。通常、BMデータはループの回数分だけ必要なので、nはループの回数と等しい。配列q[]のサイズはn以上でなければならない。現バージョンでは、すべてのBBに同じデータを書き込む。さらに、GRAPE-DRでは4要素のベクトル処理が基本動作であるが、この関数は4要素全てにq[]を書き込む。 |
| 35 | |
| 36 | === void GDRtransferBM(int n) === |
| 37 | BMのデータを転送する。GDRwriteQD_BM()は実際には内部バッファへのコピーしかしないので、この間数を呼ぶことでボードへの転送がおこなわれる。この関数は転送が終わるまでブロックする。 |