Discussion:
Setting environment variables for executable on nodes with srun
Dirk Schubert
2014-10-09 10:13:29 UTC
Permalink
Hello!

I am Dirk Schubert from Allinea Software Ltd. and I am currently in the
process of implementing scalable debugging (Allinea DDT) and profiling
(Allinea MAP) support for SLURM (srun).

To make it convenient for our users we preload certain libraries (our
memory debugging or profiling sampler for example) with the executable
via LD_PRELOAD/LD_LIBRARY_PATH.

We usually achieve this by exporting certain environment variables to
the compute nodes via a special option of "mpirun", e.g. mpirun -x
LD_PRELOAD=libmap-profiler.so ... for OpenMPI.

However, with srun I could not find such an option. Maybe I overlooked
an obvious option or another possibility?

The closest option I found is using --task-prolog. But the user is able
to override this and only one prolog can be registered per application,
so we can't use --task-prolog.

Thanks &
Kind regards,

Dirk Schubert
--
Dirk Schubert - Lead Software Developer || Allinea Software
j***@public.gmane.org
2014-10-09 17:09:32 UTC
Permalink
srun exports all environment variables to the launched task. In Slurm
version 14.11 there is an srun option to add more environment
variables. This is from the srun man page:

--export=<environment variables | NONE>
Identify which environment variables are propagated to the laucnhed
application. Multiple environment variable names should be comma
separated. Environment variable names may be specified to propagate
the current value of those variables (e.g. "--export=EDITOR") or
specific values for the variables may be exported (e.g..
"--export=EDITOR=/bin/vi"). By default all environment variables are
propagated.
Post by Dirk Schubert
Hello!
I am Dirk Schubert from Allinea Software Ltd. and I am currently in
the process of implementing scalable debugging (Allinea DDT) and
profiling (Allinea MAP) support for SLURM (srun).
To make it convenient for our users we preload certain libraries
(our memory debugging or profiling sampler for example) with the
executable via LD_PRELOAD/LD_LIBRARY_PATH.
We usually achieve this by exporting certain environment variables
to the compute nodes via a special option of "mpirun", e.g. mpirun
-x LD_PRELOAD=libmap-profiler.so ... for OpenMPI.
However, with srun I could not find such an option. Maybe I
overlooked an obvious option or another possibility?
The closest option I found is using --task-prolog. But the user is
able to override this and only one prolog can be registered per
application, so we can't use --task-prolog.
Thanks &
Kind regards,
Dirk Schubert
--
Dirk Schubert - Lead Software Developer || Allinea Software
--
Morris "Moe" Jette
CTO, SchedMD LLC
Dirk Schubert
2014-10-13 09:14:38 UTC
Permalink
Hi Morris,

thanks for the useful information.

I have one question, though. When doing "srun --export=EDITOR=/bin/vi",
does this mean EDITOR is propagated in addition to all other environment
variables or is EDITOR the only one which is propagated?

Regards,
Dirk
--
Dirk Schubert - Lead Software Developer || Allinea Software
Post by j***@public.gmane.org
srun exports all environment variables to the launched task. In Slurm
version 14.11 there is an srun option to add more environment
--export=<environment variables | NONE>
Identify which environment variables are propagated to the laucnhed
application. Multiple environment variable names should be comma
separated. Environment variable names may be specified to propagate
the current value of those variables (e.g. "--export=EDITOR") or
specific values for the variables may be exported (e.g..
"--export=EDITOR=/bin/vi"). By default all environment variables are
propagated.
Post by Dirk Schubert
Hello!
I am Dirk Schubert from Allinea Software Ltd. and I am currently in
the process of implementing scalable debugging (Allinea DDT) and
profiling (Allinea MAP) support for SLURM (srun).
To make it convenient for our users we preload certain libraries (our
memory debugging or profiling sampler for example) with the
executable via LD_PRELOAD/LD_LIBRARY_PATH.
We usually achieve this by exporting certain environment variables to
the compute nodes via a special option of "mpirun", e.g. mpirun -x
LD_PRELOAD=libmap-profiler.so ... for OpenMPI.
However, with srun I could not find such an option. Maybe I
overlooked an obvious option or another possibility?
The closest option I found is using --task-prolog. But the user is
able to override this and only one prolog can be registered per
application, so we can't use --task-prolog.
Thanks &
Kind regards,
Dirk Schubert
--
Dirk Schubert - Lead Software Developer || Allinea Software
Loading...