#1065: Pass CCTK_ARGUMENTS more efficiently in Fortran --------------------------+------------------------------------------------- Reporter: eschnett | Owner: Type: enhancement | Status: new Priority: major | Milestone: Component: Other | Version: Resolution: | Keywords: --------------------------+-------------------------------------------------
Comment (by rhaas):
I did some experiments with Cray pointers on my own and found that adding {{{ CCTK_REAL, DIMENSION(cctk_lsh(1),cctk_lsh(2),cctk_lsh(3)) :: evolution_mask CCTK_POINTER_TO_CONST :: evolution_mask_ptr pointer (evolution_mask_ptr, evolution_mask) }}} to EinsteinEvolve/GRHydro/src/GRHydro_Con2Prim.F90/check_GRHydro_C2P_failed around line 2238 leads to an internal compiler error with intel ifort 11.1 20100414 {{{ COMPILING arrangements/Zelmani/GRHydro/src/GRHydro_Con2Prim.F90 0_1855
: catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error. in file arrangements/Zelmani/GRHydro/src/GRHydro_Con2Prim.F90, line 2220, column 12
compilation aborted for configs/bns_all/build/GRHydro/GRHydro_Con2Prim.f90 (code 3) }}}
Note that I do not actually access the pointer at all. The ICE goes away if I comment out the OpenMP pragmas further down in the routine or if instead of cctk_lsh(1...2) I hard-code the pointee dimensions (say to 1,2,3 which of course is wrong).
So unless a workaround is found or CCTK_ARGUMENTS somehow does not trigger this then using Cray pointers (while a good idea I think) is not possible right now.