如何让Doxygen知道CUDA内核调用



我正在尝试使用Doxygen记录一个用CUDA C编写的项目。文档工作正常。然而,调用程序图并不包括GPU_foo<<<1,1>>>()中的内核调用。

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

#include<stdio.h>
/*!
 * @brief global hello foo
 */
__global__ void global_hello(void){
printf("Hellon");
}

/*!
 * @brief CPU hello foo
 */
void hello(void){
printf("Hellon");
}
/*!
 * @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用<lt<>>>作为函数调用?有人建议改变Doxygen的内部解析器方法,应该如何做到?

如果doxygen不能识别CUDA函数,你就无能为力:

引用doxygen手册:

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

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

最新更新