2012-04-26 70 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内核语言,从而允许操作员重载 - 但这尚未标准化或无法广泛使用。