diff --git a/form.yml b/form.yml new file mode 100644 index 0000000000000000000000000000000000000000..07ca419c82693f29fe0ba16a649b4e8202eb98e0 --- /dev/null +++ b/form.yml @@ -0,0 +1,55 @@ +--- +cluster: "SLURM_CLUSTER" +attributes: + bc_num_hours: + value: 1 + + bc_num_slots: + label: Number of CPU + value: 1 + min: 1 + max: 24 + step: 1 + + bc_num_mems: + widget: "number_field" + label: Memory per CPU (GB) + value: 4 + min: 1 + max: 128 + step: 1 + + bc_partition: + widget: select + label: Partition + options: + - [ "express", "express" ] + - [ "short", "short" ] + - [ "medium", "medium" ] + - [ "long", "long" ] + - [ "interactive", "interactive" ] + - [ "pascalnodes", "pascalnodes" ] + - [ "pascalnodes-medium", "pascalnodes-medium" ] + - [ "largemem", "largemem" ] + - [ "largemem-long", "largemem-long" ] + - [ "amd-hdr100", "amd-hdr100" ] + + version: + widget: select + label: "MATLAB version" + help: "This defines the version of MATLAB you want to load." + options: +{% for ver in matlab_vers %} + - [ "{{ ver }}", "{{ matlab_module_name }}/{{ ver }}"] +{% endfor %} + + cuda_toolkit: "{{ cuda_toolkit_module }}" + +form: + - version + - bc_num_hours + - bc_partition + - bc_num_slots + - bc_num_mems + - bc_email_on_started + - cuda_toolkit diff --git a/form.yml.erb b/form.yml.erb deleted file mode 100644 index 5a094116185739c172e764e38a01b3b150f8edfd..0000000000000000000000000000000000000000 --- a/form.yml.erb +++ /dev/null @@ -1,148 +0,0 @@ -<%- - groups = OodSupport::User.new.groups.sort_by(&:id).tap { |groups| - groups.unshift(groups.delete(OodSupport::Process.group)) - }.map(&:name).grep(/^P./) --%> ---- -cluster: - - "owens" - - "pitzer" -form: - - version - - account - - bc_num_hours - - bc_num_slots - - num_cores - - node_type - - bc_vnc_resolution - - bc_email_on_started -attributes: - num_cores: - widget: "number_field" - label: "Number of cores" - value: 1 - help: | - Number of cores on node type (4 GB per core unless requesting whole - node). Leave blank if requesting full node. - min: 0 - max: 28 - step: 1 - bc_num_slots: "1" - bc_vnc_resolution: - required: true - account: - label: "Project" - widget: select - options: - <%- groups.each do |group| %> - - "<%= group %>" - <%- end %> - node_type: - widget: select - label: "Node type" - help: | - - **Standard Compute** <br> - These are standard HPC machines. Owens has 648 of these nodes with 40 - cores and 128 GB of memory. Pitzer has 224 of these nodes with 40 cores and - 340 of these nodes with 48 cores. All pitzer nodes have 192 GB of RAM. Chosing "any" as the node type will decrease - your wait time. - - **GPU Enabled** <br> - These are HPC machines with GPUs. Owens has 160 nodes with 1 [NVIDIA Tesla P100 GPU] - and Pitzer has 74 nodes with 2 [NVIDIA Tesla V100 GPUs]. They have the same - CPU and memory characteristics of standard compute. However, Pitzer's 40 core machines - have 2 GPUs with 16 GB of RAM; and Pitzer's 48 core machines have 2 GPUs with 32 GB of RAM. - Dense GPU types have 4 GPUs with 16 GB of RAM. - - **Large Memory** <br> - These are HPC machines with very large amounts of memory. Owens has 16 hugemem nodes - with 48 cores and 1.5 TB of RAM. Pitzer has 4 hugemem nodes with 3 TB of RAM and 80 cores. - Pitzer also has 12 Largmem nodes which have 48 cores with 768 GB of RAM. - - [NVIDIA Tesla P100 GPU]: http://www.nvidia.com/object/tesla-p100.html - [NVIDIA Tesla V100 GPUs]: https://www.nvidia.com/en-us/data-center/v100/ - options: - - [ - "any", "any", - data-max-num-cores-for-cluster-owens: 28, - data-max-num-cores-for-cluster-pitzer: 48, - ] - - [ - "40 core", "any-40core", - data-max-num-cores-for-cluster-pitzer: 40, - data-option-for-cluster-owens: false, - ] - - [ - "48 core", "any-48core", - data-max-num-cores-for-cluster-pitzer: 48, - data-option-for-cluster-owens: false, - ] - - [ - "any gpu", "gpu", - data-max-num-cores-for-cluster-owens: 28, - data-max-num-cores-for-cluster-pitzer: 48, - ] - - [ - "40 core gpu", "gpu-40core", - data-max-num-cores-for-cluster-pitzer: 40, - data-option-for-cluster-owens: false, - ] - - [ - "48 core gpu", "gpu-48core", - data-max-num-cores-for-cluster-pitzer: 48, - data-option-for-cluster-owens: false, - ] - - [ - "largemem", "largemem", - data-min-num-cores-for-cluster-pitzer: 48, - data-max-num-cores-for-cluster-pitzer: 48, - data-option-for-cluster-owens: false, - ] - - [ - "hugemem", "hugemem", - data-min-num-cores-for-cluster-owens: 48, - data-max-num-cores-for-cluster-owens: 48, - data-min-num-cores-for-cluster-pitzer: 80, - data-max-num-cores-for-cluster-pitzer: 80, - ] - - [ - "debug", "debug", - data-max-num-cores-for-cluster-owens: 28, - data-max-num-cores-for-cluster-pitzer: 48, - data-option-for-cluster-owens: false, - data-option-for-cluster-pitzer: false, - ] - version: - widget: select - label: "MATLAB version" - help: "This defines the version of MATLAB you want to load." - options: - - [ - "R2022a", "matlab/r2022a", - ] - - [ - "R2020a", "matlab/r2020a", - ] - - [ - "R2019b", "matlab/r2019b", - ] - - [ - "R2019a", "matlab/r2019a", - data-option-for-cluster-owens: false, - ] - - [ - "R2018b", "matlab/r2018b" - ] - - [ - "R2018a", "matlab/r2018a" - ] - - [ - "R2017a", "matlab/r2017a", - data-option-for-cluster-pitzer: false, - ] - - [ - "R2016b", "matlab/r2016b", - data-option-for-cluster-pitzer: false, - ] - - [ - "R2015b", "matlab/r2015b" , - data-option-for-cluster-pitzer: false, - ] diff --git a/manifest.yml b/manifest.yml index 0841d1e2cfbebde315166da5104dfa6a36413e92..c2232c524eaab373cdc3f4a5428717081c8e52a6 100644 --- a/manifest.yml +++ b/manifest.yml @@ -4,8 +4,8 @@ category: Interactive Apps subcategory: GUIs role: batch_connect description: | - This app will launch a [MATLAB] GUI on the [Owens cluster]. You will be able + This app will launch a [MATLAB] GUI on the [Cheaha cluster]. You will be able to interact with the MATLAB GUI through a VNC session. [MATLAB]: https://www.mathworks.com/products/matlab.html - [Owens cluster]: https://www.osc.edu/resources/technical_support/supercomputers/owens + [Cheaha cluster]: https://uabrc.github.io diff --git a/script.sh.erb b/script.sh.erb new file mode 100644 index 0000000000000000000000000000000000000000..8884fa8a339c8c45a136935c94d1d03887bffa11 --- /dev/null +++ b/script.sh.erb @@ -0,0 +1,36 @@ +#!/usr/bin/env bash + +# Set working directory to home directory +cd "${HOME}" + +# +# Launch Xfce Window Manager and Panel +# + +( + export SEND_256_COLORS_TO_REMOTE=1 + export XDG_CONFIG_HOME="<%= session.staged_root.join("config") %>" + export XDG_DATA_HOME="<%= session.staged_root.join("share") %>" + export XDG_CACHE_HOME="$(mktemp -d)" + module reset + set -x + xfwm4 --compositor=off --daemon --sm-client-disable + xsetroot -solid "#D3D3D3" + xfsettingsd --sm-client-disable + xfce4-panel --sm-client-disable +) & + +# +# Start MATLAB +# + +<%- if context.bc_partition == "pascalnodes" -%> +# Load CUDA toolkit +module load <%= context.cuda_toolkit %> +<%- end -%> +# Load the required environment +module load <%= context.version %> +# Launch MATLAB +module list +set -x +matlab -desktop diff --git a/submit.yml.erb b/submit.yml.erb index e89017d8891b8cf42b243d773d4d3e7079d41cc1..2521f4a5e8aa7530badeaa009f5378a2f38e6d27 100644 --- a/submit.yml.erb +++ b/submit.yml.erb @@ -1,24 +1,14 @@ -<%- - ppn = num_cores.blank? ? 28 : num_cores.to_i - nodes = bc_num_slots.blank? ? 1 : bc_num_slots.to_i - - 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 ] - when "vis" - slurm_args = ["--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}", "--gpus-per-node", "1", "--gres", "vis" ] - else - slurm_args = ["--nodes", "#{nodes}", "--ntasks-per-node", "#{ppn}" ] - end -%> --- batch_connect: - template: vnc + template: "vnc" script: - accounting_id: "<%= account %>" native: - <%- slurm_args.each do |arg| %> - - "<%= arg %>" - <%- end %> + - "-N 1" + - "-n <%= bc_num_slots.blank? ? 1 : bc_num_slots.to_i %>" + - "--mem-per-cpu=<%= bc_num_mems.blank? ? 4 : bc_num_mems.to_i %>G" + - "--partition=<%= bc_partition %>" + - "--time=<%= bc_num_hours.blank? ? 1 : bc_num_hours.to_i %>:00:00" + - "--job-name=ood-matlab-<%= version.split("/")[-1] %>" +<%- if bc_partition.include? "pascalnodes" -%> + - "--gres=gpu:1" +<%- end -%>