X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/042f47a2c6b5f3db80142164b6493c873aca0b26..03a0562aedc85d2f5fd3ded8830e8948051c0331:/lib/crunchrun/singularity.go?ds=sidebyside diff --git a/lib/crunchrun/singularity.go b/lib/crunchrun/singularity.go index 942de4300e..879c46c898 100644 --- a/lib/crunchrun/singularity.go +++ b/lib/crunchrun/singularity.go @@ -37,7 +37,13 @@ func newSingularityExecutor(logf func(string, ...interface{})) (*singularityExec }, nil } -func (e *singularityExecutor) Runtime() string { return "singularity" } +func (e *singularityExecutor) Runtime() string { + buf, err := exec.Command("singularity", "--version").CombinedOutput() + if err != nil { + return "singularity (unknown version)" + } + return strings.TrimSuffix(string(buf), "\n") +} func (e *singularityExecutor) getOrCreateProject(ownerUuid string, name string, containerClient *arvados.Client) (*arvados.Group, error) { var gp arvados.GroupList @@ -288,10 +294,10 @@ func (e *singularityExecutor) execCmd(path string) *exec.Cmd { // 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) - } + if cudaVisibleDevices := os.Getenv("CUDA_VISIBLE_DEVICES"); cudaVisibleDevices != "" { + // If a resource manager such as slurm or LSF told + // us to select specific devices we need to propagate that. + env = append(env, "SINGULARITYENV_CUDA_VISIBLE_DEVICES="+cudaVisibleDevices) } args = append(args, e.imageFilename)