2012-04-26 43 views
3

我從CUDA移到了OpenCL。運算符在OpenCL內核中重載

在CUDA我是能夠做到操作符重載:

__device__ bool operator != (const uint2 a, const uint b) 
{ 
    return ((a.x != b) && (a.y != b)); 
} 

我可以做的OpenCL內核中的一樣嗎?

+3

OpenCL僅限於C99的子集。 AFAIK不支持重載操作符。 – talonmies 2012-04-26 21:33:31

+0

不可以。在AMD的OpenCL中,我可以將-x clC++添加到編譯器選項中。之後,我可以做,例如,功能重載。 – atom 2012-04-26 21:38:15

+0

@atz所以你說的函數重載是C++特性而不是C特性? – mfontanini 2012-04-26 21:40:53

回答

4

任何當前版本的OpenCL(1.0號OpenCL的核心語言, 1.1或1.2)是OpenCL C-- C99的擴展和子集版本,不具有運算符重載 - 或者用於重載用戶函數。

未來版本的OpenCL可能會將其擴展爲基於C++的OpenCL內核語言,從而允許操作員重載 - 但這尚未標準化或無法廣泛使用。