slurm_script_generator.slurm_script#

Classes

SlurmScript([account, array, begin, bell, ...])

Class representing a Slurm batch script with pragmas, modules, and custom commands.

class slurm_script_generator.slurm_script.SlurmScript(account: str | None = None, array: str | None = None, begin: str | None = None, bell: str | None = None, burst_buffer: str | None = None, bb_file: str | None = None, cpus_per_task: int | None = None, comment: str | None = None, container: str | None = None, container_id: str | None = None, cpu_freq: str | None = None, delay_boot: str | None = None, dependency: str | None = None, deadline: str | None = None, chdir: str | None = None, get_user_env: str | None = None, gres: str | None = None, gres_flags: str | None = None, hold: str | None = None, immediate: str | None = None, job_name: str | None = None, no_kill: str | None = None, kill_command: str | None = None, licenses: str | None = None, clusters: str | None = None, distribution: str | None = None, mail_type: str | None = None, mail_user: str | None = None, mcs_label: str | None = None, ntasks: str | None = None, nice: int | None = None, nodes: int | None = None, ntasks_per_node: int | None = None, oom_kill_step: str | None = None, overcommit: str | None = None, power: str | None = None, priority: str | None = None, profile: str | None = None, partition: str | None = None, qos: str | None = None, quiet: str | None = None, reboot: str | None = None, oversubscribe: str | None = None, signal: str | None = None, spread_job: str | None = None, stderr: str | None = None, stdout: str | None = None, switches: str | None = None, core_spec: str | None = None, thread_spec: str | None = None, time: str | None = None, time_min: str | None = None, tres_bind: str | None = None, tres_per_task: str | None = None, use_min_nodes: str | None = None, wckey: str | None = None, cluster_constraint: str | None = None, contiguous: str | None = None, constraint: str | None = None, nodefile: str | None = None, mem: str | None = None, mincpus: str | None = None, reservation: str | None = None, tmp: str | None = None, nodelist: str | None = None, exclude: str | None = None, exclusive_user: str | None = None, exclusive_mcs: str | None = None, mem_per_cpu: str | None = None, resv_ports: str | None = None, sockets_per_node: int | None = None, cores_per_socket: int | None = None, threads_per_core: int | None = None, extra_node_info: str | None = None, ntasks_per_core: int | None = None, ntasks_per_socket: int | None = None, hint: str | None = None, mem_bind: str | None = None, cpus_per_gpu: int | None = None, gpus: str | None = None, gpu_bind: str | None = None, gpu_freq: str | None = None, gpus_per_node: str | None = None, gpus_per_socket: str | None = None, gpus_per_task: str | None = None, mem_per_gpu: str | None = None, disable_stdout_job_summary: str | None = None, nvmps: str | None = None, pragmas: List[Pragma] | None = None, modules: List[str] | None = None, custom_command: str | None = None, custom_commands: list | None = None, inlined_script: str | None = None, inlined_scripts: list | None = None, line_length: int = 54)[source]#

Bases: object

Class representing a Slurm batch script with pragmas, modules, and custom commands.

Parameters:
  • account (str, optional) – The account to charge for the job.

  • array (str, optional) – The job array specification.

  • begin (str, optional) – The time to begin the job.

  • bell (str, optional) – Ring terminal bell when job is allocated.

  • burst_buffer (str, optional) – Burst buffer specifications.

  • bb_file (str, optional) – Burst buffer specification file.

  • cpus_per_task (int, optional) – Number of CPUs required per task.

  • comment (str, optional) – Arbitrary comment for the job.

  • container (str, optional) – Path to OCI container bundle.

  • container_id (str, optional) – OCI container ID.

  • cpu_freq (str, optional) – Requested CPU frequency and governor.

  • delay_boot (str, optional) – Delay boot for desired node features.

  • dependency (str, optional) – Job dependency specification.

  • deadline (str, optional) – Remove job if no ending possible before deadline.

  • chdir (str, optional) – Change working directory for the job.

  • get_user_env (str, optional) – Used by Moab for environment setup.

  • gres (str, optional) – Required generic resources.

  • gres_flags (str, optional) – Flags related to GRES management.

  • hold (str, optional) – Submit job in held state.

  • immediate (str, optional) – Exit if resources not available within seconds.

  • job_name (str, optional) – Name of the job.

  • no_kill (str, optional) – Do not kill job on node failure.

  • kill_command (str, optional) – Signal to send terminating job.

  • licenses (str, optional) – Required licenses, comma separated.

  • clusters (str, optional) – Comma separated list of clusters.

  • distribution (str, optional) – Distribution method for processes.

  • mail_type (str, optional) – Notify on state change.

  • mail_user (str, optional) – Email for job state changes.

  • mcs_label (str, optional) – MCS label if mcs plugin is used.

  • ntasks (str, optional) – Number of processors required.

  • nice (str, optional) – Decrease scheduling priority by value.

  • nodes (int, optional) – Number of nodes to allocate.

  • ntasks_per_node (int, optional) – Number of tasks to invoke on each node.

  • oom_kill_step (str, optional) – Set OOMKillStep behaviour.

  • overcommit (str, optional) – Overcommit resources.

  • power (str, optional) – Power management options.

  • priority (str, optional) – Set job priority.

  • profile (str, optional) – Enable acct_gather_profile for detailed data.

  • partition (str, optional) – Partition requested.

  • qos (str, optional) – Quality of service.

  • quiet (str, optional) – Suppress informational messages.

  • reboot (str, optional) – Reboot compute nodes before starting job.

  • oversubscribe (str, optional) – Oversubscribe resources with other jobs.

  • signal (str, optional) – Send signal when time limit within seconds.

  • spread_job (str, optional) – Spread job across as many nodes as possible.

  • stderr (str, optional) – Redirect stderr to file.

  • stdout (str, optional) – Redirect stdout to file.

  • switches (str, optional) – Optimum switches and max wait time.

  • core_spec (str, optional) – Count of reserved cores.

  • thread_spec (str, optional) – Count of reserved threads.

  • time (str, optional) – Time limit for the job.

  • time_min (str, optional) – Minimum time limit.

  • tres_bind (str, optional) – Task to TRES binding options.

  • tres_per_task (str, optional) – TRES required per task.

  • use_min_nodes (str, optional) – Prefer smaller node count.

  • wckey (str, optional) – Wckey to run job under.

  • cluster_constraint (str, optional) – List of cluster constraints.

  • contiguous (str, optional) – Demand contiguous range of nodes.

  • constraint (str, optional) – List of constraints.

  • nodefile (str, optional) – Request specific list of hosts from file.

  • mem (str, optional) – Minimum real memory required.

  • mincpus (str, optional) – Minimum logical processors per node.

  • reservation (str, optional) – Allocate resources from named reservation.

  • tmp (str, optional) – Minimum temporary disk required.

  • nodelist (str, optional) – Request specific list of hosts.

  • exclude (str, optional) – Exclude specific list of hosts.

  • exclusive_user (str, optional) – Allocate nodes in exclusive mode.

  • exclusive_mcs (str, optional) – Exclusive mode when mcs plugin enabled.

  • mem_per_cpu (str, optional) – Real memory per allocated CPU.

  • resv_ports (str, optional) – Reserve communication ports.

  • sockets_per_node (int, optional) – Number of sockets per node to allocate.

  • cores_per_socket (int, optional) – Number of cores per socket to allocate.

  • threads_per_core (int, optional) – Number of threads per core to allocate.

  • extra_node_info (str, optional) – Combine sockets, cores, threads.

  • ntasks_per_core (int, optional) – Number of tasks per core.

  • ntasks_per_socket (int, optional) – Number of tasks per socket.

  • hint (str, optional) – Application binding hints.

  • mem_bind (str, optional) – Bind memory to locality domains.

  • cpus_per_gpu (int, optional) – Number of CPUs required per allocated GPU.

  • gpus (str, optional) – Count of GPUs required.

  • gpu_bind (str, optional) – Task to GPU binding options.

  • gpu_freq (str, optional) – Frequency and voltage of GPUs.

  • gpus_per_node (str, optional) – GPUs per allocated node.

  • gpus_per_socket (str, optional) – GPUs per allocated socket.

  • gpus_per_task (str, optional) – GPUs per spawned task.

  • mem_per_gpu (str, optional) – Real memory per allocated GPU.

  • disable_stdout_job_summary (str, optional) – Disable job summary in stdout file.

  • nvmps (str, optional) – Launch NVIDIA MPS for job.

  • pragmas (List[Pragma], optional) – List of pragmas to add to the script.

  • modules (List[str], optional) – List of modules to load in the script.

  • custom_command (str, optional) – Custom command to run in the script.

  • custom_commands (list, optional) – List of custom commands to run in the script.

  • inlined_script (str, optional) – Inline script to include in the batch script.

  • inlined_scripts (list, optional) – List of inline scripts to include in the batch script.

  • line_length (int, optional) – Line length for formatting output.

add_custom_command(command: str) None[source]#

Add a single custom command to the script.

Parameters:

command (str) – The custom command to add.

add_custom_commands(commands: List[str] | None) None[source]#

Add multiple custom commands to the script.

Parameters:

commands (list of str, optional) – List of custom commands to add.

add_inlined_script(path: str) None[source]#

Add lines from an inlined script file to the custom commands.

Parameters:

path (str) – Path to the script file to inline.

add_inlined_scripts(paths: List[str] | None) None[source]#

Add lines from multiple inlined script files to the custom commands.

Parameters:

paths (list of str, optional) – List of script file paths to inline.

add_module(module: str) None[source]#

Add a single module to the script.

Parameters:

module (str) – The module to add.

add_modules(modules: List[str] | None) None[source]#

Add multiple modules to the script.

Parameters:

modules (list of str, optional) – List of modules to add.

add_param(key: str, value: Any) None[source]#

Add a non-pragma parameter to the script.

Parameters:
  • key (str) – The parameter key.

  • value (Any) – The parameter value.

add_pragma(pragma: Pragma) None[source]#

Add a Pragma object to the script, replacing any existing pragma with the same destination.

Parameters:

pragma (Pragma) – The Pragma object to add.

add_pragmas(pragmas: List[Pragma] | None) None[source]#

Add multiple Pragma objects to the script.

Parameters:

pragmas (list of Pragma, optional) – List of Pragma objects to add.

property custom_commands: List[str]#

Get the list of custom commands to run in the script.

Returns:

List of custom command strings.

Return type:

List[str]

static from_dict(data: dict[str, Any]) SlurmScript[source]#

Create a SlurmScript instance from a dictionary.

Parameters:

data (dict[str, Any]) – Dictionary containing the SlurmScript data.

Returns:

The constructed SlurmScript object.

Return type:

SlurmScript

static from_json(path: str) SlurmScript[source]#

Load a SlurmScript instance from a JSON file.

Parameters:

path (str) – Path to the JSON file to load.

Returns:

The constructed SlurmScript object.

Return type:

SlurmScript

static from_script(script: str, verbose: bool = False) SlurmScript[source]#

Parse a SLURM script string and create a SlurmScript instance.

Parameters:
  • script (str) – SLURM script content.

  • verbose (bool :) – (Default value = False)

Returns:

The constructed SlurmScript object.

Return type:

SlurmScript

generate_script(line_length: int = 54, include_header: bool = False) str[source]#
Parameters:
  • line_length – int: (Default value = 54)

  • include_header – bool: (Default value = False)

property line_length: int#

Get the maximum line length for the script, used for formatting the output. This value is used to determine how many characters fit on a line when generating the script string, and is also used for formatting the header and section separators.

Returns:

The line length value.

Return type:

int

property modules: List[str]#

Get the list of modules to load in the script.

Returns:

List of module names.

Return type:

List[str]

property pragmas: List[Pragma]#

Get the list of Pragma objects in the script.

Returns:

List of all Pragma instances.

Return type:

List[Pragma]

static read_script(path: str, verbose: bool = False) SlurmScript[source]#

Read a SLURM script from a file and parse it into a SlurmScript instance.

Parameters:
  • path (str) – Path to the script file.

  • verbose (bool) – Whether to enable verbose output. (Default value = False)

Returns:

The parsed SlurmScript object.

Return type:

SlurmScript

save(path: str, include_header: bool = True) None[source]#

Save the generated SLURM script to a file.

Parameters:
  • path (str) – Path to save the script file.

  • include_header (bool) – Whether to include the script header.

submit_job(path: str) None[source]#

Submit the SLURM script as a job using sbatch.

Parameters:

path (str) – Path to the script file to submit.

Raises:

RuntimeError – If sbatch fails to submit the job.

to_dict() dict[str, Any][source]#

Convert the SlurmScript instance to a dictionary representation.

Returns:

Dictionary with keys ‘pragmas’, ‘modules’, and ‘custom_commands’.

Return type:

dict[str, Any]

to_json(path: str) None[source]#

Save the SlurmScript instance as a JSON file.

Parameters:

path (str) – Path to save the JSON file.

to_string(include_header: bool = True) str[source]#

Generate the SLURM script as a string.

Parameters:

include_header (bool) – Whether to include the header in the generated script. (Default value = True)

Returns:

The generated script string.

Return type:

str