<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.nimbios.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jondale</id>
	<title>NIMBioS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.nimbios.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jondale"/>
	<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/Special:Contributions/Jondale"/>
	<updated>2026-06-13T04:51:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.2</generator>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=263</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=263"/>
		<updated>2026-01-12T21:44:02Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  &lt;br /&gt;
&lt;br /&gt;
Please review the following pages for OS specific instructions:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to easily set your session or job's environment to support the language, libraries, and specific versions needed.&lt;br /&gt;
&lt;br /&gt;
To learn more about using Lmod on Rocky, check out [[ Rocky_Environments | Rocky Environments]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Submitting a Job ==&lt;br /&gt;
&lt;br /&gt;
Rocky uses [https://slurm.schedmd.com/documentation.html Slurm] to queue and submit jobs to the cluster's compute nodes.  &lt;br /&gt;
&lt;br /&gt;
The nature of a compute cluster is that jobs are meant to be submitted to a queue.  Jobs are processed based on a [https://slurm.schedmd.com/classic_fair_share.html Fairshare] priority system.  Your job's priority is based on the associations you have (such as your lab) and how much compute you and they have used recently.  Sometimes your jobs might run instantly but other times you might have a wait time before they process.   &lt;br /&gt;
&lt;br /&gt;
To learn how to set up your own jobs, check out the [[Rocky_Job_Anatomy | Anatomy of a Rocky Job]]&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Beyond the below examples, we have also started a [https://github.com/rocky-cluster Github Repository].&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
* [[ Rocky_Python_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_Python_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_Python_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== R ====&lt;br /&gt;
* [[ Rocky_R_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_R_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_R_package | Install packages locally ]]&lt;br /&gt;
&lt;br /&gt;
==== MATLAB ====&lt;br /&gt;
* [[ Rocky_MATLAB_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_MATLAB_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
* [[ Rocky_MPI_Hello_World | Hello World (C) ]]&lt;br /&gt;
* [[ Rocky_Python_MPI_Hello_World | Hello World (Python) ]]&lt;br /&gt;
&lt;br /&gt;
= Acknowledgement and Citations =&lt;br /&gt;
&lt;br /&gt;
If any work on Rocky is used in a research report, journal, or publication that requires citation of authors' work, please acknowledge NIMBioS.  &lt;br /&gt;
&lt;br /&gt;
Our suggested acknowledgment is as follows.&lt;br /&gt;
&lt;br /&gt;
'''[A portion of] The computation for this work was performed on the National Institute for Modeling Biological Systems (NIMBioS) computational resources at the University of Tennessee.'''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=262</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=262"/>
		<updated>2026-01-12T21:43:37Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  &lt;br /&gt;
&lt;br /&gt;
Please review the following pages for OS specific instructions:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to easily set your session or job's environment to support the language, libraries, and specific versions needed.&lt;br /&gt;
&lt;br /&gt;
To learn more about using Lmod on Rocky, check out [[ Rocky_Environments | Rocky Environments]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Submitting a Job ==&lt;br /&gt;
&lt;br /&gt;
Rocky uses [https://slurm.schedmd.com/documentation.html Slurm] to queue and submit jobs to the cluster's compute nodes.  &lt;br /&gt;
&lt;br /&gt;
The nature of a compute cluster is that jobs are meant to be submitted to a queue.  Jobs are processed based on a [https://slurm.schedmd.com/classic_fair_share.html Fairshare] priority system.  Your job's priority is based on the associations you have (such as your lab) and how much compute you and they have used recently.  Sometimes your jobs might run instantly but other times you might have a wait time before they process.   &lt;br /&gt;
&lt;br /&gt;
To learn how to set up your own jobs, check out the [[Rocky_Job_Anatomy | Anatomy of a Rocky Job]]&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Beyond the below examples, we have also started a [https://github.com/rocky-cluster Github Repository].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
* [[ Rocky_Python_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_Python_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_Python_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== R ====&lt;br /&gt;
* [[ Rocky_R_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_R_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_R_package | Install packages locally ]]&lt;br /&gt;
&lt;br /&gt;
==== MATLAB ====&lt;br /&gt;
* [[ Rocky_MATLAB_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_MATLAB_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== MPI ====&lt;br /&gt;
* [[ Rocky_MPI_Hello_World | Hello World (C) ]]&lt;br /&gt;
* [[ Rocky_Python_MPI_Hello_World | Hello World (Python) ]]&lt;br /&gt;
&lt;br /&gt;
= Acknowledgement and Citations =&lt;br /&gt;
&lt;br /&gt;
If any work on Rocky is used in a research report, journal, or publication that requires citation of authors' work, please acknowledge NIMBioS.  &lt;br /&gt;
&lt;br /&gt;
Our suggested acknowledgment is as follows.&lt;br /&gt;
&lt;br /&gt;
'''[A portion of] The computation for this work was performed on the National Institute for Modeling Biological Systems (NIMBioS) computational resources at the University of Tennessee.'''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=261</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=261"/>
		<updated>2026-01-12T20:35:32Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI4PY Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
Rocky supports PMIx v3 for MPI process management. MPI applications should be launched via srun using --mpi=pmix_v3.&lt;br /&gt;
&lt;br /&gt;
To see what versions of mpi4py are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider mpi4py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        mpi4py/3.0.1 (E)&lt;br /&gt;
        mpi4py/3.0.2 (E)&lt;br /&gt;
        mpi4py/3.0.3 (E)&lt;br /&gt;
        mpi4py/3.1.1 (E)&lt;br /&gt;
        mpi4py/3.1.3 (E)&lt;br /&gt;
        mpi4py/3.1.4-gompi-2022b&lt;br /&gt;
        mpi4py/3.1.4-gompi-2023a&lt;br /&gt;
        mpi4py/3.1.4 (E)&lt;br /&gt;
        mpi4py/3.1.5-gompi-2023b&lt;br /&gt;
        mpi4py/3.1.5 (E)&lt;br /&gt;
        mpi4py/3.1.6 (E)&lt;br /&gt;
        mpi4py/4.0.1-gompi-2024a&lt;br /&gt;
        mpi4py/4.0.1 (E)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above given information we are going to use &amp;lt;code&amp;gt;mpi4py/4.0.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
Note the usage of &amp;lt;code&amp;gt;--mpi=pmix_v3&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load mpi4py/4.0.1&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=260</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=260"/>
		<updated>2026-01-12T20:35:02Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI4PY Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
Rocky supports PMIx v3 for MPI process management. MPI applications should be launched via srun using --mpi=pmix_v3.&lt;br /&gt;
&lt;br /&gt;
To see what versions of mpi4py are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider mpi4py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        mpi4py/3.0.1 (E)&lt;br /&gt;
        mpi4py/3.0.2 (E)&lt;br /&gt;
        mpi4py/3.0.3 (E)&lt;br /&gt;
        mpi4py/3.1.1 (E)&lt;br /&gt;
        mpi4py/3.1.3 (E)&lt;br /&gt;
        mpi4py/3.1.4-gompi-2022b&lt;br /&gt;
        mpi4py/3.1.4-gompi-2023a&lt;br /&gt;
        mpi4py/3.1.4 (E)&lt;br /&gt;
        mpi4py/3.1.5-gompi-2023b&lt;br /&gt;
        mpi4py/3.1.5 (E)&lt;br /&gt;
        mpi4py/3.1.6 (E)&lt;br /&gt;
        mpi4py/4.0.1-gompi-2024a&lt;br /&gt;
        mpi4py/4.0.1 (E)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above given information we are going to use &amp;lt;code&amp;gt;OpenMPI/5.0.8-GCC-14.3.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpi4py/4.0.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
Note the usage of &amp;lt;code&amp;gt;--mpi=pmix_v3&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
module load mpi4py/4.0.1&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=259</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=259"/>
		<updated>2026-01-12T19:31:35Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
Rocky supports PMIx v3 for MPI process management. MPI applications should be launched via srun using --mpi=pmix_v3.&lt;br /&gt;
&lt;br /&gt;
To see what versions of OpenMPI are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider OpenMPI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of the writing of this document the versions available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        OpenMPI/3.1.1-GCC-7.3.0-2.30&lt;br /&gt;
        OpenMPI/3.1.3-GCC-8.2.0-2.31.1&lt;br /&gt;
        OpenMPI/3.1.4-GCC-8.3.0&lt;br /&gt;
        OpenMPI/4.0.3-GCC-9.3.0&lt;br /&gt;
        OpenMPI/4.0.5-GCC-10.2.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-10.3.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-11.2.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-11.3.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-12.2.0&lt;br /&gt;
        OpenMPI/4.1.5-GCC-12.3.0&lt;br /&gt;
        OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
        OpenMPI/5.0.3-GCC-13.3.0&lt;br /&gt;
        OpenMPI/5.0.7-GCC-14.2.0&lt;br /&gt;
        OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
        OpenMPI/5.0.8-llvm-compilers-20.1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
Load the appropriate version of OpenMPI you want to use and then compile your program with mpicc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates the binary file &amp;lt;code&amp;gt;hello_mpi&amp;lt;/code&amp;gt; that we will run in our job.&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
Create the batch file that we'll name &amp;lt;code&amp;gt;mpi_hello.sbatch&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Notice that we are using &amp;lt;code&amp;gt;--mpi=pmix_v3&amp;lt;/code&amp;gt; as a parameter to srun.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use sbatch to submit the job defined in our sbatch file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=258</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=258"/>
		<updated>2026-01-12T19:15:09Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI4PY Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
Rocky supports PMIx v3 for MPI process management. MPI applications should be launched via srun using --mpi=pmix_v3.&lt;br /&gt;
&lt;br /&gt;
To see what versions of OpenMPI are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider OpenMPI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of the writing of this document the versions available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        OpenMPI/3.1.1-GCC-7.3.0-2.30&lt;br /&gt;
        OpenMPI/3.1.3-GCC-8.2.0-2.31.1&lt;br /&gt;
        OpenMPI/3.1.4-GCC-8.3.0&lt;br /&gt;
        OpenMPI/4.0.3-GCC-9.3.0&lt;br /&gt;
        OpenMPI/4.0.5-GCC-10.2.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-10.3.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-11.2.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-11.3.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-12.2.0&lt;br /&gt;
        OpenMPI/4.1.5-GCC-12.3.0&lt;br /&gt;
        OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
        OpenMPI/5.0.3-GCC-13.3.0&lt;br /&gt;
        OpenMPI/5.0.7-GCC-14.2.0&lt;br /&gt;
        OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
        OpenMPI/5.0.8-llvm-compilers-20.1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, to see what version of mpi4py is available use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider mpi4py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        mpi4py/3.0.1 (E)&lt;br /&gt;
        mpi4py/3.0.2 (E)&lt;br /&gt;
        mpi4py/3.0.3 (E)&lt;br /&gt;
        mpi4py/3.1.1 (E)&lt;br /&gt;
        mpi4py/3.1.3 (E)&lt;br /&gt;
        mpi4py/3.1.4-gompi-2022b&lt;br /&gt;
        mpi4py/3.1.4-gompi-2023a&lt;br /&gt;
        mpi4py/3.1.4 (E)&lt;br /&gt;
        mpi4py/3.1.5-gompi-2023b&lt;br /&gt;
        mpi4py/3.1.5 (E)&lt;br /&gt;
        mpi4py/3.1.6 (E)&lt;br /&gt;
        mpi4py/4.0.1-gompi-2024a&lt;br /&gt;
        mpi4py/4.0.1 (E)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above given information we are going to use &amp;lt;code&amp;gt;OpenMPI/5.0.8-GCC-14.3.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpi4py/4.0.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
Note the usage of &amp;lt;code&amp;gt;--mpi=pmix_v3&amp;lt;/code&amp;gt; parameter.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
module load mpi4py/4.0.1&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=257</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=257"/>
		<updated>2026-01-12T19:08:10Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI4PY Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
Rocky supports PMIx v3 for MPI process management. MPI applications should be launched via srun using --mpi=pmix_v3.&lt;br /&gt;
&lt;br /&gt;
To see what versions of OpenMPI are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider OpenMPI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of the writing of this document the versions available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        OpenMPI/3.1.1-GCC-7.3.0-2.30&lt;br /&gt;
        OpenMPI/3.1.3-GCC-8.2.0-2.31.1&lt;br /&gt;
        OpenMPI/3.1.4-GCC-8.3.0&lt;br /&gt;
        OpenMPI/4.0.3-GCC-9.3.0&lt;br /&gt;
        OpenMPI/4.0.5-GCC-10.2.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-10.3.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-11.2.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-11.3.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-12.2.0&lt;br /&gt;
        OpenMPI/4.1.5-GCC-12.3.0&lt;br /&gt;
        OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
        OpenMPI/5.0.3-GCC-13.3.0&lt;br /&gt;
        OpenMPI/5.0.7-GCC-14.2.0&lt;br /&gt;
        OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
        OpenMPI/5.0.8-llvm-compilers-20.1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similarly, to see what version of mpi4py is available use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider mpi4py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        mpi4py/3.0.1 (E)&lt;br /&gt;
        mpi4py/3.0.2 (E)&lt;br /&gt;
        mpi4py/3.0.3 (E)&lt;br /&gt;
        mpi4py/3.1.1 (E)&lt;br /&gt;
        mpi4py/3.1.3 (E)&lt;br /&gt;
        mpi4py/3.1.4-gompi-2022b&lt;br /&gt;
        mpi4py/3.1.4-gompi-2023a&lt;br /&gt;
        mpi4py/3.1.4 (E)&lt;br /&gt;
        mpi4py/3.1.5-gompi-2023b&lt;br /&gt;
        mpi4py/3.1.5 (E)&lt;br /&gt;
        mpi4py/3.1.6 (E)&lt;br /&gt;
        mpi4py/4.0.1-gompi-2024a&lt;br /&gt;
        mpi4py/4.0.1 (E)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the above given information we are going to use &amp;lt;code&amp;gt;OpenMPI/5.0.8-GCC-14.3.0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;mpi4py/4.0.1&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
module load mpi4py/4.0.1&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=256</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=256"/>
		<updated>2026-01-12T19:01:27Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
Rocky supports PMIx v3 for MPI process management. MPI applications should be launched via srun using --mpi=pmix_v3.&lt;br /&gt;
&lt;br /&gt;
To see what versions of OpenMPI are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider OpenMPI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of the writing of this document the versions available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        OpenMPI/3.1.1-GCC-7.3.0-2.30&lt;br /&gt;
        OpenMPI/3.1.3-GCC-8.2.0-2.31.1&lt;br /&gt;
        OpenMPI/3.1.4-GCC-8.3.0&lt;br /&gt;
        OpenMPI/4.0.3-GCC-9.3.0&lt;br /&gt;
        OpenMPI/4.0.5-GCC-10.2.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-10.3.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-11.2.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-11.3.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-12.2.0&lt;br /&gt;
        OpenMPI/4.1.5-GCC-12.3.0&lt;br /&gt;
        OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
        OpenMPI/5.0.3-GCC-13.3.0&lt;br /&gt;
        OpenMPI/5.0.7-GCC-14.2.0&lt;br /&gt;
        OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
        OpenMPI/5.0.8-llvm-compilers-20.1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
Load the appropriate version of OpenMPI you want to use and then compile your program with mpicc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
Create the batch file that we'll name &amp;lt;code&amp;gt;mpi_hello.sbatch&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
Notice that we are using &amp;lt;code&amp;gt;--mpi=pmix_v3&amp;lt;/code&amp;gt; as a parameter to srun.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use sbatch to submit the job defined in our sbatch file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=255</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=255"/>
		<updated>2026-01-12T18:55:52Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported versions ==&lt;br /&gt;
&lt;br /&gt;
To see what versions of OpenMPI are available use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module spider OpenMPI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As of the writing of this document the versions available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     Versions:&lt;br /&gt;
        OpenMPI/3.1.1-GCC-7.3.0-2.30&lt;br /&gt;
        OpenMPI/3.1.3-GCC-8.2.0-2.31.1&lt;br /&gt;
        OpenMPI/3.1.4-GCC-8.3.0&lt;br /&gt;
        OpenMPI/4.0.3-GCC-9.3.0&lt;br /&gt;
        OpenMPI/4.0.5-GCC-10.2.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-10.3.0&lt;br /&gt;
        OpenMPI/4.1.1-GCC-11.2.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-11.3.0&lt;br /&gt;
        OpenMPI/4.1.4-GCC-12.2.0&lt;br /&gt;
        OpenMPI/4.1.5-GCC-12.3.0&lt;br /&gt;
        OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
        OpenMPI/5.0.3-GCC-13.3.0&lt;br /&gt;
        OpenMPI/5.0.7-GCC-14.2.0&lt;br /&gt;
        OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
        OpenMPI/5.0.8-llvm-compilers-20.1.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
Load the appropriate version of OpenMPI you want to use and then compile your program with mpicc.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
Create the batch file that we'll name mpi_hello.sbatch&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/5.0.8-GCC-14.3.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use sbatch to submit the job defined in our sbatch file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=254</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=254"/>
		<updated>2026-01-09T21:28:27Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported MPI Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
&lt;br /&gt;
''OpenMPI 5+ will be supported with a future software upgrade''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=253</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=253"/>
		<updated>2026-01-09T21:27:40Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported MPI Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
&lt;br /&gt;
''OpenMPI 5+ will be supported with a future software upgrade''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Reference =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Action !! Command&lt;br /&gt;
|-&lt;br /&gt;
| Load MPI module || &amp;lt;code&amp;gt;module load OpenMPI/4.1.6-GCC-13.2.0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Recommended launch || &amp;lt;code&amp;gt;srun --mpi=pmix_v3 ./my_program&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alternative launch || &amp;lt;code&amp;gt;mpirun ./my_program&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Avoid || &amp;lt;code&amp;gt;srun --mpi=pmi2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;srun --mpi=none&amp;lt;/code&amp;gt;, OpenMPI 5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=249</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=249"/>
		<updated>2025-12-16T14:22:55Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI4PY Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
* '''mpi4py 4.0.1'''&lt;br /&gt;
&lt;br /&gt;
= MPI4PY Example: Hello World in Python =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
module load mpi4py/4.0.1&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=248</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=248"/>
		<updated>2025-12-16T14:21:56Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
* '''mpi4py 4.0.1'''&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in Python =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
module load mpi4py/4.0.1&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=247</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=247"/>
		<updated>2025-12-16T14:19:19Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
* '''mpi4py 4.0.1'''&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in Python =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
module load mpi4py&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=246</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=246"/>
		<updated>2025-12-16T14:18:49Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
* '''mpi4py 4.0.1'''&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in Python =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=3&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
module load mpi4py&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=245</id>
		<title>Rocky Python MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Python_MPI_Hello_World&amp;diff=245"/>
		<updated>2025-12-16T14:17:24Z</updated>

		<summary type="html">&lt;p&gt;Jondale: Created page with &amp;quot;= MPI Jobs on Rocky =  == Supported Stack ==  We currently recommend and support:  * '''OpenMPI 4.1.6''' * '''PMIx 4.2.6''' * '''mpi4py 4.0.1'''  = MPI Example: Hello World in Python =   == hello_mpi4py.py ==  &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; from mpi4py import MPI import socket  comm = MPI.COMM_WORLD rank = comm.Get_rank() size = comm.Get_size() hostname = socket.gethostname()  print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;) &amp;lt;/syntaxhighlight&amp;gt;  == hello_mpi4py.s...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
* '''mpi4py 4.0.1'''&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in Python =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.py ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from mpi4py import MPI&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
comm = MPI.COMM_WORLD&lt;br /&gt;
rank = comm.Get_rank()&lt;br /&gt;
size = comm.Get_size()&lt;br /&gt;
hostname = socket.gethostname()&lt;br /&gt;
&lt;br /&gt;
print(f&amp;quot;Hello from rank {rank} of {size} on {hostname}&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== hello_mpi4py.sbatch ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=hello-mpi4py&lt;br /&gt;
#SBATCH --output=hello-mpi4py-%j.out&lt;br /&gt;
#SBATCH --error=hello-mpi4py-%j.err&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --ntasks=3&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
#SBATCH --partition=kivlin,compute_all&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
module load mpi4py&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;=== Running mpi4py test with Slurm PMIx ===&amp;quot;&lt;br /&gt;
srun --mpi=pmix_v3 python hello_mpi4py.py&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch hello_mpi4py.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expected Output ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=244</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=244"/>
		<updated>2025-12-16T14:03:29Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported MPI Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
&lt;br /&gt;
''OpenMPI 5+ will be supported with a future software upgrade''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&lt;br /&gt;
# optionally use mpirun instead of srun&lt;br /&gt;
#mpirun -np &amp;quot;$SLURM_NTASKS&amp;quot; ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Reference =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Action !! Command&lt;br /&gt;
|-&lt;br /&gt;
| Load MPI module || &amp;lt;code&amp;gt;module load OpenMPI/4.1.6-GCC-13.2.0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Recommended launch || &amp;lt;code&amp;gt;srun --mpi=pmix_v3 ./my_program&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alternative launch || &amp;lt;code&amp;gt;mpirun ./my_program&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Avoid || &amp;lt;code&amp;gt;srun --mpi=pmi2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;srun --mpi=none&amp;lt;/code&amp;gt;, OpenMPI 5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=243</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=243"/>
		<updated>2025-12-16T00:40:50Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= MPI Jobs on Rocky =&lt;br /&gt;
&lt;br /&gt;
== Supported MPI Stack ==&lt;br /&gt;
&lt;br /&gt;
We currently recommend and support:&lt;br /&gt;
&lt;br /&gt;
* '''OpenMPI 4.1.6'''&lt;br /&gt;
* '''PMIx 4.2.6'''&lt;br /&gt;
&lt;br /&gt;
''OpenMPI 5+ will be supported with a future software upgrade''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= MPI Example: Hello World in C =&lt;br /&gt;
&lt;br /&gt;
This example demonstrates compiling and running MPI across multiple nodes.&lt;br /&gt;
&lt;br /&gt;
== Step 1 — Create the MPI program (hello_mpi.c) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
    int rank, size, len;&lt;br /&gt;
    char name[MPI_MAX_PROCESSOR_NAME];&lt;br /&gt;
&lt;br /&gt;
    MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;br /&gt;
&lt;br /&gt;
    MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
    MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
    MPI_Get_processor_name(name, &amp;amp;len);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;Hello from rank %d of %d on %s&amp;quot;, rank, size, name);&lt;br /&gt;
&lt;br /&gt;
    MPI_Finalize();&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 2 — Compile the program ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
mpicc -O2 -o hello_mpi hello_mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 3 — Submit an MPI batch job (mpi_hello.sbatch) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env bash&lt;br /&gt;
#SBATCH --job-name=mpi-hello&lt;br /&gt;
#SBATCH --output=mpi-hello-%j.out&lt;br /&gt;
#SBATCH --error=mpi-hello-%j.err&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#SBATCH --time=00:05:00&lt;br /&gt;
#SBATCH --partition=compute&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/4.1.6-GCC-13.2.0&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix_v3 ./hello_mpi&lt;br /&gt;
&lt;br /&gt;
# optionally use mpirun instead of srun&lt;br /&gt;
#mpirun -np &amp;quot;$SLURM_NTASKS&amp;quot; ./hello_mpi&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch mpi_hello.sbatch&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Step 4 — Expected Output ==&lt;br /&gt;
&lt;br /&gt;
The generated output file (&amp;lt;code&amp;gt;mpi-hello-&amp;lt;jobid&amp;gt;.out&amp;lt;/code&amp;gt;) should contain:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hello from rank 0 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 1 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 2 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 3 of 8 on rocky4.rocky.nimbios.org&lt;br /&gt;
Hello from rank 4 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 5 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 6 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
Hello from rank 7 of 8 on rocky5.rocky.nimbios.org&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= Quick Reference =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Action !! Command&lt;br /&gt;
|-&lt;br /&gt;
| Load MPI module || &amp;lt;code&amp;gt;module load OpenMPI/4.1.6-GCC-13.2.0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Recommended launch || &amp;lt;code&amp;gt;srun --mpi=pmix_v3 ./my_program&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Alternative launch || &amp;lt;code&amp;gt;mpirun ./my_program&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Avoid || &amp;lt;code&amp;gt;srun --mpi=pmi2&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;srun --mpi=none&amp;lt;/code&amp;gt;, OpenMPI 5&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=242</id>
		<title>Rocky MPI Hello World</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_MPI_Hello_World&amp;diff=242"/>
		<updated>2025-11-20T20:48:50Z</updated>

		<summary type="html">&lt;p&gt;Jondale: Created page with &amp;quot;TBA&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;TBA&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Main_Page&amp;diff=241</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Main_Page&amp;diff=241"/>
		<updated>2024-06-03T13:47:37Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the NIMBioS Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Rocky = &lt;br /&gt;
&lt;br /&gt;
[[Rocky_User_Guide|Rocky User Guide]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_Form|Rocky Access Form]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_SSH|Accessing Rocky: Linux or Mac]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_Windows|Accessing Rocky: Windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Facilities =&lt;br /&gt;
&lt;br /&gt;
[[Printers|Printers]]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Printers&amp;diff=239</id>
		<title>Printers</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Printers&amp;diff=239"/>
		<updated>2024-04-23T14:23:00Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
Printers are positioned throughout the first floor of Claxton.  &lt;br /&gt;
&lt;br /&gt;
The Business office has scanning and fax capabilities as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Printers = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Location !! Make/Model !! Type !! Address !! Manuals/Drivers&lt;br /&gt;
|-&lt;br /&gt;
| Hallway near Claxton 124 || HP Color LaserJet M452dn || Color || printer1.nimbios.org || [https://support.hp.com/us-en/product/hp-color-laserjet-pro-m452-series/7326532 Manuals &amp;amp; Drivers]&lt;br /&gt;
|-&lt;br /&gt;
| Claxton 126 (Business Office) || Bizhub C300i || Color/Scan/Fax || bizhub.nimbios.org || [https://kmbs.konicaminolta.us/products/multifunction/color-multi-function/bizhub-c360i-c300i-c250i/ Manuals &amp;amp; Drivers]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Guides =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://support.microsoft.com/en-us/help/4015386/windows-10-install-printer Add a printer in Windows 10]&lt;br /&gt;
&lt;br /&gt;
[https://support.apple.com/kb/ph25081?locale=en_US Add a printer in MacOS]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Printers&amp;diff=238</id>
		<title>Printers</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Printers&amp;diff=238"/>
		<updated>2024-04-23T14:22:40Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
Printers are positioned throughout the first floor of Claxton.  &lt;br /&gt;
&lt;br /&gt;
The Business office has scanning and fax capabilities as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Printers = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Location !! Make/Model !! Type !! Address !! Manuals/Drivers&lt;br /&gt;
|-&lt;br /&gt;
| Hallway near Claxton 124 || HP Color LaserJet M452dn || Color || printer1.nimbios.org || [https://support.hp.com/us-en/product/hp-color-laserjet-pro-m452-series/7326532 Manuals &amp;amp; Drivers]&lt;br /&gt;
|-&lt;br /&gt;
| Hallway near Claxton 126 || HP LaserJet P2055dn || B+W || printer2.nimbios.org || [https://support.hp.com/us-en/product/HP-LaserJet-P2055-Printer-series/3662052/model/3662058?jumpid=reg_r1002_usen_s-001_title_r0002 Manuals &amp;amp; Drivers]&lt;br /&gt;
|-&lt;br /&gt;
| Claxton 106 (Business Office) || Bizhub C300i || Color/Scan/Fax || bizhub.nimbios.org || [https://kmbs.konicaminolta.us/products/multifunction/color-multi-function/bizhub-c360i-c300i-c250i/ Manuals &amp;amp; Drivers]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Guides =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://support.microsoft.com/en-us/help/4015386/windows-10-install-printer Add a printer in Windows 10]&lt;br /&gt;
&lt;br /&gt;
[https://support.apple.com/kb/ph25081?locale=en_US Add a printer in MacOS]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_R_package&amp;diff=237</id>
		<title>Rocky R package</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_R_package&amp;diff=237"/>
		<updated>2024-02-29T14:07:09Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
The R modules on Rocky have many packages pre-loaded but not all of them.  We are able to install our own packages locally in our home directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installing =&lt;br /&gt;
&lt;br /&gt;
First we load the R module we want to use.  For our example, we're going to use R/4.2.2-foss-2022b.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load R/4.2.2-foss-2022b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we decide on a location for the R packages to be installed, make that directory, and then set the R_LIBS_USER environment variable to point to the new location.  Here we use the name of the module as the package directory name since each version will need it's own packages installed separately. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p ~/R/4.2.2-foss-2022b&lt;br /&gt;
export R_LIBS_USER=&amp;quot;$HOME/R/4.2.2-foss-2022b&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now we start R and install the package.  If we have not set a mirror, it will ask for us to choose one.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R&lt;br /&gt;
install.packages('adespatial')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using =&lt;br /&gt;
&lt;br /&gt;
In our batch file for our job, we load the R module and set the R_LIBS_USER environment variable so that our job can find our installed packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''spatial_test.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=SPATIAL_TEST&lt;br /&gt;
#SBATCH --output=R_spatial_%j.out&lt;br /&gt;
&lt;br /&gt;
module load R/4.2.2-foss-2022b&lt;br /&gt;
export R_LIBS_USER=&amp;quot;$HOME/R/4.2.2-foss-2022b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Rscript spatial.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We run the job just like any other Rocky job by using the sbatch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch spatial_test.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=236</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=236"/>
		<updated>2024-02-28T20:13:54Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* R */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  &lt;br /&gt;
&lt;br /&gt;
Please review the following pages for OS specific instructions:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to easily set your session or job's environment to support the language, libraries, and specific versions needed.&lt;br /&gt;
&lt;br /&gt;
To learn more about using Lmod on Rocky, check out [[ Rocky_Environments | Rocky Environments]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Submitting a Job ==&lt;br /&gt;
&lt;br /&gt;
Rocky uses [https://slurm.schedmd.com/documentation.html Slurm] to queue and submit jobs to the cluster's compute nodes.  &lt;br /&gt;
&lt;br /&gt;
The nature of a compute cluster is that jobs are meant to be submitted to a queue.  Jobs are processed based on a [https://slurm.schedmd.com/classic_fair_share.html Fairshare] priority system.  Your job's priority is based on the associations you have (such as your lab) and how much compute you and they have used recently.  Sometimes your jobs might run instantly but other times you might have a wait time before they process.   &lt;br /&gt;
&lt;br /&gt;
To learn how to set up your own jobs, check out the [[Rocky_Job_Anatomy | Anatomy of a Rocky Job]]&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Beyond the below examples, we have also started a [https://github.com/rocky-cluster Github Repository].&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
* [[ Rocky_Python_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_Python_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_Python_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== R ====&lt;br /&gt;
* [[ Rocky_R_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_R_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_R_package | Install packages locally ]]&lt;br /&gt;
&lt;br /&gt;
==== MATLAB ====&lt;br /&gt;
* [[ Rocky_MATLAB_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_MATLAB_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Acknowledgement and Citations =&lt;br /&gt;
&lt;br /&gt;
If any work on Rocky is used in a research report, journal, or publication that requires citation of authors' work, please acknowledge NIMBioS.  &lt;br /&gt;
&lt;br /&gt;
Our suggested acknowledgment is as follows.&lt;br /&gt;
&lt;br /&gt;
'''[A portion of] The computation for this work was performed on the National Institute for Modeling Biological Systems (NIMBioS) computational resources at the University of Tennessee.'''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_R_package&amp;diff=235</id>
		<title>Rocky R package</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_R_package&amp;diff=235"/>
		<updated>2024-02-28T20:12:23Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
The R modules on Rocky have many packages pre-loaded but not all of them.  You are able to install your own packages locally in your home directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installing =&lt;br /&gt;
&lt;br /&gt;
First we load the R module we want to use.  For our example, we're going to use the R/4.2.2-foss-2022b module/version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load R/4.2.2-foss-2022b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we decide on a location for the R packages to be installed, make that directory, and then set the R_LIBS_USER environment variable to point to the new location.  Here I have decided to use the name of the module/version as the directory name.  If I choose to use a different R module/version later, I can choose a different package directory to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p ~/R/4.2.2-foss-2022b&lt;br /&gt;
export R_LIBS_USER=&amp;quot;$HOME/R/4.2.2-foss-2022b&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now I can start R and install the package.  If you have not set a mirror, it will ask you to choose one.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R&lt;br /&gt;
install.packages('adespatial')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using =&lt;br /&gt;
&lt;br /&gt;
In our batch file for our job, we need to load the correct module for R and set the R_LIBS_USER environment variable so that it can find our installed packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''spatial_test.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=SPATIAL_TEST&lt;br /&gt;
#SBATCH --output=R_spatial_%j.out&lt;br /&gt;
&lt;br /&gt;
module load R/4.2.2-foss-2022b&lt;br /&gt;
export R_LIBS_USER=&amp;quot;$HOME/R/4.2.2-foss-2022b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Rscript spatial.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will run the job now just like any other job by using the sbatch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch spatial_test.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_R_package&amp;diff=234</id>
		<title>Rocky R package</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_R_package&amp;diff=234"/>
		<updated>2024-02-28T20:10:15Z</updated>

		<summary type="html">&lt;p&gt;Jondale: Created page with &amp;quot;= About =  The R modules on Rocky have many packages pre-loaded but not all of them.  If you find yourself needing one that isn't, you are able to install it locally in your home directory.   = Installing =  First we load the R module we want to use.  For our example, we're going to use the R/4.2.2-foss-2022b module/version.  &amp;lt;pre&amp;gt; module load R/4.2.2-foss-2022b &amp;lt;/pre&amp;gt;   Next we decide on a location for the R packages to be installed, make that directory, and then set th...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
The R modules on Rocky have many packages pre-loaded but not all of them.  If you find yourself needing one that isn't, you are able to install it locally in your home directory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Installing =&lt;br /&gt;
&lt;br /&gt;
First we load the R module we want to use.  For our example, we're going to use the R/4.2.2-foss-2022b module/version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load R/4.2.2-foss-2022b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Next we decide on a location for the R packages to be installed, make that directory, and then set the R_LIBS_USER environment variable to point to the new location.  Here I have decided to use the name of the module/version as the directory name.  If I choose to use a different R module/version later, I can choose a different package directory to use.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir -p ~/R/4.2.2-foss-2022b&lt;br /&gt;
export R_LIBS_USER=&amp;quot;$HOME/R/4.2.2-foss-2022b&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now I can start R and install the package.  If you have not set a mirror, it will ask you to choose one.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
R&lt;br /&gt;
install.packages('adespatial')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Using =&lt;br /&gt;
&lt;br /&gt;
In our batch file for our job, we need to load the correct module for R and set the R_LIBS_USER environment variable so that it can find our installed packages.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''spatial_test.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=SPATIAL_TEST&lt;br /&gt;
#SBATCH --output=R_spatial_%j.out&lt;br /&gt;
&lt;br /&gt;
module load R/4.2.2-foss-2022b&lt;br /&gt;
export R_LIBS_USER=&amp;quot;$HOME/R/4.2.2-foss-2022b&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Rscript spatial.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You will run the job now just like any other job by using the sbatch command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch spatial_test.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=233</id>
		<title>Rocky Kivlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=233"/>
		<updated>2024-02-13T14:53:22Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
Kivlin Lab has purchased compute resources on the [[Rocky User Guide|Rocky cluster]].  These resources are only available to accounts associated with the Kivlin Lab.  When [[Rocky Access Form|requesting an account]], please specify your association with the lab to gain access to these resources.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Kivlin Partition =&lt;br /&gt;
Below are the nodes in the Kivlin Partition:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Type !! Architecture !! vCPU !! Memory &lt;br /&gt;
|-&lt;br /&gt;
| bull1 || compute || Xeon Gold 6430 (Sapphire Rapids) || 128 || 512G &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
By default, accounts will use the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition which includes all shared pool resources.   When [[Rocky Job Anatomy|submitting a job to Rocky]], you will need to specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition as part of your batch file.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example batch file:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=kivlin,compute_all&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=PYTHON_PRIME&lt;br /&gt;
#SBATCH --output=python_prime_%j.out&lt;br /&gt;
#SBATCH --mail-user=me@test.com&lt;br /&gt;
#SBATCH --mail-type=END&lt;br /&gt;
&lt;br /&gt;
module load Python&lt;br /&gt;
&lt;br /&gt;
python3 prime.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above batch file, you can see that we specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition followed by the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition.  With these parameters, the job scheduler will look for available resources on the kivlin partition first.  If all those are in use it will then use resources from the shared pool.&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=232</id>
		<title>Rocky Kivlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=232"/>
		<updated>2024-02-12T22:00:47Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
Kivlin Lab has purchased compute resources on the [[Rocky User Guide|Rocky cluster]].  These resources are only available to accounts associated with the Kivlin Lab.  When [[Rocky Access Form|requesting an account]], please specify your association with the lab to gain access to these resources.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Kivlin Partition =&lt;br /&gt;
Below are the nodes in the Kivlin Partition:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Type !! Architecture !! vCPU !! Memory !! Exclusivity&lt;br /&gt;
|-&lt;br /&gt;
| bull1 || compute || Xeon Gold 6430 (Sapphire Rapids) || 128 || 512G || 2/13/2024 - 2/13/2027&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
By default, accounts will use the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition which includes all shared pool resources.   When [[Rocky Job Anatomy|submitting a job to Rocky]], you will need to specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition as part of your batch file.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example batch file:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=kivlin,compute_all&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=PYTHON_PRIME&lt;br /&gt;
#SBATCH --output=python_prime_%j.out&lt;br /&gt;
#SBATCH --mail-user=me@test.com&lt;br /&gt;
#SBATCH --mail-type=END&lt;br /&gt;
&lt;br /&gt;
module load Python&lt;br /&gt;
&lt;br /&gt;
python3 prime.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above batch file, you can see that we specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition followed by the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition.  With these parameters, the job scheduler will look for available resources on the kivlin partition first.  If all those are in use it will then use resources from the shared pool.&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=231</id>
		<title>Rocky Kivlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=231"/>
		<updated>2024-02-12T21:59:51Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
Kivlin Lab has purchased compute resources on the [[Rocky User Guide|Rocky cluster]].  These resources are only available to accounts associated with the Kivlin Lab.  Please specify you are associated with the Kivlin Lab when [[Rocky Access Form|requesting an account]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Kivlin Partition =&lt;br /&gt;
Below are the nodes in the Kivlin Partition:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Type !! Architecture !! vCPU !! Memory !! Exclusivity&lt;br /&gt;
|-&lt;br /&gt;
| bull1 || compute || Xeon Gold 6430 (Sapphire Rapids) || 128 || 512G || 2/13/2024 - 2/13/2027&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
By default, accounts will use the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition which includes all shared pool resources.   When [[Rocky Job Anatomy|submitting a job to Rocky]], you will need to specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition as part of your batch file.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example batch file:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=kivlin,compute_all&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=PYTHON_PRIME&lt;br /&gt;
#SBATCH --output=python_prime_%j.out&lt;br /&gt;
#SBATCH --mail-user=me@test.com&lt;br /&gt;
#SBATCH --mail-type=END&lt;br /&gt;
&lt;br /&gt;
module load Python&lt;br /&gt;
&lt;br /&gt;
python3 prime.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above batch file, you can see that we specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition followed by the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition.  With these parameters, the job scheduler will look for available resources on the kivlin partition first.  If all those are in use it will then use resources from the shared pool.&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=230</id>
		<title>Rocky Kivlin</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Kivlin&amp;diff=230"/>
		<updated>2024-02-12T21:52:50Z</updated>

		<summary type="html">&lt;p&gt;Jondale: Created page with &amp;quot;= About = Kivlin Lab has purchased compute resources on the Rocky cluster.  These resources are only available to accounts associated with the Kivlin Lab.  Please specify you are associated with the Kivlin Lab when requesting an account.   = Exclusive Nodes = {| class=&amp;quot;wikitable&amp;quot; |- ! Node !! Type !! Architecture !! vCPU !! Memory !! Exclusivity |- | bull1 || compute || Xeon Gold 6430 (Sapphire Rapids) || 128 || 512G || 2/12/202...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
Kivlin Lab has purchased compute resources on the [[Rocky User Guide|Rocky cluster]].  These resources are only available to accounts associated with the Kivlin Lab.  Please specify you are associated with the Kivlin Lab when [[Rocky Access Form|requesting an account]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Exclusive Nodes =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Node !! Type !! Architecture !! vCPU !! Memory !! Exclusivity&lt;br /&gt;
|-&lt;br /&gt;
| bull1 || compute || Xeon Gold 6430 (Sapphire Rapids) || 128 || 512G || 2/12/2024 - 2/12/2027&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
By default, accounts will use the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition which includes all shared pool resources.   When [[Rocky Job Anatomy|submitting a job to Rocky]], you will need to specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition.&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example batch file:&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH --partition=kivlin,compute_all&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=PYTHON_PRIME&lt;br /&gt;
#SBATCH --output=python_prime_%j.out&lt;br /&gt;
#SBATCH --mail-user=me@test.com&lt;br /&gt;
#SBATCH --mail-type=END&lt;br /&gt;
&lt;br /&gt;
module load Python&lt;br /&gt;
&lt;br /&gt;
python3 prime.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the above batch file, you can see that we specify the &amp;lt;code&amp;gt;kivlin&amp;lt;/code&amp;gt; partition followed by the &amp;lt;code&amp;gt;compute_all&amp;lt;/code&amp;gt; partition.  With these parameters, the job schedule will look for available resources on the kivlin partition first.  If all those are in use it will then use resources from the shared pool.&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=229</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=229"/>
		<updated>2024-01-11T19:14:31Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  &lt;br /&gt;
&lt;br /&gt;
Please review the following pages for OS specific instructions:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to easily set your session or job's environment to support the language, libraries, and specific versions needed.&lt;br /&gt;
&lt;br /&gt;
To learn more about using Lmod on Rocky, check out [[ Rocky_Environments | Rocky Environments]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Submitting a Job ==&lt;br /&gt;
&lt;br /&gt;
Rocky uses [https://slurm.schedmd.com/documentation.html Slurm] to queue and submit jobs to the cluster's compute nodes.  &lt;br /&gt;
&lt;br /&gt;
The nature of a compute cluster is that jobs are meant to be submitted to a queue.  Jobs are processed based on a [https://slurm.schedmd.com/classic_fair_share.html Fairshare] priority system.  Your job's priority is based on the associations you have (such as your lab) and how much compute you and they have used recently.  Sometimes your jobs might run instantly but other times you might have a wait time before they process.   &lt;br /&gt;
&lt;br /&gt;
To learn how to set up your own jobs, check out the [[Rocky_Job_Anatomy | Anatomy of a Rocky Job]]&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Beyond the below examples, we have also started a [https://github.com/rocky-cluster Github Repository].&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
* [[ Rocky_Python_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_Python_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_Python_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== R ====&lt;br /&gt;
* [[ Rocky_R_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_R_Prime | Discover Prime Numbers ]]&lt;br /&gt;
&lt;br /&gt;
==== MATLAB ====&lt;br /&gt;
* [[ Rocky_MATLAB_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_MATLAB_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Acknowledgement and Citations =&lt;br /&gt;
&lt;br /&gt;
If any work on Rocky is used in a research report, journal, or publication that requires citation of authors' work, please acknowledge NIMBioS.  &lt;br /&gt;
&lt;br /&gt;
Our suggested acknowledgment is as follows.&lt;br /&gt;
&lt;br /&gt;
'''[A portion of] The computation for this work was performed on the National Institute for Modeling Biological Systems (NIMBioS) computational resources at the University of Tennessee.'''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=228</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=228"/>
		<updated>2023-10-12T20:49:39Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Submitting a Job */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  &lt;br /&gt;
&lt;br /&gt;
Please review the following pages for OS specific instructions:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to easily set your session or job's environment to support the language, libraries, and specific versions needed.&lt;br /&gt;
&lt;br /&gt;
To learn more about using Lmod on Rocky, check out [[ Rocky_Environments | Rocky Environments]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Submitting a Job ==&lt;br /&gt;
&lt;br /&gt;
Rocky uses [https://slurm.schedmd.com/documentation.html Slurm] to queue and submit jobs to the cluster's compute nodes.  &lt;br /&gt;
&lt;br /&gt;
The nature of a compute cluster is that jobs are meant to be submitted to a queue.  Jobs are processed based on a [https://slurm.schedmd.com/classic_fair_share.html Fairshare] priority system.  Your job's priority is based on the associations you have (such as your lab) and how much compute you and they have used recently.  Sometimes your jobs might run instantly but other times you might have a wait time before they process.   &lt;br /&gt;
&lt;br /&gt;
To learn how to set up your own jobs, check out the [[Rocky_Job_Anatomy | Anatomy of a Rocky Job]]&lt;br /&gt;
&lt;br /&gt;
= Examples =&lt;br /&gt;
&lt;br /&gt;
Beyond the below examples, we have also started a [https://github.com/rocky-cluster Github Repository].&lt;br /&gt;
&lt;br /&gt;
==== Python ====&lt;br /&gt;
* [[ Rocky_Python_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_Python_Prime | Discover Prime Numbers ]]&lt;br /&gt;
* [[ Rocky_Python_Prime_Array | Discover Prime Numbers using a job array ]]&lt;br /&gt;
&lt;br /&gt;
==== R ====&lt;br /&gt;
* [[ Rocky_R_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_R_Prime | Discover Prime Numbers ]]&lt;br /&gt;
&lt;br /&gt;
==== MATLAB ====&lt;br /&gt;
* [[ Rocky_MATLAB_HelloWorld | Hello World ]]&lt;br /&gt;
* [[ Rocky_MATLAB_Prime_Array | Discover Prime Numbers using a job array ]]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Job_Anatomy&amp;diff=227</id>
		<title>Rocky Job Anatomy</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Job_Anatomy&amp;diff=227"/>
		<updated>2023-09-12T15:04:59Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Anatomy of a Rocky Job =&lt;br /&gt;
&lt;br /&gt;
Setting up a job to run on Rocky starts by creating or uploading your project's files to the project directory within your home directory on Rocky.  These files will include the code you've written, any data files needed, and a batch file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Your Code ====&lt;br /&gt;
&lt;br /&gt;
Your code is what is submitted and executed on Rocky's compute nodes.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can be written in any of the languages supported by Rocky environment modules (Lmod).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Your Data ====&lt;br /&gt;
&lt;br /&gt;
If your job will be processing data, you'll need to upload that data to your project's directory.&lt;br /&gt;
&lt;br /&gt;
Your home directory is shared amongst all compute nodes.  No matter which node your job is assigned, it will have access to your data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Batch Script ====&lt;br /&gt;
&lt;br /&gt;
The batch script is a shell script that brings everything together by defining job parameters, loading any environment modules needed, and finally executing your code.&lt;br /&gt;
&lt;br /&gt;
Job parameters are defined one per line and start with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
All parameters have default values and are optional but most batch scripts will use some.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can view all of the sbatch options at:&amp;lt;br/&amp;gt;&lt;br /&gt;
https://slurm.schedmd.com/sbatch.html&lt;br /&gt;
&lt;br /&gt;
Below is an example batch file using some of the most common options:&lt;br /&gt;
&lt;br /&gt;
'''my_job.run'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=MY_JOB         ### job name&lt;br /&gt;
#SBATCH --output=my_job_%j.out    ### file to store job output&lt;br /&gt;
#SBATCH --time=1-00:00:00         ### maximum time limit for job (Days-HH:MM:SS)&lt;br /&gt;
#SBATCH --mem-per-cpu=2G          ### amount of memory per cpu to allocate&lt;br /&gt;
#SBATCH --cpus-per-task=1         ### number of cpu to allocate&lt;br /&gt;
#SBATCH --mail-user=me@test.com   ### email address to notify&lt;br /&gt;
#SBATCH --mail-type=END           ### send an email when the job ends&lt;br /&gt;
&lt;br /&gt;
module load R/4.2.1-foss-2022a&lt;br /&gt;
&lt;br /&gt;
Rscript my_code.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Running Job =&lt;br /&gt;
&lt;br /&gt;
==== Submitting Job ====&lt;br /&gt;
&lt;br /&gt;
Jobs are submitted using the &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; command and passed your batch script as a parameter.  This will add your job to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch my_job.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Watching Job ====&lt;br /&gt;
&lt;br /&gt;
While your job is in the queue or being executed you may see it's status using the &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt; command.  If the job is currently running it will show which node(s) it is assigned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test_user@rocky7 ~]$ squeue&lt;br /&gt;
             JOBID PARTITION       NAME      USER ST      TIME  NODES NODELIST(REASON)&lt;br /&gt;
              2947 compute_all    my_job test_use  R      0:05      1 moose1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cancelling Job ====&lt;br /&gt;
&lt;br /&gt;
To cancel a job, use the &amp;lt;code&amp;gt;scancel&amp;lt;/code&amp;gt; command and pass the JOBID (as returned by &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel 2947&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Job_Anatomy&amp;diff=226</id>
		<title>Rocky Job Anatomy</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Job_Anatomy&amp;diff=226"/>
		<updated>2023-09-12T14:47:10Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Anatomy of a Rocky Job =&lt;br /&gt;
&lt;br /&gt;
Setting up a job to run on Rocky starts by creating or uploading your project's files to the project directory within your home directory on Rocky.  These files will include the code you've written, any data files needed, and a batch file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Your Code ====&lt;br /&gt;
&lt;br /&gt;
Your code is what is submitted and executed on Rocky's compute nodes.&amp;lt;br/&amp;gt;&lt;br /&gt;
It can be written in any of the languages supported by Rocky environment modules (Lmod).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Your Data ====&lt;br /&gt;
&lt;br /&gt;
If your job will be processing data, you'll need to upload that data to your project's directory.&lt;br /&gt;
&lt;br /&gt;
Your home directory is shared amongst all compute nodes.  No matter which node your job is assigned, it will have access to your data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Batch Script ====&lt;br /&gt;
&lt;br /&gt;
The batch script is a shell script that brings everything together by defining job parameters, loading any environment modules needed, and finally executing your code.&lt;br /&gt;
&lt;br /&gt;
Job parameters are defined one per line and start with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
All parameters have default values and are optional but most batch scripts will use some.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can view all of the sbatch options at:&amp;lt;br/&amp;gt;&lt;br /&gt;
https://slurm.schedmd.com/sbatch.html&lt;br /&gt;
&lt;br /&gt;
Below is an example batch file using some of the most common options:&lt;br /&gt;
&lt;br /&gt;
'''my_job.run'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --job-name=MY_JOB         ### Job Name&lt;br /&gt;
#SBATCH --output=my_job_%j.out    ### File in which to store job output&lt;br /&gt;
#SBATCH --time=00:10:00           ### Wall clock time limit in Days-HH:MM:SS&lt;br /&gt;
#SBATCH --mem-per-cpu=2G          ### How much RAM per cpu&lt;br /&gt;
#SBATCH --cpus-per-task=1         ### How many cpu to use per task&lt;br /&gt;
#SBATCH --mail-user=me@test.com   ### My email address&lt;br /&gt;
#SBATCH --mail-type=END           ### Which events to send email&lt;br /&gt;
&lt;br /&gt;
module load R/4.2.1-foss-2022a&lt;br /&gt;
&lt;br /&gt;
Rscript my_code.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Running Job =&lt;br /&gt;
&lt;br /&gt;
==== Submitting Job ====&lt;br /&gt;
&lt;br /&gt;
Jobs are submitted using the &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; command and passed your batch script as a parameter.  This will add your job to the queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch my_job.run&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Watching Job ====&lt;br /&gt;
&lt;br /&gt;
While your job is in the queue or being executed you may see it's status using the &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt; command.  If the job is currently running it will show which node(s) it is assigned.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[test_user@rocky7 ~]$ squeue&lt;br /&gt;
             JOBID PARTITION       NAME      USER ST      TIME  NODES NODELIST(REASON)&lt;br /&gt;
              2947 compute_all    my_job test_use  R      0:05      1 moose1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Cancelling Job ====&lt;br /&gt;
&lt;br /&gt;
To cancel a job, use the &amp;lt;code&amp;gt;scancel&amp;lt;/code&amp;gt; command and pass the JOBID (as returned by &amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
scancel 2947&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=149</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=149"/>
		<updated>2022-09-14T16:00:22Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Workload Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  Please review the following pages about accessing Rocky:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to set your environment up for specific development tasks.&lt;br /&gt;
&lt;br /&gt;
To use Lmod, you will use the module command.  For example, to see what modules are available:&lt;br /&gt;
&amp;lt;pre&amp;gt;module avail&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To load the R environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;module load R&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To list what modules are loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;module list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Workload Management ==&lt;br /&gt;
Rocky uses Slurm as it's workload manager.&lt;br /&gt;
&lt;br /&gt;
* [[Rocky_Slurm | Basics of using Slurm on Rocky]]&lt;br /&gt;
* [https://slurm.schedmd.com/ Official Slurm Documentation]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Main_Page&amp;diff=148</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Main_Page&amp;diff=148"/>
		<updated>2022-09-07T14:35:10Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Facilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the NIMBioS Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Rocky = &lt;br /&gt;
&lt;br /&gt;
[[Rocky_User_Guide|Rocky User Guide]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_Form|Rocky Access Form]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_SSH|Accessing Rocky: Linux or Mac]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_Windows|Accessing Rocky: Windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Facilities =&lt;br /&gt;
&lt;br /&gt;
[[Room105|Conference Room 105]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Printers|Printers]]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Main_Page&amp;diff=147</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Main_Page&amp;diff=147"/>
		<updated>2022-09-07T14:34:09Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Facilities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the NIMBioS Wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Rocky = &lt;br /&gt;
&lt;br /&gt;
[[Rocky_User_Guide|Rocky User Guide]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_Form|Rocky Access Form]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_SSH|Accessing Rocky: Linux or Mac]]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Rocky_Access_Windows|Accessing Rocky: Windows]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Facilities =&lt;br /&gt;
&lt;br /&gt;
[[Room105|Conference Room 105]]&lt;br /&gt;
&lt;br /&gt;
[[Printers|Printers]]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Printers&amp;diff=146</id>
		<title>Printers</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Printers&amp;diff=146"/>
		<updated>2022-09-07T14:33:45Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Printers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
Printers are positioned throughout the first floor of Claxton.  &lt;br /&gt;
&lt;br /&gt;
The Business office has scanning and fax capabilities as well.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Printers = &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Location !! Make/Model !! Type !! Address !! Manuals/Drivers&lt;br /&gt;
|-&lt;br /&gt;
| Hallway near Claxton 124 || HP Color LaserJet M452dn || Color || printer1.nimbios.org || [https://support.hp.com/us-en/product/hp-color-laserjet-pro-m452-series/7326532 Manuals &amp;amp; Drivers]&lt;br /&gt;
|-&lt;br /&gt;
| Hallway near Claxton 130 || HP LaserJet P2055dn || B+W || printer2.nimbios.org || [https://support.hp.com/us-en/product/HP-LaserJet-P2055-Printer-series/3662052/model/3662058?jumpid=reg_r1002_usen_s-001_title_r0002 Manuals &amp;amp; Drivers]&lt;br /&gt;
|-&lt;br /&gt;
| Claxton 106 (Business Office) || Bizhub C300i || Color/Scan/Fax || bizhub.nimbios.org || [https://kmbs.konicaminolta.us/products/multifunction/color-multi-function/bizhub-c360i-c300i-c250i/ Manuals &amp;amp; Drivers]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Guides =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://support.microsoft.com/en-us/help/4015386/windows-10-install-printer Add a printer in Windows 10]&lt;br /&gt;
&lt;br /&gt;
[https://support.apple.com/kb/ph25081?locale=en_US Add a printer in MacOS]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=145</id>
		<title>Rocky User Guide</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_User_Guide&amp;diff=145"/>
		<updated>2022-09-02T20:19:53Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Workload Management */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About Rocky =&lt;br /&gt;
&lt;br /&gt;
Rocky is a [https://en.wikipedia.org/wiki/High-performance_computing HPC] cluster comprised of compute heavy nodes with 40 cores/80 threads and 512GB of ram ['''rocky'''], memory intensive nodes with 20 cores/40 threads and 768GB of RAM ['''moose'''], and a [https://docs.ceph.com Ceph] storage subsystem ['''quarrel''']&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requesting Access ==&lt;br /&gt;
In order to gain access to Rocky you must first fill out the [[Rocky_Access_Form]].  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Logging in to Rocky ==&lt;br /&gt;
Rocky's firewall limits access to the UTK network.  You will either need to be on campus or using the [https://utk.teamdynamix.com/TDClient/2277/OIT-Portal/KB/ArticleDet?ID=123517 Campus VPN]&lt;br /&gt;
&lt;br /&gt;
Once your account is created you will be able to SSH into a shell or SCP to copy files to/from Rocky.  &lt;br /&gt;
&lt;br /&gt;
Rocky uses Public Key Authentication for access instead of passwords.  Please review the following pages about accessing Rocky:&lt;br /&gt;
&lt;br /&gt;
{| class='wikitable'&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_SSH]] || Linux or Mac&lt;br /&gt;
|-&lt;br /&gt;
| [[Rocky_Access_Windows]] || Windows&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Environmental Modules ==&lt;br /&gt;
Rocky uses [https://lmod.readthedocs.io/en/latest/ Lmod] as it's environmental module system.  This allows you to set your environment up for specific development tasks.&lt;br /&gt;
&lt;br /&gt;
To use Lmod, you will use the module command.  For example, to see what modules are available:&lt;br /&gt;
&amp;lt;pre&amp;gt;module avail&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To load the R environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;module load R&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To list what modules are loaded:&lt;br /&gt;
&amp;lt;pre&amp;gt;module list&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Workload Management ==&lt;br /&gt;
Rocky uses Slurm as it's workload manager.&lt;br /&gt;
&lt;br /&gt;
[https://slurm.schedmd.com/ Read the official Slurm Documentation]&lt;br /&gt;
&lt;br /&gt;
[[Rocky_Slurm | See the basics of using Slurm on Rocky]]&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=144</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=144"/>
		<updated>2022-08-25T21:06:48Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.  For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.&lt;br /&gt;
&lt;br /&gt;
'''myscript.sh'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see we are telling sbatch to use 3 nodes for this job.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).''&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''We've asked for 3 nodes and 6 total tasks.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''The log file shows it broke the 6 tasks up amongst 3 nodes.''&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''We've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=143</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=143"/>
		<updated>2022-08-25T21:05:16Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Many Tasks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.''&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see we are telling sbatch to use 3 nodes for this job.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).''&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''We've asked for 3 nodes and 6 total tasks.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''The log file shows it broke the 6 tasks up amongst 3 nodes.''&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''We've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=142</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=142"/>
		<updated>2022-08-25T21:04:42Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Multiple Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.''&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see we are telling sbatch to use 3 nodes for this job.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).''&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''We've asked for 3 nodes and 6 total tasks.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''The log file shows it broke the 6 tasks up amongst 3 nodes.''&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=141</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=141"/>
		<updated>2022-08-25T21:04:24Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Multiple Tasks and Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.''&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see we are telling sbatch to use 3 nodes for this job.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test_nodes_2954.log'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).''&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''We've asked for 3 nodes and 6 total tasks.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''The log file shows it broke the 6 tasks up amongst 3 nodes.''&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=140</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=140"/>
		<updated>2022-08-25T21:03:33Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Multiple Tasks and Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.''&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see we are telling sbatch to use 3 nodes for this job.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test_nodes_2954.log'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).''&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see that we've asked for 3 nodes and 6 total tasks.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see that it broke the 6 tasks up amongst 3 nodes.''&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=139</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=139"/>
		<updated>2022-08-25T21:03:24Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* Multiple Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.''&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see we are telling sbatch to use 3 nodes for this job.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test_nodes_2954.log'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
''Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).''&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see that we've asked for 3 nodes and 6 total tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see that it broke the 6 tasks up amongst 3 nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=138</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=138"/>
		<updated>2022-08-25T21:03:12Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* myscript.sh */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.''&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we are telling sbatch to use 3 nodes for this job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test_nodes_2954.log'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see that we've asked for 3 nodes and 6 total tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see that it broke the 6 tasks up amongst 3 nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=137</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=137"/>
		<updated>2022-08-25T21:02:59Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we are telling sbatch to use 3 nodes for this job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test_nodes_2954.log'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Multiple Tasks and Nodes =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_tasksnodes_job&lt;br /&gt;
#SBATCH --nodes=3&lt;br /&gt;
#SBATCH --ntasks=6&lt;br /&gt;
#SBATCH --output=log/test_%j.log &lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see that we've asked for 3 nodes and 6 total tasks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see that it broke the 6 tasks up amongst 3 nodes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Many Tasks =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_job          # Job name&lt;br /&gt;
#SBATCH --ntasks=100&lt;br /&gt;
#SBATCH --output=log/test_%j.log     # Standard output and error log&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we've asked for 100 tasks.  We have not asked for multiple nodes but this will be more tasks than can fit on a single node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose2 (6)&lt;br /&gt;
moose2 (7)&lt;br /&gt;
moose2 (27)&lt;br /&gt;
moose1 (0)&lt;br /&gt;
moose1 (1)&lt;br /&gt;
moose1 (21)&lt;br /&gt;
moose2 (26)&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (8)&lt;br /&gt;
moose2 (28)&lt;br /&gt;
moose1 (19)&lt;br /&gt;
moose2 (30)&lt;br /&gt;
moose2 (14)&lt;br /&gt;
moose2 (9)&lt;br /&gt;
moose2 (29)&lt;br /&gt;
moose2 (10)&lt;br /&gt;
moose1 (28)&lt;br /&gt;
moose1 (39)&lt;br /&gt;
moose1 (30)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
moose2 (34)&lt;br /&gt;
moose2 (31)&lt;br /&gt;
moose1 (26)&lt;br /&gt;
moose1 (22)&lt;br /&gt;
moose2 (25)&lt;br /&gt;
moose2 (23)&lt;br /&gt;
moose2 (0)&lt;br /&gt;
moose1 (27)&lt;br /&gt;
moose2 (3)&lt;br /&gt;
moose1 (29)&lt;br /&gt;
moose1 (9)&lt;br /&gt;
moose2 (4)&lt;br /&gt;
moose1 (34)&lt;br /&gt;
moose1 (17)&lt;br /&gt;
moose1 (6)&lt;br /&gt;
moose2 (24)&lt;br /&gt;
moose1 (7)&lt;br /&gt;
moose2 (5)&lt;br /&gt;
moose2 (12)&lt;br /&gt;
moose1 (37)&lt;br /&gt;
moose2 (1)&lt;br /&gt;
moose2 (22)&lt;br /&gt;
moose2 (2)&lt;br /&gt;
moose2 (13)&lt;br /&gt;
moose2 (33)&lt;br /&gt;
moose2 (11)&lt;br /&gt;
moose1 (3)&lt;br /&gt;
moose1 (23)&lt;br /&gt;
moose1 (11)&lt;br /&gt;
moose1 (10)&lt;br /&gt;
moose1 (14)&lt;br /&gt;
moose2 (35)&lt;br /&gt;
moose2 (18)&lt;br /&gt;
moose1 (33)&lt;br /&gt;
moose1 (2)&lt;br /&gt;
moose1 (12)&lt;br /&gt;
moose2 (17)&lt;br /&gt;
moose2 (37)&lt;br /&gt;
moose1 (8)&lt;br /&gt;
moose2 (32)&lt;br /&gt;
moose2 (21)&lt;br /&gt;
moose1 (31)&lt;br /&gt;
moose2 (15)&lt;br /&gt;
moose1 (13)&lt;br /&gt;
moose2 (16)&lt;br /&gt;
moose2 (19)&lt;br /&gt;
moose2 (39)&lt;br /&gt;
moose1 (5)&lt;br /&gt;
moose2 (38)&lt;br /&gt;
moose2 (36)&lt;br /&gt;
moose1 (32)&lt;br /&gt;
moose1 (16)&lt;br /&gt;
moose1 (25)&lt;br /&gt;
moose1 (38)&lt;br /&gt;
moose1 (4)&lt;br /&gt;
moose1 (36)&lt;br /&gt;
moose1 (15)&lt;br /&gt;
moose1 (24)&lt;br /&gt;
moose1 (18)&lt;br /&gt;
moose1 (35)&lt;br /&gt;
rocky1 (16)&lt;br /&gt;
rocky1 (56)&lt;br /&gt;
rocky1 (0)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
rocky1 (4)&lt;br /&gt;
rocky1 (44)&lt;br /&gt;
rocky1 (14)&lt;br /&gt;
rocky1 (54)&lt;br /&gt;
rocky1 (18)&lt;br /&gt;
rocky1 (58)&lt;br /&gt;
rocky1 (42)&lt;br /&gt;
rocky1 (52)&lt;br /&gt;
rocky1 (2)&lt;br /&gt;
rocky1 (12)&lt;br /&gt;
rocky1 (10)&lt;br /&gt;
rocky1 (50)&lt;br /&gt;
rocky1 (8)&lt;br /&gt;
rocky1 (48)&lt;br /&gt;
rocky1 (6)&lt;br /&gt;
rocky1 (46)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Here you can see even though we did not ask for more than one node it has split the tasks up across multiple nodes.''&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=136</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=136"/>
		<updated>2022-08-25T20:56:24Z</updated>

		<summary type="html">&lt;p&gt;Jondale: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Multiple Nodes =&lt;br /&gt;
&lt;br /&gt;
'''slurm-test-nodes.sh'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=test_nodes_job         &lt;br /&gt;
#SBATCH --nodes=3                    &lt;br /&gt;
#SBATCH --output=test_nodes_%j.log &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see we are telling sbatch to use 3 nodes for this job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sbatch slurm-test-nodes.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''test_nodes_2954.log'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
moose1 (20)&lt;br /&gt;
moose2 (20)&lt;br /&gt;
rocky1 (40)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here you can see from the output that the job used 3 nodes (moose1, moose2, and rocky1).&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=135</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=135"/>
		<updated>2022-08-25T20:51:32Z</updated>

		<summary type="html">&lt;p&gt;Jondale: /* About */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
In these examples, you'll see how to use SBATCH parameters to take advantage of multiple nodes and multiple cores on those nodes.&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
	<entry>
		<id>https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=134</id>
		<title>Rocky Slurm Basic Multi</title>
		<link rel="alternate" type="text/html" href="https://wiki.nimbios.org/index.php?title=Rocky_Slurm_Basic_Multi&amp;diff=134"/>
		<updated>2022-08-25T20:45:47Z</updated>

		<summary type="html">&lt;p&gt;Jondale: Created page with &amp;quot;= About =  = myscript.sh =  &amp;lt;pre&amp;gt; #!/bin/bash  H=`hostname -s` C=`ps -o cpuid -h -p ${BASHPID} | xargs`  echo &amp;quot;${H} (${C})&amp;quot; &amp;lt;/pre&amp;gt;  For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= About =&lt;br /&gt;
&lt;br /&gt;
= myscript.sh =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
H=`hostname -s`&lt;br /&gt;
C=`ps -o cpuid -h -p ${BASHPID} | xargs`&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;${H} (${C})&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example purposes, we'll use a simple bash script.  It's only purpose is to output the hostname of the node we're on and the cpuid the script is running.  This will help illustrate that our script is being run on multiple nodes and/or multiple cores on each node.&lt;/div&gt;</summary>
		<author><name>Jondale</name></author>
	</entry>
</feed>