我从CUDA移到了OpenCL。运算符在OpenCL内核中重载
在CUDA我是能够做到操作符重载:
__device__ bool operator != (const uint2 a, const uint b)
{
return ((a.x != b) && (a.y != b));
}
我可以做的OpenCL内核中的一样吗?
我从CUDA移到了OpenCL。运算符在OpenCL内核中重载
在CUDA我是能够做到操作符重载:
__device__ bool operator != (const uint2 a, const uint b)
{
return ((a.x != b) && (a.y != b));
}
我可以做的OpenCL内核中的一样吗?
我不知道他们是否仍处于测试阶段,但AMD根据本在其最新测试版提供对它的支持: Key capabilities of OpenCL Static C++ include kernel and function overloading, kernel and member templates, inheritance, friend classes, and more.
任何当前版本的OpenCL(1.0号OpenCL的核心语言, 1.1或1.2)是OpenCL C-- C99的扩展和子集版本,不具有运算符重载 - 或者用于重载用户函数。
未来版本的OpenCL可能会将其扩展为基于C++的OpenCL内核语言,从而允许操作员重载 - 但这尚未标准化或无法广泛使用。
OpenCL仅限于C99的子集。 AFAIK不支持重载操作符。 – talonmies 2012-04-26 21:33:31
不可以。在AMD的OpenCL中,我可以将-x clC++添加到编译器选项中。之后,我可以做,例如,功能重载。 – atom 2012-04-26 21:38:15
@atz所以你说的函数重载是C++特性而不是C特性? – mfontanini 2012-04-26 21:40:53