tdegeus / GooseSLURM

SLURM command line tools and scripts
https://gooseslurm.rtfd.io
MIT License
10 stars 2 forks source link

Tools to write job scripts #57

Open tdegeus opened 1 year ago

tdegeus commented 1 year ago

A thing to consider is that have a config folder in which snippets/styles are stored that you can then select from a command line tool

The config folder could be controlled with https://pypi.org/project/appdirs/ (available on conda)

one could imagine

machine:

  - name: jed
    code:
      - import: socket
      - snippet: socket.gethostname() == "jed"
    sbatch:
      - partition: standard
        cpus-per-task: ">1"

snippets:

  - name: gcc
    machine: jed
    snippet: |
      module load gcc/11.3.0

  - name: gcc
    machine: helvetios
    snippet: |
      module load gcc/9.3.0

  - name: conda_init
    uses: gcc
    snippet: |
      . "/home/tdegeus/miniforge3/etc/profile.d/conda.sh"
      export PATH="/home/tdegeus/miniforge3/bin:$PATH"

  - name: conda_helpers
    uses: conda_init
    snippet: |
      # print current environment
      conda_echo_env()
      {
          echo "conda env: $CONDA_DEFAULT_ENV"
      }

      # reactivate current environment
      conda_reactivate ()
      {
          mycondacurrentenv="$CONDA_DEFAULT_ENV"
          conda deactivate
          conda activate "$mycondacurrentenv"
      }

      # deactivate all environments, except base
      conda_deactivate_recursive ()
      {
          while [[ "$CONDA_DEFAULT_ENV" != "base" ]]; do
              conda deactivate
          done
          conda_echo_env
      }

      # activate environment starting from base
      # param: environment_name
      conda_activate ()
      {
          conda_deactivate_recursive
          conda activate "$1"
          conda_echo_env
      }

  - name: conda_activate_myenv
    uses: [conda_init, conda_helpers]
    machine: jed
    snippet: conda activate "myenv_jed"

  - name: omp_serial
    snippet: export OMP_NUM_THREADS=1