From d2b28739d389d7b08a31ea0564579d447c632234 Mon Sep 17 00:00:00 2001
From: Jeff Ohrstrom <johrstrom@hotmail.com>
Date: Mon, 16 Nov 2020 15:29:24 -0500
Subject: [PATCH] add owens-slurm cluster to begin migratio to slurm

---
 form.yml       | 10 ++++++----
 submit.yml.erb | 29 ++++++++++++++++++++++++-----
 2 files changed, 30 insertions(+), 9 deletions(-)

diff --git a/form.yml b/form.yml
index b40739a..9f5da48 100644
--- a/form.yml
+++ b/form.yml
@@ -1,5 +1,7 @@
 ---
-cluster: "owens"
+cluster:
+- "owens"
+- "owens-slurm"
 form:
   - version
   - bc_account
@@ -41,9 +43,9 @@ attributes:
         running in the background. This utilizes the GPU for hardware
         accelerated 3D visualization. There are 160 of these nodes on Owens.
     options:
-      - [ "any",     ""            ]
-      - [ "hugemem", ":hugemem"    ]
-      - [ "vis",     ":vis:gpus=1" ]
+      - "any"
+      - "hugemem"
+      - "vis"
   version:
     widget: select
     label: "MATLAB version"
diff --git a/submit.yml.erb b/submit.yml.erb
index 1ced835..4adeaa3 100644
--- a/submit.yml.erb
+++ b/submit.yml.erb
@@ -1,13 +1,32 @@
 <%-
-ppn = num_cores.blank? ? 28 : num_cores.to_i
-if node_type == ':hugemem'
-  ppn = 48
-end
+  ppn = num_cores.blank? ? 28 : num_cores.to_i
+  nodes = bc_num_slots.blank? ? 1 : bc_num_slots.to_i
+  torque_cluster = OodAppkit.clusters[cluster].job_config[:adapter] == 'torque'
+
+  case node_type
+  when "hugemem"
+    ppn = 48
+    partition = bc_num_slots.to_i > 1 ? "hugemem-parallel" : "hugemem"
+    slurm_args = [ "--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}", "--partition", partition ]
+    torque_args = "#{nodes}:ppn=#{ppn}:#{node_type}"
+  when "vis"
+    slurm_args = ["--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}", "--gpus-per-node", "1", "--gres", "vis" ]
+    torque_args = "#{nodes}:ppn=#{ppn}:#{node_type}:gpus=1"
+  else
+    slurm_args = ["--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}" ]
+    torque_args = "#{nodes}:ppn=#{ppn}"
+  end
 %>
 ---
 batch_connect:
   template: vnc
 script:
   native:
+  <%- if torque_cluster %>
     resources:
-      nodes: "<%= bc_num_slots.blank? ? "1" : bc_num_slots.to_i %>:ppn=<%= ppn %><%= node_type %>"
+      nodes: "<%= torque_args %>"
+  <%- else %>
+  <%- slurm_args.each do |arg| %>
+    - "<%= arg %>"
+  <%- end %>
+  <%- end %>
-- 
GitLab