From d4dbbc2adf292d583b6ecfef33c4f0d6f60b8853 Mon Sep 17 00:00:00 2001 From: Juan Martinez Date: Mon, 20 May 2024 15:12:26 -0500 Subject: [PATCH 1/4] dynamicExecSystems for: - OpenSees MP - OpenSees SP --- .../opensees-mp-3.5.0-dynamic/app.json | 126 ++++++++++++++++++ .../opensees-sp-3.5.0-dynamic/app.json | 126 ++++++++++++++++++ 2 files changed, 252 insertions(+) create mode 100644 applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json create mode 100644 applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json diff --git a/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json b/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json new file mode 100644 index 0000000..72d3f82 --- /dev/null +++ b/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json @@ -0,0 +1,126 @@ +{ + "id": "opensees-mp", + "version": "3.5.0", + "description": "OpenSeesMP is an OpenSees interpreter intended for high performance computers for performing finite element simulations with parameteric studies and very large models on parallel machines. OpenSeesMP requires understanding of parallel processing and the capabilities to write parallel scripts.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://debian:bookworm-slim", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": true, + "jobAttributes": { + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}", + "execSystemOutputDir": "${JobWorkingDir}", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": true, + "isMpi": true, + "mpiCmd": "ibrun", + "parameterSet": { + "appArgs": [ + { + "name": "mainProgram", + "arg": "OpenSeesMP", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + }, + { + "name": "TCL Script", + "description": "The filename only of the OpenSees TCL script to execute. This file should reside in the Input Directory specified.", + "arg": "Example.tcl", + "inputMode": "REQUIRED" + } + ], + "containerArgs": [ + { + "name": "TACC Module Mounts", + "description": "Mount the required folders in order for OpenSees TACC modules to function.", + "inputMode": "FIXED", + "arg": "--bind /bin,/etc,/lib,/lib64,/opt,/run,/share,/usr,/var", + "notes": { + "isHidden": true + } + } + ], + "schedulerOptions": [ + { + "name": "OpenSees TACC Scheduler Profile", + "description": "Scheduler profile for TACC OpenSees 3.5.0.", + "inputMode": "FIXED", + "arg": "--tapis-profile OpenSees_3.5.0", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [ + { + "key": "APPEND_PATH", + "value": "$PATH", + "description": "Append host $PATH to Singularity container default $PATH.", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + }, + { + "key": "LD_LIBRARY_PATH", + "value": "$LD_LIBRARY_PATH", + "description": "LD_LIBRARY_PATH to bring in path for loaded modules", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + } + ], + "archiveFilter": { + "includes": [], + "excludes": [], + "includeLaunchFiles": true + } + }, + "fileInputs": [ + { + "name": "TCL Input Directory", + "inputMode": "REQUIRED", + "sourceUrl": "tapis://cloud.data/corral/tacc/aci/CEP/community/opensees-mp/examples/smallmp", + "targetPath": ".", + "description": "TCL input directory that includes the tcl script as well as any other required files. Example input is in tapis://cloud.data/corral/tacc/aci/CEP/community/opensees-mp/examples/smallmp/Example.tcl" + } + ], + "fileInputArrays": [], + "nodeCount": 2, + "coresPerNode": 128, + "memoryMB": 256000, + "maxMinutes": 120, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: UTRC", + "portalName: CEP" + ], + "notes": { + "label": "OpenSeesMP V3.5 (Frontera/LoneStar 6)", + "helpUrl": "https://opensees.berkeley.edu/", + "hideNodeCountAndCoresPerNode": false, + "isInteractive": false, + "icon": null, + "category": "Simulation", + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} diff --git a/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json b/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json new file mode 100644 index 0000000..85b091a --- /dev/null +++ b/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json @@ -0,0 +1,126 @@ +{ + "id": "opensees-sp", + "version": "3.5.0", + "description": "OpenSeesSP 3.5 is an OpenSees interpreter intended for high performance computers for performing finite element simulations of very large models on parallel machines. OpenSeesSP is easy to use even with limited knowledge about parallel computing. It only requires minimal changes to input scripts to make them consistent with the parallel process logic.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://debian:bookworm-slim", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": true, + "jobAttributes": { + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}", + "execSystemOutputDir": "${JobWorkingDir}", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": true, + "isMpi": true, + "mpiCmd": "ibrun", + "parameterSet": { + "appArgs": [ + { + "name": "mainProgram", + "arg": "OpenSeesSP", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + }, + { + "name": "TCL Script", + "description": "The filename only of the OpenSees TCL script to execute. This file should reside in the Input Directory specified.", + "arg": "Example.tcl", + "inputMode": "REQUIRED" + } + ], + "containerArgs": [ + { + "name": "TACC Module Mounts", + "description": "Mount the required folders in order for OpenSees TACC modules to function.", + "inputMode": "FIXED", + "arg": "--bind /bin,/etc,/lib,/lib64,/opt,/run,/share,/usr,/var", + "notes": { + "isHidden": true + } + } + ], + "schedulerOptions": [ + { + "name": "OpenSees TACC Scheduler Profile", + "description": "Scheduler profile for TACC OpenSees 3.5.0.", + "inputMode": "FIXED", + "arg": "--tapis-profile OpenSees_3.5.0", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [ + { + "key": "APPEND_PATH", + "value": "$PATH", + "description": "Append host $PATH to Singularity container default $PATH.", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + }, + { + "key": "LD_LIBRARY_PATH", + "value": "$LD_LIBRARY_PATH", + "description": "LD_LIBRARY_PATH to bring in path for loaded modules", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + } + ], + "archiveFilter": { + "includes": [], + "excludes": [], + "includeLaunchFiles": true + } + }, + "fileInputs": [ + { + "name": "TCL Input Directory", + "inputMode": "REQUIRED", + "sourceUrl": "tapis://cloud.data/corral/tacc/aci/CEP/community/opensees-sp/examples/smallsp", + "targetPath": ".", + "description": "TCL input directory that includes the tcl script as well as any other required files. Example input is in tapis://cloud.data/corral/tacc/aci/CEP/community/opensees-sp/examples/smallsp/Example.tcl" + } + ], + "fileInputArrays": [], + "nodeCount": 1, + "coresPerNode": 128, + "memoryMB": 256000, + "maxMinutes": 120, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: UTRC", + "portalName: CEP" + ], + "notes": { + "label": "OpenSeesSP V3.5 (Frontera/LoneStar 6)", + "helpUrl": "https://opensees.berkeley.edu/", + "hideNodeCountAndCoresPerNode": false, + "isInteractive": false, + "icon": null, + "category": "Simulation", + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} From f0df35b705fdb886cd1c07ce9136ce992aa7bfff Mon Sep 17 00:00:00 2001 From: Juan Martinez Date: Fri, 31 May 2024 14:52:34 -0500 Subject: [PATCH 2/4] dynamicExecSystem implementation. --- applications/compress-dynamic/app.json | 122 +++++++++++++++++ applications/extract-dynamic/app.json | 94 +++++++++++++ applications/jupyter-hpc-mpi-dynamic/app.json | 102 +++++++++++++++ applications/jupyter-lab-hpc-dynamic/app.json | 92 +++++++++++++ .../opensees-mp-3.5.0-dynamic/app.json | 2 +- applications/rstudio-dynamic/app.json | 123 ++++++++++++++++++ 6 files changed, 534 insertions(+), 1 deletion(-) create mode 100644 applications/compress-dynamic/app.json create mode 100644 applications/extract-dynamic/app.json create mode 100644 applications/jupyter-hpc-mpi-dynamic/app.json create mode 100644 applications/jupyter-lab-hpc-dynamic/app.json create mode 100644 applications/rstudio-dynamic/app.json diff --git a/applications/compress-dynamic/app.json b/applications/compress-dynamic/app.json new file mode 100644 index 0000000..75f98a3 --- /dev/null +++ b/applications/compress-dynamic/app.json @@ -0,0 +1,122 @@ +{ + "id": "compress-dynamicexecsystem", + "version": "0.0.3", + "description": "Compress a file or folder for download.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://taccaci/compress:0.0.3", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": false, + "jobAttributes": { + "description": "Compress a file or folder for download.", + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}/input", + "execSystemOutputDir": "${JobWorkingDir}/output", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": false, + "isMpi": false, + "mpiCmd": null, + "cmdPrefix": null, + "parameterSet": { + "appArgs": [ + { + "name": "Compression Type", + "description": "Select the type of compressed file, either a Gzipped TAR file (.tar.gz) or a Zip file (.zip).", + "inputMode": "REQUIRED", + "arg": "tgz", + "notes": { + "enum_values": [ + { + "tgz": "tar.gz" + }, + { + "zip": "zip" + } + ] + } + }, + { + "name": "Archive File Name", + "description": "Output archive file name. The selected Compression Type will be appended to this filename. Keep the file name inside single quotes. Any special characters in the file name will be replaced with an underscore.", + "inputMode": "REQUIRED", + "arg": "Archive", + "notes": { + "validator": { + "regex": "^[a-zA-Z0-9!@#%^*-_.,'? ]+$", + "message": "Must contain valid characters (a-z, A-Z, 0-9, !@#%^*-_.,?) and spaces." + } + } + } + ], + "containerArgs": [], + "schedulerOptions": [ + { + "name": "TACC Scheduler Profile", + "description": "Scheduler profile for HPC clusters at TACC", + "inputMode": "FIXED", + "arg": "--tapis-profile tacc-apptainer", + "notes": { + "isHidden": true + } + }, + { + "name": "Slurm job name", + "description": "Set the slurm job name to be identical to the Tapis job name.", + "inputMode": "FIXED", + "arg": "--job-name ${JobName}", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [], + "archiveFilter": { + "includes": [], + "excludes": [ + "tapisjob.out" + ], + "includeLaunchFiles": false + } + }, + "fileInputs": [ + { + "name": "Target path to be compressed", + "description": "The directory or file to be compressed.", + "inputMode": "OPTIONAL", + "autoMountLocal": true, + "sourceUrl": null, + "targetPath": "*" + } + ], + "fileInputArrays": [], + "nodeCount": 1, + "coresPerNode": 1, + "memoryMB": 100, + "maxMinutes": 10, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: ALL" + ], + "notes": { + "label": "Compress (Frontera/Lonestar6)", + "hideNodeCountAndCoresPerNode": true, + "icon": "compress", + "category": "Utilities", + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} \ No newline at end of file diff --git a/applications/extract-dynamic/app.json b/applications/extract-dynamic/app.json new file mode 100644 index 0000000..9d45d12 --- /dev/null +++ b/applications/extract-dynamic/app.json @@ -0,0 +1,94 @@ +{ + "id": "extract-dynamicexecsystem", + "version": "0.0.1", + "description": "Extract a tar, tar.gz, tgz, gz, or zip file.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://taccaci/extract:latest", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": true, + "jobAttributes": { + "description": "Extract a tar, tar.gz, tgz, gz, or zip file.", + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}/input", + "execSystemOutputDir": "${JobWorkingDir}/output", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": false, + "isMpi": false, + "mpiCmd": null, + "cmdPrefix": null, + "parameterSet": { + "appArgs": [], + "containerArgs": [], + "schedulerOptions": [ + { + "name": "TACC Scheduler Profile", + "description": "Scheduler profile for HPC clusters at TACC", + "inputMode": "FIXED", + "arg": "--tapis-profile tacc-apptainer", + "notes": { + "isHidden": true + } + }, + { + "name": "Slurm job name", + "description": "Set the slurm job name to be identical to the Tapis job name.", + "inputMode": "FIXED", + "arg": "--job-name ${JobName}", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [], + "archiveFilter": { + "includes": [], + "excludes": [ + "tapisjob.out" + ], + "includeLaunchFiles": false + } + }, + "fileInputs": [ + { + "name": "Input File", + "description": "The archive file to be extracted.", + "inputMode": "REQUIRED", + "autoMountLocal": true, + "sourceUrl": null, + "targetPath": "*" + } + ], + "fileInputArrays": [], + "nodeCount": 1, + "coresPerNode": 1, + "memoryMB": 100, + "maxMinutes": 10, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: ALL" + ], + "notes": { + "label": "Extract Compressed File (Frontera/Lonestar6)", + "hideNodeCountAndCoresPerNode": true, + "icon": "extract", + "category": "Utilities", + "showTargetPath": true, + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} diff --git a/applications/jupyter-hpc-mpi-dynamic/app.json b/applications/jupyter-hpc-mpi-dynamic/app.json new file mode 100644 index 0000000..77d8fc2 --- /dev/null +++ b/applications/jupyter-hpc-mpi-dynamic/app.json @@ -0,0 +1,102 @@ +{ + "id": "jupyter-hpc-mpi-dynamicexecsystem", + "version": "1.0.1", + "description": "Run an interactive Jupyter Notebook session with ability to launch mpi jobs.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://debian:bullseye-slim", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": true, + "jobAttributes": { + "description": null, + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}", + "execSystemOutputDir": "${JobWorkingDir}/output", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": true, + "isMpi": false, + "mpiCmd": null, + "cmdPrefix": "source tapisjob.env;source jupyter-notebook-native/run.sh;", + "parameterSet": { + "appArgs": [ + { + "name": "launchParameters", + "arg": "echo 'Job is done.'", + "inputMode": "FIXED", + "notes": { + "isHidden": true + } + } + ], + "containerArgs": [], + "schedulerOptions": [ + { + "name": "TACC Scheduler Profile", + "description": "Scheduler profile for HPC clusters at TACC", + "inputMode": "FIXED", + "arg": "--tapis-profile tacc-apptainer", + "notes": { + "isHidden": true + } + }, + { + "name": "TAP Session Substring", + "description": "TAP Functions require the substring 'tap_' and in the slurm job name in order to function.", + "inputMode": "FIXED", + "arg": "--job-name ${JobName}-tap_", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [], + "archiveFilter": { + "includes": [], + "excludes": [], + "includeLaunchFiles": true + } + }, + "fileInputs": [ + { + "name": "Jupyter input files", + "inputMode": "REQUIRED", + "sourceUrl": "tapis://cloud.data/corral/tacc/aci/CEP/applications/v3/jupyter-notebook-native", + "targetPath": "*", + "notes": { + "isHidden": true + } + } + ], + "fileInputArrays": [], + "nodeCount": 1, + "maxMinutes": 120, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: CEP", + "portalName: MISE" + ], + "notes": { + "label": "Jupyter Notebook HPC MPI (Frontera/LoneStar6)", + "helpUrl": "https://jupyter-notebook.readthedocs.io/en/stable/", + "hideNodeCountAndCoresPerNode": false, + "isInteractive": true, + "icon": "jupyter", + "category": "Data Processing", + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} diff --git a/applications/jupyter-lab-hpc-dynamic/app.json b/applications/jupyter-lab-hpc-dynamic/app.json new file mode 100644 index 0000000..a3d0bed --- /dev/null +++ b/applications/jupyter-lab-hpc-dynamic/app.json @@ -0,0 +1,92 @@ +{ + "id": "jupyter-lab-hpc-dynamicexecsystem", + "version": "1.1.0", + "description": "Run an interactive Jupyter Lab session on an HPC compute node.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://taccaci/jupyter-lab-hpc:1.1.0", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": true, + "jobAttributes": { + "description": null, + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}", + "execSystemOutputDir": "${JobWorkingDir}/output", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": true, + "isMpi": false, + "mpiCmd": null, + "cmdPrefix": "mkdir $PWD/Work $PWD/Home $PWD/Scratch;", + "parameterSet": { + "appArgs": [], + "containerArgs": [ + { + "name": "Jupyter Mounts", + "description": "Mount for TAP functions and user dirs", + "inputMode": "FIXED", + "arg": "--bind /share,$STOCKYARD:$PWD/Work,$HOME:$PWD/Home,$SCRATCH:$PWD/Scratch", + "notes": { + "isHidden": true + } + } + ], + "schedulerOptions": [ + { + "name": "TACC Scheduler Profile", + "description": "Scheduler profile for HPC clusters at TACC", + "inputMode": "FIXED", + "arg": "--tapis-profile tacc-apptainer", + "notes": { + "isHidden": true + } + }, + { + "name": "TAP Session Substring", + "description": "TAP Functions require the substring 'tap_' and in the slurm job name in order to function.", + "inputMode": "FIXED", + "arg": "--job-name ${JobName}-tap_", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [], + "archiveFilter": { + "includes": [], + "excludes": [], + "includeLaunchFiles": true + } + }, + "fileInputs": [], + "fileInputArrays": [], + "nodeCount": 1, + "maxMinutes": 120, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: ALL" + ], + "notes": { + "label": "Jupyter Lab HPC (Frontera/LoneStar6)", + "helpUrl": "https://jupyterlab.readthedocs.io/en/stable/", + "hideNodeCountAndCoresPerNode": false, + "isInteractive": true, + "icon": "jupyter", + "category": "Data Processing", + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} diff --git a/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json b/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json index 72d3f82..cc969e9 100644 --- a/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json +++ b/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json @@ -112,7 +112,7 @@ "portalName: CEP" ], "notes": { - "label": "OpenSeesMP V3.5 (Frontera/LoneStar 6)", + "label": "OpenSeesMP V3.5 (Frontera/LoneStar6)", "helpUrl": "https://opensees.berkeley.edu/", "hideNodeCountAndCoresPerNode": false, "isInteractive": false, diff --git a/applications/rstudio-dynamic/app.json b/applications/rstudio-dynamic/app.json new file mode 100644 index 0000000..b5da57c --- /dev/null +++ b/applications/rstudio-dynamic/app.json @@ -0,0 +1,123 @@ +{ + "id": "rstudio-dynamicexecsystem", + "version": "4.3", + "description": "Run an interactive RStudio Desktop session on Frontera and Lonestar6.", + "owner": "${apiUserId}", + "enabled": true, + "runtime": "SINGULARITY", + "runtimeVersion": null, + "runtimeOptions": [ + "SINGULARITY_RUN" + ], + "containerImage": "docker://rocker/rstudio:4.3", + "jobType": "BATCH", + "maxJobs": -1, + "maxJobsPerUser": -1, + "strictFileInputs": true, + "jobAttributes": { + "description": "Run an interactive RStudio Desktop session on Frontera and Lonestar6.", + "execSystemConstraints": null, + "execSystemExecDir": "${JobWorkingDir}", + "execSystemInputDir": "${JobWorkingDir}/input", + "execSystemOutputDir": "${JobWorkingDir}/output", + "execSystemLogicalQueue": "development", + "archiveSystemId": "cloud.data", + "archiveSystemDir": "HOST_EVAL($HOME)/tapis-jobs-archive/${JobCreateDate}/${JobName}-${JobUUID}", + "archiveOnAppError": true, + "isMpi": false, + "mpiCmd": null, + "cmdPrefix": "source tapisjob.env; source input/rstudio/wrapper.sh;", + "parameterSet": { + "appArgs": [ + { + "name": "Rstudio apptainer runscript", + "inputMode": "FIXED", + "arg": "/usr/lib/rstudio-server/bin/rserver --www-port 8787 --www-address 127.0.0.1 --auth-none=0 --auth-pam-helper-path=pam-helper --server-user=$(whoami) --auth-stay-signed-in-days=30 --auth-timeout-minutes=0 --rsession-path=/etc/rstudio/rsession.sh", + "notes": { + "isHidden": true + } + } + ], + "containerArgs": [ + { + "name": "tmpfs", + "inputMode": "FIXED", + "arg": "--writable-tmpfs", + "notes": { + "isHidden": true + } + }, + { + "name": "Rstudio container mounts", + "inputMode": "FIXED", + "arg": "--bind ${workdir}/run:/run,${workdir}/tmp:/tmp,${workdir}/database.conf:/etc/rstudio/database.conf,${workdir}/rsession.sh:/etc/rstudio/rsession.sh,${workdir}/rstudio-server:/var/lib/rstudio-server", + "notes": { + "isHidden": true + } + } + ], + "schedulerOptions": [ + { + "name": "TACC Scheduler Profile", + "description": "Scheduler profile for HPC clusters at TACC", + "inputMode": "FIXED", + "arg": "--tapis-profile tacc-apptainer", + "notes": { + "isHidden": true + } + }, + { + "name": "TACC Interactive Session Substrings", + "description": "VNC and DCV sessions require the substrings 'tap_' and '-dcvserver' in the slurm job name in order to function.", + "inputMode": "FIXED", + "arg": "--job-name ${JobName}-dcvserver-tap_", + "notes": { + "isHidden": true + } + } + ], + "envVariables": [], + "archiveFilter": { + "includes": [], + "excludes": [], + "includeLaunchFiles": true + } + }, + "fileInputs": [ + { + "name": "Rstudio input files", + "inputMode": "REQUIRED", + "sourceUrl": "tapis://cloud.data/corral/tacc/aci/CEP/applications/v3/rstudio", + "targetPath": "*", + "notes": { + "isHidden": true + } + } + ], + "fileInputArrays": [], + "nodeCount": 1, + "coresPerNode": 128, + "memoryMB": 256000, + "maxMinutes": 120, + "subscriptions": [], + "tags": [] + }, + "tags": [ + "portalName: Frontera", + "portalName: UTRC", + "portalName: CEP", + "portalName: PTDATAX" + ], + "notes": { + "label": "RStudio (Frontera/Lonestar6)", + "helpUrl": "https://docs.posit.co/ide/user/ide/get-started/", + "hideNodeCountAndCoresPerNode": false, + "isInteractive": true, + "icon": "rstudio", + "category": "Data Processing", + "dynamicExecSystems":[ + "frontera", + "ls6" + ] + } +} From 03d1e987adac4debc645bb65f6aacc84f81df6ba Mon Sep 17 00:00:00 2001 From: Juan Martinez Date: Tue, 4 Jun 2024 13:46:55 -0500 Subject: [PATCH 3/4] Merge ... Rename execution system specific applications. --- applications/{compress => compress-frontera}/Dockerfile | 0 applications/{compress => compress-frontera}/README.md | 0 applications/{compress => compress-frontera}/Singularity | 0 applications/{compress => compress-frontera}/app.json | 0 applications/{compress => compress-frontera}/run.sh | 0 applications/{extract => extract-frontera}/Dockerfile | 0 applications/{extract => extract-frontera}/Singularity | 0 applications/{extract => extract-frontera}/app.json | 0 applications/{extract => extract-frontera}/run.sh | 0 .../{jupyter-hpc-mpi => jupyter-hpc-mpi-frontera}/app.json | 0 .../{jupyter-hpc-mpi => jupyter-hpc-mpi-frontera}/profile.json | 0 applications/{jupyter-hpc-mpi => jupyter-hpc-mpi-frontera}/run.sh | 0 .../{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/Dockerfile | 0 .../{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/Singularity | 0 .../{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/app.json | 0 .../{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/gpu/app.json | 0 .../gpu/cuda.Dockerfile | 0 applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/run.sh | 0 .../{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/Readme.MD | 0 .../{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/Singularity | 0 .../{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/app.json | 0 .../makes/Makefile.def | 0 .../{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/Readme.MD | 0 .../{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/Singularity | 0 .../{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/app.json | 0 .../makes/Makefile.def | 0 applications/{rstudio => rstudio-frontera}/Dockerfile | 0 applications/{rstudio => rstudio-frontera}/app.json | 0 .../{rstudio => rstudio-frontera}/inputs/nginx.default.conf | 0 applications/{rstudio => rstudio-frontera}/inputs/wrapper.sh | 0 applications/{rstudio => rstudio-frontera}/nginx/Singularity.conf | 0 applications/{rstudio => rstudio-frontera}/test.sh | 0 32 files changed, 0 insertions(+), 0 deletions(-) rename applications/{compress => compress-frontera}/Dockerfile (100%) rename applications/{compress => compress-frontera}/README.md (100%) rename applications/{compress => compress-frontera}/Singularity (100%) rename applications/{compress => compress-frontera}/app.json (100%) rename applications/{compress => compress-frontera}/run.sh (100%) rename applications/{extract => extract-frontera}/Dockerfile (100%) rename applications/{extract => extract-frontera}/Singularity (100%) rename applications/{extract => extract-frontera}/app.json (100%) rename applications/{extract => extract-frontera}/run.sh (100%) rename applications/{jupyter-hpc-mpi => jupyter-hpc-mpi-frontera}/app.json (100%) rename applications/{jupyter-hpc-mpi => jupyter-hpc-mpi-frontera}/profile.json (100%) rename applications/{jupyter-hpc-mpi => jupyter-hpc-mpi-frontera}/run.sh (100%) rename applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/Dockerfile (100%) rename applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/Singularity (100%) rename applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/app.json (100%) rename applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/gpu/app.json (100%) rename applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/gpu/cuda.Dockerfile (100%) rename applications/{jupyter-lab-hpc => jupyter-lab-hpc-frontera}/run.sh (100%) rename applications/opensees-mp/{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/Readme.MD (100%) rename applications/opensees-mp/{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/Singularity (100%) rename applications/opensees-mp/{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/app.json (100%) rename applications/opensees-mp/{opensees-mp-3.5.0 => opensees-mp-frontera-3.5.0}/makes/Makefile.def (100%) rename applications/opensees-sp/{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/Readme.MD (100%) rename applications/opensees-sp/{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/Singularity (100%) rename applications/opensees-sp/{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/app.json (100%) rename applications/opensees-sp/{opensees-sp-3.5.0 => opensees-sp-frontera-3.5.0}/makes/Makefile.def (100%) rename applications/{rstudio => rstudio-frontera}/Dockerfile (100%) rename applications/{rstudio => rstudio-frontera}/app.json (100%) rename applications/{rstudio => rstudio-frontera}/inputs/nginx.default.conf (100%) rename applications/{rstudio => rstudio-frontera}/inputs/wrapper.sh (100%) rename applications/{rstudio => rstudio-frontera}/nginx/Singularity.conf (100%) rename applications/{rstudio => rstudio-frontera}/test.sh (100%) diff --git a/applications/compress/Dockerfile b/applications/compress-frontera/Dockerfile similarity index 100% rename from applications/compress/Dockerfile rename to applications/compress-frontera/Dockerfile diff --git a/applications/compress/README.md b/applications/compress-frontera/README.md similarity index 100% rename from applications/compress/README.md rename to applications/compress-frontera/README.md diff --git a/applications/compress/Singularity b/applications/compress-frontera/Singularity similarity index 100% rename from applications/compress/Singularity rename to applications/compress-frontera/Singularity diff --git a/applications/compress/app.json b/applications/compress-frontera/app.json similarity index 100% rename from applications/compress/app.json rename to applications/compress-frontera/app.json diff --git a/applications/compress/run.sh b/applications/compress-frontera/run.sh similarity index 100% rename from applications/compress/run.sh rename to applications/compress-frontera/run.sh diff --git a/applications/extract/Dockerfile b/applications/extract-frontera/Dockerfile similarity index 100% rename from applications/extract/Dockerfile rename to applications/extract-frontera/Dockerfile diff --git a/applications/extract/Singularity b/applications/extract-frontera/Singularity similarity index 100% rename from applications/extract/Singularity rename to applications/extract-frontera/Singularity diff --git a/applications/extract/app.json b/applications/extract-frontera/app.json similarity index 100% rename from applications/extract/app.json rename to applications/extract-frontera/app.json diff --git a/applications/extract/run.sh b/applications/extract-frontera/run.sh similarity index 100% rename from applications/extract/run.sh rename to applications/extract-frontera/run.sh diff --git a/applications/jupyter-hpc-mpi/app.json b/applications/jupyter-hpc-mpi-frontera/app.json similarity index 100% rename from applications/jupyter-hpc-mpi/app.json rename to applications/jupyter-hpc-mpi-frontera/app.json diff --git a/applications/jupyter-hpc-mpi/profile.json b/applications/jupyter-hpc-mpi-frontera/profile.json similarity index 100% rename from applications/jupyter-hpc-mpi/profile.json rename to applications/jupyter-hpc-mpi-frontera/profile.json diff --git a/applications/jupyter-hpc-mpi/run.sh b/applications/jupyter-hpc-mpi-frontera/run.sh similarity index 100% rename from applications/jupyter-hpc-mpi/run.sh rename to applications/jupyter-hpc-mpi-frontera/run.sh diff --git a/applications/jupyter-lab-hpc/Dockerfile b/applications/jupyter-lab-hpc-frontera/Dockerfile similarity index 100% rename from applications/jupyter-lab-hpc/Dockerfile rename to applications/jupyter-lab-hpc-frontera/Dockerfile diff --git a/applications/jupyter-lab-hpc/Singularity b/applications/jupyter-lab-hpc-frontera/Singularity similarity index 100% rename from applications/jupyter-lab-hpc/Singularity rename to applications/jupyter-lab-hpc-frontera/Singularity diff --git a/applications/jupyter-lab-hpc/app.json b/applications/jupyter-lab-hpc-frontera/app.json similarity index 100% rename from applications/jupyter-lab-hpc/app.json rename to applications/jupyter-lab-hpc-frontera/app.json diff --git a/applications/jupyter-lab-hpc/gpu/app.json b/applications/jupyter-lab-hpc-frontera/gpu/app.json similarity index 100% rename from applications/jupyter-lab-hpc/gpu/app.json rename to applications/jupyter-lab-hpc-frontera/gpu/app.json diff --git a/applications/jupyter-lab-hpc/gpu/cuda.Dockerfile b/applications/jupyter-lab-hpc-frontera/gpu/cuda.Dockerfile similarity index 100% rename from applications/jupyter-lab-hpc/gpu/cuda.Dockerfile rename to applications/jupyter-lab-hpc-frontera/gpu/cuda.Dockerfile diff --git a/applications/jupyter-lab-hpc/run.sh b/applications/jupyter-lab-hpc-frontera/run.sh similarity index 100% rename from applications/jupyter-lab-hpc/run.sh rename to applications/jupyter-lab-hpc-frontera/run.sh diff --git a/applications/opensees-mp/opensees-mp-3.5.0/Readme.MD b/applications/opensees-mp/opensees-mp-frontera-3.5.0/Readme.MD similarity index 100% rename from applications/opensees-mp/opensees-mp-3.5.0/Readme.MD rename to applications/opensees-mp/opensees-mp-frontera-3.5.0/Readme.MD diff --git a/applications/opensees-mp/opensees-mp-3.5.0/Singularity b/applications/opensees-mp/opensees-mp-frontera-3.5.0/Singularity similarity index 100% rename from applications/opensees-mp/opensees-mp-3.5.0/Singularity rename to applications/opensees-mp/opensees-mp-frontera-3.5.0/Singularity diff --git a/applications/opensees-mp/opensees-mp-3.5.0/app.json b/applications/opensees-mp/opensees-mp-frontera-3.5.0/app.json similarity index 100% rename from applications/opensees-mp/opensees-mp-3.5.0/app.json rename to applications/opensees-mp/opensees-mp-frontera-3.5.0/app.json diff --git a/applications/opensees-mp/opensees-mp-3.5.0/makes/Makefile.def b/applications/opensees-mp/opensees-mp-frontera-3.5.0/makes/Makefile.def similarity index 100% rename from applications/opensees-mp/opensees-mp-3.5.0/makes/Makefile.def rename to applications/opensees-mp/opensees-mp-frontera-3.5.0/makes/Makefile.def diff --git a/applications/opensees-sp/opensees-sp-3.5.0/Readme.MD b/applications/opensees-sp/opensees-sp-frontera-3.5.0/Readme.MD similarity index 100% rename from applications/opensees-sp/opensees-sp-3.5.0/Readme.MD rename to applications/opensees-sp/opensees-sp-frontera-3.5.0/Readme.MD diff --git a/applications/opensees-sp/opensees-sp-3.5.0/Singularity b/applications/opensees-sp/opensees-sp-frontera-3.5.0/Singularity similarity index 100% rename from applications/opensees-sp/opensees-sp-3.5.0/Singularity rename to applications/opensees-sp/opensees-sp-frontera-3.5.0/Singularity diff --git a/applications/opensees-sp/opensees-sp-3.5.0/app.json b/applications/opensees-sp/opensees-sp-frontera-3.5.0/app.json similarity index 100% rename from applications/opensees-sp/opensees-sp-3.5.0/app.json rename to applications/opensees-sp/opensees-sp-frontera-3.5.0/app.json diff --git a/applications/opensees-sp/opensees-sp-3.5.0/makes/Makefile.def b/applications/opensees-sp/opensees-sp-frontera-3.5.0/makes/Makefile.def similarity index 100% rename from applications/opensees-sp/opensees-sp-3.5.0/makes/Makefile.def rename to applications/opensees-sp/opensees-sp-frontera-3.5.0/makes/Makefile.def diff --git a/applications/rstudio/Dockerfile b/applications/rstudio-frontera/Dockerfile similarity index 100% rename from applications/rstudio/Dockerfile rename to applications/rstudio-frontera/Dockerfile diff --git a/applications/rstudio/app.json b/applications/rstudio-frontera/app.json similarity index 100% rename from applications/rstudio/app.json rename to applications/rstudio-frontera/app.json diff --git a/applications/rstudio/inputs/nginx.default.conf b/applications/rstudio-frontera/inputs/nginx.default.conf similarity index 100% rename from applications/rstudio/inputs/nginx.default.conf rename to applications/rstudio-frontera/inputs/nginx.default.conf diff --git a/applications/rstudio/inputs/wrapper.sh b/applications/rstudio-frontera/inputs/wrapper.sh similarity index 100% rename from applications/rstudio/inputs/wrapper.sh rename to applications/rstudio-frontera/inputs/wrapper.sh diff --git a/applications/rstudio/nginx/Singularity.conf b/applications/rstudio-frontera/nginx/Singularity.conf similarity index 100% rename from applications/rstudio/nginx/Singularity.conf rename to applications/rstudio-frontera/nginx/Singularity.conf diff --git a/applications/rstudio/test.sh b/applications/rstudio-frontera/test.sh similarity index 100% rename from applications/rstudio/test.sh rename to applications/rstudio-frontera/test.sh From 6d45bc084bd9faeff0b609552dd58b166fc9ea03 Mon Sep 17 00:00:00 2001 From: Juan Martinez Date: Tue, 4 Jun 2024 14:14:57 -0500 Subject: [PATCH 4/4] Rename OpenSees dynamicExecSystems app ID. --- applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json | 4 ++-- applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json b/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json index cc969e9..cb2439a 100644 --- a/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json +++ b/applications/opensees-mp/opensees-mp-3.5.0-dynamic/app.json @@ -1,5 +1,5 @@ { - "id": "opensees-mp", + "id": "opensees-mp-dynamicexecsystem", "version": "3.5.0", "description": "OpenSeesMP is an OpenSees interpreter intended for high performance computers for performing finite element simulations with parameteric studies and very large models on parallel machines. OpenSeesMP requires understanding of parallel processing and the capabilities to write parallel scripts.", "owner": "${apiUserId}", @@ -112,7 +112,7 @@ "portalName: CEP" ], "notes": { - "label": "OpenSeesMP V3.5 (Frontera/LoneStar6)", + "label": "OpenSeesMP V3.5 (Frontera/LoneStar 6)", "helpUrl": "https://opensees.berkeley.edu/", "hideNodeCountAndCoresPerNode": false, "isInteractive": false, diff --git a/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json b/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json index 85b091a..2bdf296 100644 --- a/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json +++ b/applications/opensees-sp/opensees-sp-3.5.0-dynamic/app.json @@ -1,5 +1,5 @@ { - "id": "opensees-sp", + "id": "opensees-sp-dynamicexecsystem", "version": "3.5.0", "description": "OpenSeesSP 3.5 is an OpenSees interpreter intended for high performance computers for performing finite element simulations of very large models on parallel machines. OpenSeesSP is easy to use even with limited knowledge about parallel computing. It only requires minimal changes to input scripts to make them consistent with the parallel process logic.", "owner": "${apiUserId}",