让eclipse解析或忽略CUDA内核启动参数

Make eclipse parse or ignore CUDA kernel launch parameters

本文关键字:CUDA 内核 启动 参数 eclipse      更新时间:2023-10-16

我正在做一个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添加到用于索引的配置中