From 5f3c3bbdb81965e203362a0c4e595a94a88182ea Mon Sep 17 00:00:00 2001 From: Evi Vanoost Date: Mon, 26 Aug 2024 15:13:15 -0400 Subject: [PATCH] Add singularity_options to the native structure. This allows containers to specify additional options for Singularity such as --nv for nVIDIA GPU and --rocm for AMD GPU or --bind /etc/OpenCL for OpenCL (in combination with one of the prior). --- lib/ood_core/job/adapters/linux_host/launcher.rb | 9 ++++++++- .../adapters/linux_host/templates/script_wrapper.erb.sh | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ood_core/job/adapters/linux_host/launcher.rb b/lib/ood_core/job/adapters/linux_host/launcher.rb index ae3b10e12..0536f6513 100644 --- a/lib/ood_core/job/adapters/linux_host/launcher.rb +++ b/lib/ood_core/job/adapters/linux_host/launcher.rb @@ -170,6 +170,7 @@ def wrapped_script(script, session_name) 'script_timeout' => script_timeout(script), 'session_name' => session_name, 'singularity_bin' => singularity_bin, + 'singularity_options' => singularity_options(script.native), 'singularity_image' => singularity_image(script.native), 'ssh_hosts' => ssh_hosts, 'tmux_bin' => tmux_bin, @@ -205,6 +206,12 @@ def singularity_bindpath(native) native[:singularity_bindpath] end + def singularity_options(native) + return '' unless native && native[:singularity_options] + + native[:singularity_options] + end + def script_timeout(script) wall_time = script.wall_time.to_i return site_timeout if wall_time == 0 @@ -294,4 +301,4 @@ def parse_hostname(output) end.compact.last.to_s end -end +end \ No newline at end of file diff --git a/lib/ood_core/job/adapters/linux_host/templates/script_wrapper.erb.sh b/lib/ood_core/job/adapters/linux_host/templates/script_wrapper.erb.sh index 945b75150..2d571960b 100644 --- a/lib/ood_core/job/adapters/linux_host/templates/script_wrapper.erb.sh +++ b/lib/ood_core/job/adapters/linux_host/templates/script_wrapper.erb.sh @@ -47,7 +47,7 @@ trap exit_script SIGINT SIGTERM OUTPUT_PATH=<%= output_path %> ERROR_PATH=<%= error_path %> ({ -timeout <%= script_timeout %>s <%= singularity_bin %> exec <%= contain %> --pid <%= singularity_image %> /bin/bash --login $singularity_tmp_file <%= arguments %> +timeout <%= script_timeout %>s <%= singularity_bin %> exec <%= singularity_options %> <%= contain %> --pid <%= singularity_image %> /bin/bash --login $singularity_tmp_file <%= arguments %> } | tee "$OUTPUT_PATH") 3>&1 1>&2 2>&3 | tee "$ERROR_PATH" <%= email_on_terminated %>