0
たとえば、このコードスニペットは通常どおりコンパイルされ実行されますか?通常のポインタ演算はopenclカーネルで機能しますか?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
たとえば、このコードスニペットは通常どおりコンパイルされ実行されますか?通常のポインタ演算はopenclカーネルで機能しますか?
int* end = local_buffer + BUFFER_SIZE;
for(int* x = local_buffer; x < end; ++x)
{
...
}
ポインタ演算が機能しますが、ポインタに適切なメモリ空間を注釈する必要があります。だからあなたの例のコードは、最も可能性の高い間違っている:local_buffer
が
local int local_buffer[BUFFER_SIZE];
として宣言されている場合、end
とx
変数の種類必見もlocal
specfierを持っている:
local int* end = …;
for (local int* x = …
デフォルトはglobal
あり、あなたのポインタがローカルメモリまたは定数メモリに入っていれば、物事はひどく失敗します。私は多くのOpenCLの実装がこれについてあなたに警告していないことを知ったので、あなたは非常に慎重でなければなりません。
はい、ポインタがすべてデバイス領域にある限りです。問題ない。 – DarkZeros