在*.cl文件(或字符串)中不支持用class、template等!
在*.cl文件(或字符串)中不支持给struct定义构造函数或成员函数!
在*.cl文件(或字符串)中不支持函数默认参数,例如:void test(int a, int b = 1)。
以上,不管是OpenCL 1.2,还是OpenCL 3.0版本,都不支持C++;这两个版本是硬件支持最多的。所以,就不要怀疑自己语法那里不对,而是不支持、不支持、不支持!!!
-------------------------------------------------------------------------------------------------
而中间的临时提议的版本2.2(好像没有硬件厂家支持),提出的规范中给出了C++的标准,见文档“The C++ for OpenCL 1.0 and 2021 Programming Language Documentation”,按照文档头文件中有“__OPENCL_CPP_VERSION__”的字样。
The C++ for OpenCL 1.0 and 2021 Programming Language Documentation 不支持!
其他参考:
- https://www.coder.work/article/808577
- https://stackoverflow.com/questions/38251762/is-it-possible-to-write-opencl-kernels-in-c-rather-than-c
- https://blog.csdn.net/aggs1990/article/details/134307065