我在理解OpenCL 2D工作組維度時遇到問題。OpenCL 2D工作組維度
我想創建一個N×N矩陣,並將每行賦予一組工作組進行計算。 例如,如果我有一個1000×1000的矩陣,我想每行有10個工作組(每個工作組計算100個元素)和10000個工作組(總共10×1000)。
這一塊我的代碼:
size_t global_pattern[] = {n,n,0}; //My matrix pattern
size_t group_pattern[] = {workgroups_per_row, n, 0}; //My workgroups pattern
而且下面幾行:
err = clEnqueueNDRangeKernel(queue, kernel, 2, NULL, global_pattern,
group_pattern, 0, NULL, NULL);
哪些失敗。錯誤代碼是-54,它引用#define CL_INVALID_WORK_GROUP_SIZE -54。
我的group_pattern數組初始化是否正確?我的意思是,數組的第一個元素是指x座標,第二個是我假設的y座標? 背後的數學是什麼?
爲了調試的目的,我還試着用一個空內核運行它(只是爲了確保它不是我的代碼問題)。我也嘗試交換group_pattern數組中的第一個和第二個元素。
「哪個失敗」。那麼,什麼「失敗」? SEG_FAULTS是否會導致錯誤,在這種情況下,哪一個? – DarkZeros
err!= CL_SUCCESS,這是預期值。如果我嘗試將它作爲一維問題發揮作用。我不確定用我的代碼實現了我用我的問題描述的預期語義。有沒有更具體的錯誤信息的方法?錯誤值是-54,如果它可以幫助。 – Kami
如果錯誤不成功,那麼是錯誤是的,但有64種類型的錯誤代碼... – DarkZeros