SLURM Demo: Difference between revisions

From Stat DS Computing Wiki
Jacobg2 (talk | contribs)
No edit summary
 
(15 intermediate revisions by one other user not shown)
Line 1: Line 1:
[[Category:Remote Server Access]]
[[Category:Wright Cluster]]
[[Category:PSC]]
This page will walk you through submitting a job using SLURM. It will also cover basic Linux usage.
This page will walk you through submitting a job using SLURM. It will also cover basic Linux usage.


== Copy SLURM Demo Files ==
== 1 - Copy SLURM Demo Files ==


====== This section will cover copying example SLURM files to your own personal location. ======
1 - Log in to the head node server using your StatDS computing account through your terminal. (If you forget your password, reset it [https://util.stat.cmu.edu/passwordreset/ here].)


Log in to the head node server using your StatDS computing account through your terminal. (If you forget your password, reset it here.) This cluster is used for demonstration purposes only. Actual compute jobs are not meant to be submitted to this cluster.<syntaxhighlight lang="bash">
* ''This cluster is used for demonstration purposes only. Actual compute jobs are not meant to be submitted to this cluster.''
<syntaxhighlight lang="bash">
ssh statdsuser@ood.stat.cmu.edu
ssh statdsuser@ood.stat.cmu.edu
</syntaxhighlight>Copy the SLURM Demo folder to your home directory. Do not run these files without moving them to your own working directory.<syntaxhighlight lang="bash">
</syntaxhighlight>2 - Copy the SLURM demo folder to your home directory. Do not run these files without moving them to your own working directory.<syntaxhighlight lang="bash">
cp -r /share/slurmdemo ~/slurmdemo
cp -r /share/slurmdemo ~/slurmdemo
</syntaxhighlight>Navigate to your new SLURM Demo directory.<syntaxhighlight lang="bash">
</syntaxhighlight>3 - Navigate to your new SLURM Demo directory.<syntaxhighlight lang="bash">
cd ~/slurmdemo
cd ~/slurmdemo
</syntaxhighlight>View the contents of the SLURM Demo directory.<syntaxhighlight lang="bash">
</syntaxhighlight>4 - View the contents of the SLURM Demo directory.<syntaxhighlight lang="bash">
ls -l
ls -l
</syntaxhighlight>
</syntaxhighlight>


== Submit SLURM Job ==
== 2 - Submit SLURM Job ==
Modify the “submit_bash.sh” script. Make sure that you are in the correct directory that has the SLURM files from the section above.
 
====== This section will demonstrate submitting a job using SLURM. ======
1 - Modify the “submit_bash.sh” script. Make sure that you are in the correct directory that has the SLURM demo files from the section above.


''You may use any text editor (vim, vi, nano, etc). In this example nano will be used.''<syntaxhighlight lang="bash">
* ''You may use any text editor (vim, vi, nano, etc). In this example nano will be used.''<syntaxhighlight lang="bash">
nano submit_bash.sh
nano submit_bash.sh
</syntaxhighlight>Change these three lines and make them more specific to you.<syntaxhighlight lang="bash">
</syntaxhighlight>2 - Change these three lines and make them more specific to you.<syntaxhighlight lang="bash">
SBATCH --job-name=yourjobuniquename
SBATCH --job-name=yourjobuniquename
This is the name of your job.
- This is the name of your job.


SBATCH --output=yourjoboutputfile_%j.out
SBATCH --output=yourjoboutputfile_%j.out
This is the name of your job’s output file. Any intentional output generated from your job will be placed into this file. The “%j” will add the job’s unique JobID to the name.
- This is the name of your job’s output file. Any intentional output generated from your job will be placed into this file. The “%j” will add the job’s unique JobID to the name.


SBATCH --error=yourjoberrorfile_%j.err
SBATCH --error=yourjoberrorfile_%j.err
This is the name of your job’s error file. Any unintentional errors generated in the script will be placed into this file. The “%j” will add the job’s unique JobID to the name.
- This is the name of your job’s error file. Any unintentional errors generated in the script will be placed into this file. The “%j” will add the job’s unique JobID to the name.
</syntaxhighlight>
</syntaxhighlight>


Run the submit script<syntaxhighlight lang="bash">
3 - Run the submit script.<syntaxhighlight lang="bash">
sbatch submit_bash.sh
sbatch submit_bash.sh
</syntaxhighlight>Once you submit your job, you can view the status of it by running the command below. This will show only your jobs<syntaxhighlight lang="bash">
</syntaxhighlight>4 - Once you submit your job, you can view the status of it by running the command below. This will only show your jobs.<syntaxhighlight lang="bash">
squeue -u $USER
squeue -u $USER
</syntaxhighlight>To view every running job, run the command below.<syntaxhighlight lang="bash">
</syntaxhighlight>5 - To view every running job, run the command below.<syntaxhighlight lang="bash">
squeue
squeue
</syntaxhighlight>
</syntaxhighlight>


6 - Once your job has finished, view the contents of your output file. Use your unique output file name as modified in step 2.<syntaxhighlight lang="bash">
cat yourjoboutputfile_%j.out
</syntaxhighlight>
== 3 - Submit SLURM Job with an Error==
====== This section will demonstrate submitting a job using SLURM that produces an error. ======
In addition to the regular output file, SLURM produces a dedicated file that contains any errors in your script. In some cases this is the only file that will contain any output.
Rename the error file in your own submit_err.sh. Modify the line shown below. <syntaxhighlight lang="bash">
#SBATCH --error=yourjoberrorfile_%j.err</syntaxhighlight>


Once your job has finished, view the output file once the script is finished (use your unique outfile name)<syntaxhighlight lang="bash">
To see an example, run "submit_err.sh". This job runs a Python script with a syntax error.<syntaxhighlight lang="bash">
cat outputfile.out
sbatch submit_err.sh
</syntaxhighlight>View the contents of the error output file.<syntaxhighlight lang="bash">
cat nameofyourerrfile.err
</syntaxhighlight>
</syntaxhighlight>
== Additional Information ==
====== Requesting Additional Resources ======
SLURM allows you to request multiple CPU cores, a specified amount of RAM, and even GPUs if they are available. Requesting more than 1 CPU is especially important when paralyzing tasks. Below is an example submit script that shows how to declare each.<syntaxhighlight lang="bash">
!/bin/bash
SBATCH --partition selectedpartition
SBATCH --ntasks 1
##number of CPUs you need:
SBATCH --cpus-per-task 6
##Amount of RAM in GB
SBATCH --mem 10G
##Number of GPUs
SBATCH --gres=gpu:1
</syntaxhighlight>For more information about SLURM, [https://info.stat.cmu.edu/index.php?title=Slurm visit this page here].

Latest revision as of 03:33, 29 June 2026


This page will walk you through submitting a job using SLURM. It will also cover basic Linux usage.

1 - Copy SLURM Demo Files

This section will cover copying example SLURM files to your own personal location.

1 - Log in to the head node server using your StatDS computing account through your terminal. (If you forget your password, reset it here.)

  • This cluster is used for demonstration purposes only. Actual compute jobs are not meant to be submitted to this cluster.
ssh statdsuser@ood.stat.cmu.edu

2 - Copy the SLURM demo folder to your home directory. Do not run these files without moving them to your own working directory.

cp -r /share/slurmdemo ~/slurmdemo

3 - Navigate to your new SLURM Demo directory.

cd ~/slurmdemo

4 - View the contents of the SLURM Demo directory.

ls -l

2 - Submit SLURM Job

This section will demonstrate submitting a job using SLURM.

1 - Modify the “submit_bash.sh” script. Make sure that you are in the correct directory that has the SLURM demo files from the section above.

  • You may use any text editor (vim, vi, nano, etc). In this example nano will be used.
    nano submit_bash.sh
    2 - Change these three lines and make them more specific to you.
    SBATCH --job-name=yourjobuniquename
    - This is the name of your job.
    
    SBATCH --output=yourjoboutputfile_%j.out
    - This is the name of your job’s output file. Any intentional output generated from your job will be placed into this file. The “%j” will add the job’s unique JobID to the name.
    
    SBATCH --error=yourjoberrorfile_%j.err
    - This is the name of your job’s error file. Any unintentional errors generated in the script will be placed into this file. The “%j” will add the job’s unique JobID to the name.

3 - Run the submit script.

sbatch submit_bash.sh

4 - Once you submit your job, you can view the status of it by running the command below. This will only show your jobs.

squeue -u $USER

5 - To view every running job, run the command below.

squeue

6 - Once your job has finished, view the contents of your output file. Use your unique output file name as modified in step 2.

cat yourjoboutputfile_%j.out

3 - Submit SLURM Job with an Error

This section will demonstrate submitting a job using SLURM that produces an error.

In addition to the regular output file, SLURM produces a dedicated file that contains any errors in your script. In some cases this is the only file that will contain any output.

Rename the error file in your own submit_err.sh. Modify the line shown below.

#SBATCH --error=yourjoberrorfile_%j.err

To see an example, run "submit_err.sh". This job runs a Python script with a syntax error.

sbatch submit_err.sh

View the contents of the error output file.

cat nameofyourerrfile.err


Additional Information

Requesting Additional Resources

SLURM allows you to request multiple CPU cores, a specified amount of RAM, and even GPUs if they are available. Requesting more than 1 CPU is especially important when paralyzing tasks. Below is an example submit script that shows how to declare each.

!/bin/bash

SBATCH --partition selectedpartition
SBATCH --ntasks 1

##number of CPUs you need:
SBATCH --cpus-per-task 6

##Amount of RAM in GB
SBATCH --mem 10G

##Number of GPUs
SBATCH --gres=gpu:1

For more information about SLURM, visit this page here.