Quantcast

documentation of cuda fortran code

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

documentation of cuda fortran code

Jian Tao Zhang
Hello,

I am trying to document a source code which includes fortran90 and some cuda fortran files. Doxygen handles fortran90 very well, but it has issues with recognizing subroutines in cuda fortran code. In the below example code, the module mod_index is documented properly, but the subroutine idx is not documented. The cause of that I found is that "attributes(device)", a syntax of cuda fortran, is in front of subroutine. If I remove "attributes(device)" from the source code, then doxygen can list the subroutine idx as a member of the module mod_index. 

It's almost impossible to remove by hand as too many places in the code. I was hoping something more automatic. I tried enabling preprocessor and predefined macros, but I need more information to understand it better. I use doxygen 1.8.11 on windows 7 machine.

+++++++++++++++++++++
module mod_index
     use cudafor
     implicit none

     contains

     attributes(device) subroutine idx(i,j)
     integer :: i,j,k
        ~~~~~~~~ 
     end subroutine
end module mod_index
+++++++++++++++++++++

Thanks
Tao
---
Jian Tao Zhang
MSc Mechanical Engineering

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: documentation of cuda fortran code

albert
Dear Tao,

Cuda Fortran has indeed some special extensions, that can be removed by means of preprocessing, but one has to see to it that the FORTRAN code is preprocessed. A FORTRAN file can be preprocessed when its extension is in capitals. In the later case setting:
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = attributes(device)=

should be sufficient.

Albert

On Sat, Apr 23, 2016 at 4:21 AM, Jian Tao Zhang <[hidden email]> wrote:
Hello,

I am trying to document a source code which includes fortran90 and some cuda fortran files. Doxygen handles fortran90 very well, but it has issues with recognizing subroutines in cuda fortran code. In the below example code, the module mod_index is documented properly, but the subroutine idx is not documented. The cause of that I found is that "attributes(device)", a syntax of cuda fortran, is in front of subroutine. If I remove "attributes(device)" from the source code, then doxygen can list the subroutine idx as a member of the module mod_index. 

It's almost impossible to remove by hand as too many places in the code. I was hoping something more automatic. I tried enabling preprocessor and predefined macros, but I need more information to understand it better. I use doxygen 1.8.11 on windows 7 machine.

+++++++++++++++++++++
module mod_index
     use cudafor
     implicit none

     contains

     attributes(device) subroutine idx(i,j)
     integer :: i,j,k
        ~~~~~~~~ 
     end subroutine
end module mod_index
+++++++++++++++++++++

Thanks
Tao
---
Jian Tao Zhang
MSc Mechanical Engineering

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users



------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: documentation of cuda fortran code

Jian Tao Zhang
Hi Albert,

This works great. I used the macro expansion, but what I didn`t know before is that the file extension needs to be in capital for preprocessing. After I changed file .cuf to .CUF, I got the documentation I wanted. 

Thanks very much for your help.

Tao
---
Jian Tao Zhang
MSc Mechanical Engineering

On Sat, Apr 23, 2016 at 9:05 AM, Albert <[hidden email]> wrote:
Dear Tao,

Cuda Fortran has indeed some special extensions, that can be removed by means of preprocessing, but one has to see to it that the FORTRAN code is preprocessed. A FORTRAN file can be preprocessed when its extension is in capitals. In the later case setting:
MACRO_EXPANSION        = YES
EXPAND_ONLY_PREDEF     = YES
PREDEFINED             = attributes(device)=

should be sufficient.

Albert

On Sat, Apr 23, 2016 at 4:21 AM, Jian Tao Zhang <[hidden email]> wrote:
Hello,

I am trying to document a source code which includes fortran90 and some cuda fortran files. Doxygen handles fortran90 very well, but it has issues with recognizing subroutines in cuda fortran code. In the below example code, the module mod_index is documented properly, but the subroutine idx is not documented. The cause of that I found is that "attributes(device)", a syntax of cuda fortran, is in front of subroutine. If I remove "attributes(device)" from the source code, then doxygen can list the subroutine idx as a member of the module mod_index. 

It's almost impossible to remove by hand as too many places in the code. I was hoping something more automatic. I tried enabling preprocessor and predefined macros, but I need more information to understand it better. I use doxygen 1.8.11 on windows 7 machine.

+++++++++++++++++++++
module mod_index
     use cudafor
     implicit none

     contains

     attributes(device) subroutine idx(i,j)
     integer :: i,j,k
        ~~~~~~~~ 
     end subroutine
end module mod_index
+++++++++++++++++++++

Thanks
Tao
---
Jian Tao Zhang
MSc Mechanical Engineering

------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users




------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
Doxygen-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/doxygen-users
Loading...