- 254 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 13:54:06 ]
- >>253
あくまでも漏れの場合ですが、 ブロック数=16。これは使っているカードの「Multi Processor」に合せて。 違うグリッドに属するデータのやり取りは出来ない事に注意。 スレッド数=512。目安で。 で、カーネル関数でループで処理を回す場合、最外では for (i = 0; i < maxcalccount; i=i+スレッド数×ブロック数) のようにします。これで8192単位での並列化になります。 ループ内部では、グローバルメモリからたとえば1ワード読むなら sharedメモリ[スレッドID] =グローバルメモリ[スレッド数×ブロック数+ブロックID×スレッド数+スレッドID] となります。 floatを使う場合、スレッドが512なら、各スレッドで最大8ワードもてますが、 sharedメモリは使い切らないほうが良いようです。
|

|