簡體   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