- // $HOME is a special case
- args = append(args, "--home="+v)
- } else {
- env = append(env, "SINGULARITYENV_"+k+"="+v)
+ // Singularity treates $HOME as special case, this is handled
+ // with --home above
+ continue
+ }
+ env = append(env, "SINGULARITYENV_"+k+"="+v)
+ }
+
+ // Singularity always makes all nvidia devices visible to the
+ // container. If a resource manager such as slurm or LSF told
+ // us to select specific devices we need to propagate that.
+ for _, s := range os.Environ() {
+ if strings.HasPrefix(s, "CUDA_VISIBLE_DEVICES=") {
+ env = append(env, "SINGULARITYENV_"+s)