2013-03-24 31 views
2

我想將我的內核函數中聲明的本地內存傳遞給另一個函數進行一些處理。我想控制它,這樣我所有的指針在本地空間中聲明,以及:作爲函數參數的本地存儲器中的本地存儲器的OpenCL指針?

void funcB(__local float * __local p) 
{ 
} 

__kernel void funcA() 
{ 
    __local float data[256]; 
    __local float * __local ptr; 
    ptr = data; 
    funcB(ptr); 
} 

和funcB聲明不起作用,因爲: 錯誤:參數不能與地址空間

合格有沒有辦法做這樣的事情?謝謝!

+0

這可能有所幫助:http://stackoverflow.com/questions/11978024/opencl-store-pointer-to-global-memory-in-local-memory – Thomas 2013-03-24 06:34:54

+0

該帖子是在正確的軌道上,但沒有提到它的用法作爲函數參數。不管怎麼說,還是要謝謝你! – bluesy 2013-03-24 12:23:14

回答

2

從OpenCL的規格1.2 6.5.4節:

all variables inside non-kernel functions, and all function arguments are in the __private or private address space.

由於非核心功能inlinded所以我不知道你想通過反正這樣做是爲了完成什麼。

+0

這似乎是答案。謝謝。 – bluesy 2013-03-26 18:16:06