我從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