4

我从 CUDA 搬到了 OpenCL。

在 CUDA 中,我能够进行运算符重载:

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

我可以在 OpenCL 内核中做同样的事情吗?

4

2 回答 2

5

没有。任何当前版本的 OpenCL(1.0、1.1 或 1.2)的 OpenCL 内核语言都是 OpenCL C - C99 的扩展和子集版本,它不具有运算符重载 - 或者就此而言,用户函数的重载。

未来版本的 OpenCL 可能会将其扩展为具有基于 C++ 的 OpenCL 内核语言,从而允许运算符重载——但这尚未标准化或广泛可用。

于 2012-05-01T19:55:28.917 回答
1

我不知道他们是否仍处于测试阶段,但 AMD 在他们的最新测试版中提供了支持: OpenCL Static C++ 的关键功能包括内核和函数重载、内核和成员模板、继承、友元类等等。

于 2012-04-27T19:00:10.607 回答