繁体   English   中英

如何让Doxygen知道CUDA内核调用?

[英]How can I make Doxygen aware of CUDA kernel calls?

我正在尝试使用Doxygen记录使用CUDA C编写的项目。 文档工作正常。 但是,调用者图形不包括GPU_foo<<<1,1>>>()内核调用。

例如,在这个简单的例子中:

#include<stdio.h>

/*!
 * @brief global hello foo
 */
__global__ void global_hello(void){

printf("Hello\n");

}


/*!
 * @brief CPU hello foo
 */
void hello(void){

printf("Hello\n");
}

/*!
 * @brief main
 */
int main(){

 hello();

 global_hello<<<1,1>>>();

return 0;
}

使用相应的Doxyfile:

PROJECT_NAME = TEST
PROJECT_NUMER = 2.1

OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES
FILE_PATTERNS = *.cpp *.h *.c *.cu
RECURSIVE = NO 
PDF_HYPERLINKS = YES
USE_PDFLATEX   = YES
HAVE_DOT = YES
CALL_GRAPH = YES
CALLER_GRAPH = YES

查看生成的文档时,调用图如下所示:

main -----> hello

而不是期望的:

      ------> global_hello
    /
main
    \
      ------> hello

如何让Doxygen知道CUDA内核调用?

问题是Doxygen不知道包含“<<< >>>”的行是函数调用。 我不需要调用图来区分函数调用和内核调用。 如果解析器将内核视为普通函数调用就足够了。

总结。 有没有办法告诉Doxygen用<<< >>>作为函数调用来解释这些行? 有人建议改变Doxygen的内部解析器方法,应该怎么做呢?

如果doxygen无法识别CUDA功能,那么您无能为力:

引用doxygen手册

注意调用图的完整性(和正确性)取决于不完美的doxygen代码解析器。

并且doxygen的代码解析器不易扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM