1
我見過的解決方案是這樣的:OpenCL的,是出界將檢查內核重要
kernel dp_square (const float *a,
float *result)
{
int id = get_global_id(0);
result[id] = a[id] * a[id];
}
和
kernel dp_square (const float *a,
float *result, const unsigned int count)
{
int id = get_global_id(0);
if(id < count)
result[id] = a[id] * a[id];
}
於ID <計數重要的檢查,如果內核的工作會發生什麼項目嘗試處理一個不可用的項目? 在第一個例子中它可能不存在的原因是程序員只是確保全局大小等於要處理的元素數量(這是正常的)嗎?
超出範圍的訪問是一個錯誤,需要消除,並且在大多數情況下它會降低執行速度 – ardiyu07