我正在尝试使用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不知道包含“&lt;&lt;&gt;&gt;&gt;&gt;”的行是一个函数调用。我不需要调用图来区分函数调用和内核调用。如果解析器将内核视为正常的函数调用就足够了。
综述。有没有办法让Doxygen用&lt;&lt;&lt;&gt;&gt;&gt;来解释这些行?作为函数调用? 有人建议改变Doxygen的内部解析器方法,应该怎么做?
答案 0 :(得分:1)
如果doxygen无法识别CUDA功能,那么您无能为力:
注意强> 调用图的完整性(和正确性)取决于不完美的doxygen代码解析器。
doxygen的代码解析器不易扩展。