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