Open bryandesser opened 5 years ago
Thanks Bryan, I'll update the source code and also see if I can reproduce the error in a simple program to send to PGI
Made the suggested fixes to muSTEM but I can't reproduce it in a simple program. I've tried every combination of global variables (which is what nopiy and nopix are), functions that return arrays (which is what make_absorptive_grates) and all different data types, so the actual problem with the PGI compiler might lie deeper.
I have found that certain newer versions of PGI throw memory allocation issues during the Pre-calculation setup stage when they encounter
if(.not. )
statements that are not followed bythen
and a newline +endif
. There are only a handful of these lines across the 4 simulation types (s_absorptive_tem.f90
,s_absorptive_stem.f90
,s_qep_tem.f90
,s_qep_stem.f90
). Seems to be a simple fix, for example:Original: (118, s_absorptive_tem.f90)
if(.not.load_grates) projected_potential = make_absorptive_grates(nopiy,nopix,n_slices)
Fixed:
I have seen this issue on PGI 18 and 19 community editions, on two HPC clusters (Ohio Supercomputer Center and M3 Massive) as well as a local workstation running Ubuntu. All were compiled with CUDA 9 or 10.