我無法確定如何處理大小小於全局大小在clEnqueueNDRangeKernel
中設置的數組。在OepnCl中不適合全局大小的數組
在我的原子計算中,全局大小由原子數設置。這是位置,速度和力量的大小。然後,我做一個僞歸約,並將數據存儲在大小與數量相對應的數組中。我也有一個小陣列來存儲這對配對的參數。
我對該職位沒有任何問題,我宣佈他們爲__global const double4 *positions
。我的問題是關於另外兩種。根據我的理解,一個線程與每個數組元素相關聯,但這不是我想要的小陣列。要我去最好的辦法是通過參數數組作爲__const
或__private
,但我不知道我可以傳遞一個數組作爲__private
(像我這樣做與標量),並將其設置爲__const
產生錯誤:
:149:80: error: invalid address space for pointee of pointer argument to __kernel function
__global float2 *atom_type,__global const double *atmmass, __const double8 *two_body_type,
關於我的reduce數組,現在我通過它作爲__global
輸出只是垃圾。當我聲明它爲__const
時,我得到與上面相同的錯誤,無論如何,我想這將是一個問題,以後找回數據。
你們會怎麼做?
上面提到的錯誤已解決。我的錯誤是使用'__const'而不是'__constant'。 – Eric