加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 07:12:54 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Doxygen记录使用CUDA C编写的项目.文档工作正常.然而,调用者图不包括GPU_foo()中的内核调用. 例如,在这个简单的例子中: #includestdio.h/*! * @brief global hello foo */__global__ void global_hello(void){printf("Hellon");}/*! * @brie
我正在尝试使用Doxygen记录使用CUDA C编写的项目.文档工作正常.然而,调用者图不包括GPU_foo<<<<>>>>()中的内核调用.

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

#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用<<<>>>来解释这些行?作为函数调用?
有人建议改变Doxygen的内部解析器方法,应该怎么做呢?

解决方法

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

引用doxygen manual:

Note
The completeness (and correctness) of the call graph depends on the doxygen code parser which is not perfect.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读