我正在尝试使用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的内部解析器方法,应该如何进行?
EXTENSION_MAPPING
,例如这里,会发生什么? - Robert Crovella