Version 3 (modified by nakasato, 16 years ago) (diff) |
---|
- 何か役立つ計算をおこなうためには、ループ処理が必須となる。CALでループ処理を実装してみよう。
- /home/nakasato/CALTEST3"にループを使った計算例のプログラムを置いたので、自分のディレクトリにコピーして実行すること。
gpu1[~/CALTEST3] ./hellocal 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 55.000000 Press enter to exit...
- このプログラムは、1から10までの合計を計算するプログラムである。
- なお、このプログラムから、kernelプログラムは別ファイルとして処理している。"hellocal.cpp"の34-51行にて、"prog.il"というファイルを読み込んでいる。kernelプログラムのみに変更を加える場合には、このファイルを変更するだけでよくて、再度makeする必要はない。
- "hellocal.cpp"の本体部分は、これまでのプログラムとほとんど変わりがない。入出力用の配列を2次元から1次元としたことが大きな違いである。69-70行で、"calResAllocLocal1D()"によって1次元のメモリを確保している。この入力用のメモリには、78-84行にて1からnx(=256)の数字を代入している。
- 計算domainは(0, 0, 256, 1)としている(109行)ので、256個の論理プロセッサにて"prog.il"が実行される。
- kernelプログラムは、前と比べるとかなり変更がある。重要な変更点は:
- "dcl_literal"による定数値の宣言と利用
- "whileloop"によるループ処理の記述
- データを読み込むポインタの更新
以下、個々の点について詳しく説明する。
Attachments (1)
- CALTEST3.tar.gz (8.6 KB) - added by nakasato 16 years ago.
Download all attachments as: .zip