# How do I convert my openmpi PBS job script to a SLURM script?

**URL:** <https://ask.cyberinfrastructure.org/t/how-do-i-convert-my-openmpi-pbs-job-script-to-a-slurm-script/32>\
**Category:** Q&A\
**Tags:** slurm, scripting, scheduler, researcher\
**Created:** [March 8, 2018, 5:56pm UTC](https://ask.cyberinfrastructure.org/t/how-do-i-convert-my-openmpi-pbs-job-script-to-a-slurm-script/32 "2018-03-08T17:56:12Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![toreliza](https://ask.cyberinfrastructure.org/user_avatar/ask.cyberinfrastructure.org/toreliza/32/157_2.png) [@toreliza](https://ask.cyberinfrastructure.org/u/toreliza)\
**Post date:** [March 8, 2018, 5:56pm UTC](https://ask.cyberinfrastructure.org/t/how-do-i-convert-my-openmpi-pbs-job-script-to-a-slurm-script/32/1 "2018-03-08T17:56:13Z")

</div>

How can I convert this PBS script to SLURM?

In particular, I’m not quite sure which parameters to use with SLURM that will provide the same behavior as this parameter in the PBS script: `-l nodes=2:ppn=16`

```auto
#!/bin/bash                                                                      
#PBS -l nodes=2:ppn=16                                                                                                                        
#PBS -N abcName                                                       
#PBS -A 9876                                                                
#PBS -o $PBS_JOBID.stdout                                        
#PBS -e $PBS_JOBID.stderr                                        
#PBS -r n                                                                       
#PBS -M mlacount@mines.edu                                  
#PBS -m abe                                                                
#PBS -V                                                                        
#PBS -l walltime=3:00:00                                            
#-----------------------------------------------------
module load PrgEnv/intel/default
module load openmpi/intel/default
module load PrgEnv/libs/fftw/3.3.3
module load Apps/RGWBS/Jan2_2009

cd $PBS_O_WORKDIR

#save a nicely sorted list of nodes
#sort -u $PBS_NODEFILE > mynodes.$PBS_JOBID

mpiexec parsec.mpi > parsec.$PBS_JOBID.log
mpiexec tdlda.mpi > tdlda.$PBS_JOBID.log
mpiexec sigma.mpi > sigma.$PBS_JOBID.log
mpiexec bsesolv.mpi > bse.$PBS_JOBID.log

```

---

<div class="post-metadata">

**Author:** ![toreliza](https://ask.cyberinfrastructure.org/user_avatar/ask.cyberinfrastructure.org/toreliza/32/157_2.png) [@toreliza](https://ask.cyberinfrastructure.org/u/toreliza)\
**Post date:** [April 10, 2018, 3:52pm UTC](https://ask.cyberinfrastructure.org/t/how-do-i-convert-my-openmpi-pbs-job-script-to-a-slurm-script/32/3 "2018-04-10T15:52:57Z")

</div>

```auto
#!/bin/bash #!/bin/bash
#PBS -l nodes=2:ppn=16 #SBATCH --nodes=2      
                                #SBATCH -n 16
#PBS -N abcName #SBATCH --job-name="abcName"
#PBS -A 9876 #SBATCH --account=9876
#PBS -o $PBS_JOBID.stdout #SBATCH -o $SLURM_JOBID.out
#PBS -e $PBS_JOBID.stderr #SBATCH -e $SLURM_JOBID.err
#PBS -r n #SBATCH --no-requeue
#PBS -M baz@foo.edu #SBATCH --mail-user=baz@foo.edu
#PBS -m abe #SBATCH --mail-type=all
#PBS -V #SBATCH --export=ALL
#PBS -l walltime=3:00:00 #SBATCH -t 180                           
#-----------------------------------------------------

module load PrgEnv/intel/default module load PrgEnv/intel/default							
module load openmpi/intel/default module load openmpi/intel/default
module load PrgEnv/libs/fftw/3.3.3 module load PrgEnv/libs/fftw/3.3.3
module load Apps/RGWBS/Jan2_2009 module load Apps/RGWBS/Jan2_2009

cd $PBS_O_WORKDIR cd $SLURM_SUBMIT_DIR

mpiexec parsec.mpi > parsec.$PBS_JOBID.log	srun parsec.$SLURM_JOBID.log
mpiexec tdlda.mpi > tdlda.$PBS_JOBID.log	srun tdlda.$PBS_JOBID.log
mpiexec sigma.mpi > sigma.$PBS_JOBID.log	srun sigma.$PBS_JOBID.log
mpiexec bsesolv.mpi > bse.$PBS_JOBID.log	srun bse.$PBS_JOBID.log

```

SchedMD provides a document that helps translate between different schedulers: [SLURM Rosetta Stone](https://slurm.schedmd.com/rosetta.pdf)

NOTES: In PBS, there is no equivalent to SLURM’s `cpus-per-task`. PBS scripts are based on a quantity called Processor Equivalent (PE), a scalar value that is the maximum result among four job and system-dependent parameters. We tended to base PBS scripts on number of nodes and processors per node, as shown above; far left PBS script. SLURM allows a script to specify resources in terms of tasks; the above SLURM script (center script) is an attempt to make a ‘direct’ translation. These examples are just that; there are other valid parameter combinations that can achieve similar configuration goals.

Recommended SLURM script:

```auto
#!/bin/bash                              
#SBATCH --nodes=2
#SBATCH --tasks-per-node=8                       
#SBATCH --cpus-per-task=2                            
#SBATCH --job-name="abcName"             
#SBATCH --account=9876                   
#SBATCH -o $SLURM_JOBID.out              
#SBATCH -e $SLURM_JOBID.err                                   
#SBATCH --mail-user=baz@foo.edu
#SBATCH --mail-type=all                  
#SBATCH --export=ALL                     
#SBATCH -t 180

module load PrgEnv/intel/default							
module load openmpi/intel/default
module load PrgEnv/libs/fftw/3.3.3
module load Apps/RGWBS/Jan2_2009

cd $SLURM_SUBMIT_DIR

srun parsec.$SLURM_JOBID.log
srun tdlda.$PBS_JOBID.log
srun sigma.$PBS_JOBID.log
srun bse.$PBS_JOBID.log

```

---

<div class="post-metadata">

**Author:** ![jma](https://ask.cyberinfrastructure.org/user_avatar/ask.cyberinfrastructure.org/jma/32/303_2.png) [@jma](https://ask.cyberinfrastructure.org/u/jma)\
**Post date:** [May 8, 2018, 7:15pm UTC](https://ask.cyberinfrastructure.org/t/how-do-i-convert-my-openmpi-pbs-job-script-to-a-slurm-script/32/5 "2018-05-08T19:15:27Z")

</div>


