由于OpenCL/CUDA语法,如何关闭Eclipse中的错误/警告? 我使用Eclipse作为OpenCL的编辑器,我打开了代码代码> *.Cl< /Cl>文件的语法高亮显示,就像C++代码一样。它工作得很好,但我所有的代码都被划为语法错误。有没有一种方法可以让我的语法突出和关闭错误/警告,只是为了我的代码> *.Cl< /Cl>文件> < P>,Eclipse语法HyLoad被编程为C和C++的语法,而不是OpenCL,所以它不知道OpenCL的语法扩展,例如 新关键字 新数据类型
我建议新的关键字可以有条件地定义为零,例如由于OpenCL/CUDA语法,如何关闭Eclipse中的错误/警告? 我使用Eclipse作为OpenCL的编辑器,我打开了代码代码> *.Cl< /Cl>文件的语法高亮显示,就像C++代码一样。它工作得很好,但我所有的代码都被划为语法错误。有没有一种方法可以让我的语法突出和关闭错误/警告,只是为了我的代码> *.Cl< /Cl>文件> < P>,Eclipse语法HyLoad被编程为C和C++的语法,而不是OpenCL,所以它不知道OpenCL的语法扩展,例如 新关键字 新数据类型,eclipse,syntax-highlighting,cuda,opencl,nvidia,Eclipse,Syntax Highlighting,Cuda,Opencl,Nvidia,我建议新的关键字可以有条件地定义为零,例如 #define __kernel #define __global 另外,额外的类型名称也可以用类似的方法处理,例如 #define float2 float #定义了只在Eclipse编辑器中应用于OpenCL代码编译的而不是。定义可以在Eclipse首选项中设置,也可以在内核代码本身中保护 #ifndef __OPENCL_VERSION__ /* Define out keywords causing errors */ #endif
#define __kernel
#define __global
另外,额外的类型名称也可以用类似的方法处理,例如
#define float2 float
#定义了只在Eclipse编辑器中应用于OpenCL代码编译的而不是。定义可以在Eclipse首选项中设置,也可以在内核代码本身中保护
#ifndef __OPENCL_VERSION__
/* Define out keywords causing errors */
#endif
这将有一个小问题,因为它消除了Eclipse中导航视图中函数重载之间的区别
理想的答案是重新编程CDT编辑器(Eclipse中解析您键入的文本并对其执行分析的部分),以了解OpenCL,但是这将是一项巨大的努力。除了ggrussel的答案之外,我还做了以下步骤,这些步骤为我提供了一个可接受的语法高亮显示,同时避免了eclipse(为开普勒测试)的其他问题
#ifndef __OPENCL_VERSION__
#define kernel
#define global
#define constant
#define local
typedef struct float2 {
float x, y;
} float2;
typedef struct float3 {
float x, y, z;
float2 xy, xz, yx, yz, zx, zy;
} float3;
typedef struct float4 {
float x, y, z, w;
float2 xy, yx;
float3 xyz, xzy, yxz, yzx, zxy, zyx;
} float4;
... etc
#endif
请注意,您需要定义对基本数据类型的所有可能的访问组合,就像它们在自己的字段中一样。由于对于较大的原语(如vec8),这可能会变得相当长,因此如果使用此类原语,可能需要使用一些脚本自动预生成这些字段#include "eclipseFakeOpenCL.h"
kernel void nextIntersect() {
float4 a,b;
a.xzy = (float3)(1.0, 1.0, 0.0);
b.xy = a.yx;
}
不过,OpenCL文件中的include指令仍然没有得到普遍支持。我没有意识到这一点,如果OpenCL中的include指令有问题,我认为最简单的解决方案是将#ifndef移到.CL文件中。哪些平台不支持它们?