让eclipse解析或忽略CUDA内核启动参数
Make eclipse parse or ignore CUDA kernel launch parameters
我正在做一个c++项目,使用c++ 11和CUDA。
我想使用eclipse的语法高亮显示和解析功能,特别是go to symbol和实时错误检查。然而,当我使用"纯"eclipse时,CUDA内核启动参数表表法通过<<<…>>>中断解析,整个调用被标记为无效。当我使用Eclipse Nsight 7时,它不会解析c++ 11相关的东西,比如constexpr,因此无法解析我的模板类型。(参见https://devtalk.nvidia.com/default/topic/830892/nsight-editor-does-not-parse-c-11-shows-syntax-error/)
有没有办法(hack, plugin,…)让普通的eclipse处理那些<<<…>>>?
对于这个特殊的问题(支持constexpr
),您现在可以使用CUDA 9附带的insight (基于CDT 8.4)。
使用nsight插件自定义CDT(需要CUDA 9)
如果你仍然想使用最新的CDT版本,CUDA 9有一个新的选择:它附带了一个安装程序<cuda-install-path>/bin/nsight_ee_plugins_manage.sh
,允许将insight插件添加到现有的eclipse安装中。
CUDA 9之前
一个解决方法是将内核启动封装在宏中:#ifdef PARSED_BY_ECLIPSE
#define CALL_CUDA_KERNEL(cmd) (void)0 /* do nothing */
#else
#define CALL_CUDA_KERNEL(cmd) cmd
#endif
并将符号PARSED_BY_ECLIPSE
添加到用于索引的配置中
相关文章:
- CUDA内核和数学函数的显式命名空间
- 将 2D 推力::d evice_vector 复矩阵传递给 CUDA 内核函数
- 如何将矢量的数据传递给 CUDA 内核?
- 无法在 cuda 内核中使用我的模板类
- CUDA内核printf()在终端中不产生输出,在探查器中工作
- 编译为 cuda 内核调用提供了"expression must have integral or unscoped enum type"
- 使用模板模式优化 CUDA 内核
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- CUDA 内核在第二次运行时运行得更快 - 为什么?
- 在CUDA内核中传递一个常数整数
- 如何将函数作为CUDA内核参数传递
- 验证调用 cuda 内核的次数
- cuda 内核调用/传递参数中的编译错误
- 预期;在 CUDA 内核上
- CUDA 内核"Only a single pack parameter is allowed"解决方法?
- 降低CUDA内核运行时:内核中矩阵的动态内存分配
- 如何在多个 GPU 上同时执行 cufftXt 和 CUDA 内核
- 执行 CUDA 内核时黑屏C++输出正确的结果
- CUDA 内核中的竞争条件
- 优化三角矩阵计算的 CUDA 内核执行