I recently installed PGI 17.10 and I can compile my code fine.
The first thing I notice is that I can no longer run my executable directly, but am forced to use mpiexec even when running on 1 core. If I try to run without mpiexec I get
PREDSCI-GPU2:02165] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../../../orte/mca/ess/singleton/ess_singleton_module.c at line 458 [PREDSCI-GPU2:02165] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../../../orte/mca/ess/singleton/ess_singleton_module.c at line 166
Next, when I try to run the code I get a seg fault:
[PREDSCI-GPU2:02194] *** Process received signal *** [PREDSCI-GPU2:02194] Signal: Segmentation fault (11) [PREDSCI-GPU2:02194] Signal code: Invalid permissions (2) [PREDSCI-GPU2:02194] Failing at address: 0x7f0dbf8ec460
I tested the compiler on another OpenACC code I have and it worked fine with mpiexec.
The main difference in the codes is the present code uses manual deep copy for derived types. Prior to 17.10, I could only get the code to work by adding a “present(v)” in addition to “default(present)” as the default was not invoking a present on the type correctly (but was detecting the type’s members i.e. v%r(i,j,k)).
In 17.10, the compiler output seems to not be invoking "present"s for the types members anymore.
I thought that perhaps the added present clauses I needed in 17.9 were no longer necessary and were the problem but when I removed them all, although the compile output DOES show the type and its members being implicitly “present”, the code still seg faults.
Could this have to do with the OpenMPI library being updated? I do not think so since my other MPI+OpenACC code works.
The code is too large to reproduce here, and I unfortunately do not have the time to produce a sample small code that reproduces the problem (especially since I do not know which part of the code is seg faulting - I tried using pgdgb but the line is says makes no sense).
I was wondering if anyone else has come across this and what I can do to work around it.