Changes between Version 15 and Version 16 of CALプログラミング(4)


Ignore:
Timestamp:
Mar 22, 2009 11:22:05 AM (16 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • CALプログラミング(4)

    v15 v16  
    7171 "r77.y"の意味について補足すると、256になるのは、id = 0のメモリが"res0[256][256]"として宣言されているからである。 
    7272 
    73  * よってILプログラムのこの部分は、2次元配列用のポインタ演算ををおこなっているのと同等である。細かく説明すると、r2.x(1次元目の添え字に対応)が0から1ずつ増えていき、256に等しくなったたら、それを0にクリアし、r2.y(2次元目の添え字に対応)をインクリメントしている。 
     73 * よってILプログラムのこの部分は、2次元配列のポインタ演算をおこなっているのと同等である。細かく説明すると、r2.x(1次元目の添え字に対応)が0から1ずつ増えていき、256に等しくなったたら、それを0にクリアし、r2.y(2次元目の添え字に対応)をインクリメントしている。 
    7474  
    75  * この13-18行を基にすることで、任意のサイズの2次元配列のランダムアクセスが可能であることがわかると思う。 
     75 * この13-18行を基にすることで、任意のサイズの2次元配列のランダムアクセスが可能であることがわかると思う。このILプログラムの場合、アクセスパターンが一定でありバースト的なため、GPUの内部構造に(特にキャッシュ機構)に適しており、非常に高速に動作する。一方、もしランダムアクセスを実装すると、メモリ読み込みのレイテンシーがパフォーマンスの問題となる可能性がある。 
    7676 
    7777 * "calResAllocLocal2D"または"CalResAllocRemote2D"で確保した場合でも、それぞれの次元でのサイズの最大値は8192と思われる。よって、ひとつのメモリ領域に割り当て可能な最大メモリ量は、256M個のfloat変数(またはLocalの場合、ボードの搭載メモリ量の制限値まで)になる。(この項詳しく調べる必要あり)