upcxx-run fails to propagate environment with MPI spawner
As of pull request #103 (merged 525ef5f as 2019.3.7), we now have a upcxx::getenv_console
that is intended to allow applications to reliably retrieve envvars from the spawning console.
This feature works correctly for tightly integrated systems such as the Cray XC and cluster systems using the GASNet ssh spawner, which includes propagation logic. However when using the mpi spawner on loosely coupled systems, we are still relying upon mpirun
to do the propagation, and upcxx-run
is not currently passing the options to ensure this occurs correctly.
As a result, when running UPC++ programs on clusters (such as dirac) and setting GASNET_IBV_SPAWNER=mpi
(to force MPI spawning instead of the default ssh-spawner), getenv_console
might not correctly retrieve values from the console environment. I've reproduced this using OpenMPI 2.1.2 on dirac.
Based on my testing, newer versions of OpenMPI (4.0.0) seem to have grown some automated propagation support that masks this problem, but we'd like to avoid relying upon that implicit behavior.
I will be looking into this.
Comments (2)
-
reporter -
reporter - changed status to resolved
issue
#265: Add a upcxx-run -E optionNew
upcxx-run -E VAR
option can be used to request propagation of user-defined environment variables to compute processes.Fixes issue
#265→ <<cset cffe35d15390>>
- Log in to comment
Proposed solution in pull request #125