Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Input parameters and what each one means

The following covers every input available in the portal.

1. File input

Input Directory (required)

A single directory staged by Tapis into the job.

What should be inside

The wrapper cds into this directory before running the main command. Relative paths in your script should assume this directory is the working directory.


2. Required app arguments

Main Program (required)

The executable to run (binary name).

Common values

The executable must come from one of these sources

If Main Program is python or python3, the wrapper normalizes to python3.


Main Script (required)

The filename of the input script passed to the executable.

Rules

Examples


UseMPI (required)

Controls whether the wrapper launches the executable through ibrun.

UseMPI valueWhat runs
False [args...]
Trueibrun [args...]

Use True when

Use False when

Note: the wrapper treats many “true-like” values as True (True, 1, Yes, case-insensitive).


CommandLine Arguments (optional)

Free-form arguments appended after the Main Script.

Example

--NodalMass 4.19 --outDir outCase1

Final command structure

[ibrun] <MainProgram> <MainScript> <Arguments...>

3. Scheduler inputs

TACC Scheduler Profile (defaulted)

The app uses the tacc-no-modules profile by default so no modules are implicitly loaded. This is intentional. Module state is controlled explicitly by the wrapper to improve reproducibility.

TACC Reservation (optional)

Provide a reservation string if you have one.


4. Environment variables (advanced configuration)

These values are presented as app inputs in the portal. Most are optional. If you never set them, the wrapper runs with conservative defaults.

4.1 OpenSeesPy injection

GET_TACC_OPENSEESPY (default True)

If True-like, the wrapper attempts to use the TACC-compiled OpenSeesPy by

Use this when you want reliable OpenSeesPy on Stampede3 (recommended).

In your Python script

import opensees as ops

If TACC_OPENSEES_BIN is unset or OpenSeesPy.so is missing, the wrapper logs a warning and skips the copy.


4.2 Module loading (two mechanisms)

The two mechanisms are complementary. You can use both.

A. MODULE_LOADS_FILE (optional)

A filename (in the Input Directory) containing module commands, one per line.

Supported line formats

This is best for version-controlled, documented module stacks. It also makes submittal via the web-portal interface easier.

B. MODULE_LOADS_LIST (optional)

Comma-separated list of modules to load, e.g.

python/3.12.11,opensees,hdf5/1.14.4,pylauncher

Tip: use MODULE_LOADS_FILE when the setup is more than a few modules or needs comments.


4.3 Python package installs (two mechanisms)

The two mechanisms are complementary. You can use both.

A. PIP_INSTALLS_FILE (optional)

A requirements-style file (in the Input Directory), e.g. requirements.txt.

Wrapper behavior

It makes submittal via the web-portal interface easier.

B. PIP_INSTALLS_LIST (optional)

Comma-separated list of packages, e.g.

mpi4py,pandas,numpy,matplotlib

Wrapper behavior


4.4 Input preparation

A. UNZIP_FILES_LIST (optional)

Comma-separated list of ZIP files in the Input Directory to expand before execution. Entries may omit the .zip suffix.

Use this when you staged one bundled zip instead of many small files.

B. PATH_COPY_IN_LIST (optional)

Comma-separated list of absolute paths (within the execution system) to copy into the working directory before execution.

Example

$WORK/FileSet2,$SCRATCH/FileSet3/thisFile.at2

Use this when

C. DELETE_COPIED_IN_ON_EXIT (default 0)

If set to 1 or True-like, the wrapper deletes only the copied-in items listed in its manifest on exit.

Safety rules

Use this when copy-in files are temporary conveniences and should not be archived.


4.5 Pre/Post hooks

A. PRE_JOB_SCRIPT (optional)

Script to run after environment setup but before the main executable.

B. POST_JOB_SCRIPT (optional)

Script to run after the main executable (same resolution rules as pre-hook).

Default policy: hook failures are logged as warnings and the job continues (you can change this policy in the wrapper if desired).


4.6 Output management

A. ZIP_OUTPUT_SWITCH (default False)

If True-like, the wrapper

Use this when output is large and contains many small files, or when you want a single artifact to move or download.

B. PATH_MOVE_OUTPUT (optional)

If set, the wrapper moves the main output artifact into

<PATH_MOVE_OUTPUT>/_<JobUUID>/

and copies top-level logs into that same folder.

Recommended


5. Typical patterns

Serial OpenSees (Tcl)

OpenSeesMP / OpenSeesSP (MPI)

OpenSeesPy (serial)

Python + mpi4py

AgnosticApp - How to Choose Inputs

A one-page cheat sheet for designsafe-agnostic-app

This app gives you a lot of power. You do not need to use most inputs for most jobs.

Use this page to answer four questions, top to bottom.


1. What am I actually running?

Pick one executable and one main script.

If you are runningSet BINARYNAMESet INPUTSCRIPT
OpenSees (Tcl)OpenSeesmodel.tcl
OpenSeesMP / OpenSeesSPOpenSeesMP or OpenSeesSPmodel.tcl
OpenSeesPypython3run.py
General Pythonpython3script.py
Other executablescript

Rules of thumb


2. Do I need MPI?

Answer this explicitly. The app will not guess.

If your jobSet UseMPI
Uses OpenSeesMP / OpenSeesSPTrue
Uses mpi4pyTrue
Is fully serialFalse
Uses Python threading or concurrent.futures on one nodeFalse

Mental model

UseMPI = True   →  ibrun <command>
UseMPI = False  →  <command>

If you are unsure, start with False and turn it on only when needed.


3. Does my environment need anything special?

A. Do I need modules?

If your code needs

then yes, you need modules.

Choose one

Use this whenInput
You want a clean, documented stackMODULE_LOADS_FILE
You just need a few modules quicklyMODULE_LOADS_LIST

Example mental model

If I would type "module load …" on the command line,
I probably need to declare it here.

B. Do I need Python packages?

If youUse
Have a requirements.txtPIP_INSTALLS_FILE
Just need a couple of packagesPIP_INSTALLS_LIST
Need none(leave blank)

Packages are installed inside the job only.


C. Am I using OpenSeesPy?

Almost always set this to True on Stampede3.

GET_TACC_OPENSEESPY = True

Why


4 How are my inputs structured?

A. Is everything already in my input directory?

If yes


B. Do I have ZIP bundles?

Use when

Set

UNZIP_FILES_LIST = mydata,meshes

(.zip is optional)


C. Do I need large external data?

Use when

Set

PATH_COPY_IN_LIST = /work/.../dataset1,/scratch/.../dataset2

If the copy is temporary, also set

DELETE_COPIED_IN_ON_EXIT = True

5. Do I need pre- or post-processing?

NeedInput
Generate inputsPRE_JOB_SCRIPT
Post-process resultsPOST_JOB_SCRIPT
Organize outputsPOST_JOB_SCRIPT
CleanupPOST_JOB_SCRIPT

Hooks


6. Will my output be large or long-lived?

A. Many output files?

Enable ZIP repack

ZIP_OUTPUT_SWITCH = True

B. Do I want results in WORK or SCRATCH immediately?

Move outputs

PATH_MOVE_OUTPUT = $WORK/MyRuns

Results land in

$WORK/MyRuns/_<JobUUID>/

This is highly recommended for


7. Minimal starter configurations

Serial OpenSees (Tcl)

BINARYNAME   = OpenSees
INPUTSCRIPT = model.tcl
UseMPI      = False

OpenSeesMP (MPI)

BINARYNAME   = OpenSeesMP
INPUTSCRIPT = model.tcl
UseMPI      = True

BINARYNAME            = python3
INPUTSCRIPT          = run.py
UseMPI               = False
GET_TACC_OPENSEESPY  = True

Python + mpi4py

BINARYNAME   = python3
INPUTSCRIPT = run.py
UseMPI      = True
PIP_INSTALLS_LIST = mpi4py

8. Final sanity checklist

Before submitting, ask yourself

If yes, you are good.


9. The core idea

The agnostic app is a general execution driver. Choose the simplest inputs that describe how you would run the job manually. The app makes that behavior explicit, safe, and reproducible.

Run DS Agnostic App

Notebook Demo for Submitting General HPC Jobs with the Agnostic App

This notebook demonstrates how to submit computational jobs on DesignSafe using the designsafe-agnostic-app, a general-purpose Tapis application for running arbitrary workloads on HPC systems.

The focus here is not on a specific scientific domain, but on how jobs are constructed, submitted, and executed on DesignSafe. If you understand these notebooks, you understand the core execution model behind most automated workflows on the platform.

This demo intentionally uses a pure Python workflow to emphasize that the agnostic app is not tied to any particular software stack.

A similar notebook for OpenSees jobs is shown in the OpenSees-On-DesignSafe Document.


Purpose of This Demo

This notebook showcases a general Python workflow that

The goal is to show that if you can describe a job in terms of

<executable> <script> <arguments>

then you can run it through the agnostic app.


What to Watch For

As you work through the notebook, pay attention to these recurring patterns.

These patterns apply broadly across DesignSafe, regardless of the application or discipline.


What This Demo Covers

This notebook is

It does not cover

The emphasis is on workflow mechanics, not scientific content.


The agnostic app is a general execution driver. If you can run a job from the command line, you can run it on DesignSafe using this pattern.