I’m working on a complex fortran model where the main loop calls multiple nested subroutines. I have the loop working and outputting correct values when compiled with target=mp. However, when I compile and run on a Tesla device I get an illegal address exception that happens inside my first subroutine when initializing a private real scalar. I have a handful of scalers that are uninitialized at loop start but are passed between device routines. I’ve discovered through trial and error that they must be declared private or I get inconsistent results. However the illegal address error goes away on the Tesla device if I don’t declare the scalers private and the loop runs successfully but with incorrect output.
I’m in the process of putting together a sample code snippet to recreate the problem, but i’ve been cornered on this for a few days now. Does this sound familiar to anyone?