0

私の入力文字配列は 1024 で、任意のローカル アイテム サイズ = 32 を指定しました。私の各ワークアイテムは 16 文字で作業しています。グローバル アイテム サイズ = 64 を指定しました。私のカーネルでは、次のように data_tid を計算しました。

int offset=16;
int gr_id=get_group_id(0);
int id = get_global_id(0);
int data_tid=(gr_id*32+id)*offset;

NVIDIA Geforce 9800GT を使用しています。私のコードは浮動小数点例外をスローしています。これは、ローカル サイズで割り切れない global_size が原因であることは既に確認しましたが、私の場合は割り切れます。

どこに問題があるのか​​誰か教えてください。

4

1 に答える 1

0

get_local_idの代わりに使用したいget_global_id。ローカル ID は、各グループ内の作業項目のインデックスです。グローバル ID は、範囲全体における作業項目のインデックスです。

直接使用することもできますint data_tid = get_global_id(0) * offset;

于 2012-09-12T20:08:08.703 に答える