[ET Trac] [Einstein Toolkit] #1065: Pass CCTK_ARGUMENTS more efficiently in Fortran

Einstein Toolkit trac-noreply at einsteintoolkit.org
Tue Aug 28 13:25:07 CDT 2012


#1065: Pass CCTK_ARGUMENTS more efficiently in Fortran
-------------------------+--------------------------------------------------
 Reporter:  eschnett     |       Owner:     
     Type:  enhancement  |      Status:  new
 Priority:  major        |   Milestone:     
Component:  Other        |     Version:     
 Keywords:               |  
-------------------------+--------------------------------------------------
 CCTK_ARGUMENTS is passed differently in C and in Fortran. In C, only a
 single pointer is passed, pointing to cctkGH. The cctk_... variables and
 pointers to grid functions are defined locally from cctkGH. This is
 efficient, because (a) only a single variable is passed, and (b) the
 compiler can eliminate unused definitions.

 In Fortran, all the cctk_... variables and all grid functions are passed
 explicitly. This is expensive for the caller, because hundreds of
 arguments have to be set up and passed to the subroutine. The compiler
 cannot eliminate any unused variables.

 I suggest to change the Fortran calling convention to be the same as the
 one for C. Since regular Fortran pointers differ significantly from C
 pointers, I suggest to use "Cray pointers" instead, which are very similar
 to C pointers. Cray pointers are an extension to the Fortran standard, and
 are supported by all Fortran compilers I know of.

 I attach sample code that shows how to declare, define, and use this
 convention.

-- 
Ticket URL: <https://trac.einsteintoolkit.org/ticket/1065>
Einstein Toolkit <http://einsteintoolkit.org>
The Einstein Toolkit


More information about the Trac mailing list