In support for SLURM, abba has function to schedule and manage R programs on connected SLURM cluster. At a high level, these functions break down into three different categories:
- Submit a job
- Get job status
- Wait for job completion
- Retrieve the log of the job
Functions specifically for interfacing with SLURM follow the naming
convention abba_slurm_*.
Submit a Job
Job submission is handled by the function
abba_slurm_submit_job().
abba_slurm_submit_job(
"/home/mike.stackhouse/repos/abba/test_programs/test_program.R",
log_path = "/home/mike.stackhouse/test_logs"
)
# [1] "38"Note that this returns a vector with job id and name being path of the program. The Job ID is the identifier used downstream to interact with SLURM.
log_path is required and specifies the directory where
the program’s log file will be written. abba does not fall back to a
default location in the user’s filespace.
Get Job Status
Once the job is running in SLURM, abba can poll its
status. This can be done using the function
abba_slurm_get_job_status()
abba_slurm_get_job_status("57")
# 57
# "COMPLETED" The job statuses can be “RUNNING”, “COMPLETED”, FAILED etc. For a complete list of SLURM job statuses, please refer to documentation.
Get the Log Content
In this context, the “log” refers to the stdout/stderr of the program itself. This returns into a list object with the Job ID and the individual lines written out by the program. The content will contain all of the console output from the program itself.
abba_slurm_get_job_log("38")
# [[1]]
# [1] "[1] 4" "Warning message:" "This is a test warning " "La-di-da" Submit a batch of jobs to SLURM cluster
Here is an example of using SLURM submission functions in abba_submit_batch. Additional arguments like log_path will be passed on to submit_func
abba_submit_batch(list("/home/mike.stackhouse/repos/abba/test_programs/test_program.R", "/home/mike.stackhouse/repos/abba/test_programs/test_program.R"),
submit_func=abba_slurm_submit_job,
wait_func=abba_slurm_watch_job,
succeed_func=abba_slurm_get_job_succeeded,
log_path="/home/mike.stackhouse/test_logs")
# Submitting program:
# /home/mike.stackhouse/repos/abba/test_programs/test_program.R
# Submitting program:
# /home/mike.stackhouse/repos/abba/test_programs/test_program.R
# /home/mike.stackhouse/repos/abba/test_programs/test_program.R /home/mike.stackhouse/repos/abba/test_programs/test_program.R
"48" "49"