X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/927524f1be454de021180b74999d682780b8cb6b..83864f0f77a37ef8212fd4c3eca268ae9bad4bbb:/lib/crunchrun/singularity.go?ds=sidebyside diff --git a/lib/crunchrun/singularity.go b/lib/crunchrun/singularity.go index cda10aa611..942de4300e 100644 --- a/lib/crunchrun/singularity.go +++ b/lib/crunchrun/singularity.go @@ -10,6 +10,7 @@ import ( "os" "os/exec" "sort" + "strings" "syscall" "time" @@ -284,6 +285,15 @@ func (e *singularityExecutor) execCmd(path string) *exec.Cmd { 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) + } + } + args = append(args, e.imageFilename) args = append(args, e.spec.Command...)