<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.umiacs.umd.edu/umiacs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Seide</id>
	<title>UMIACS - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.umiacs.umd.edu/umiacs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Seide"/>
	<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php/Special:Contributions/Seide"/>
	<updated>2026-05-09T15:55:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.7</generator>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13241</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13241"/>
		<updated>2026-04-20T16:30:33Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Clean up when done */ Add information about &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to. Password authentication does not provide an option to save your password, so for convenience, you may want to set up an [[SSH/Keys | SSH key]].&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with [https://github.com/BurntSushi/ripgrep Ripgrep] as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
=====Keep data separate from code where possible=====&lt;br /&gt;
Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====Limit maximum number of threads for searches=====&lt;br /&gt;
By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect. This takes away CPU time and memory from other users who are actively trying to use the nodes. There are two ways that you can ensure that your session gets closed in a reasonable amount of time.&lt;br /&gt;
&lt;br /&gt;
=====Shortening the Remote-SSH Reconnection Grace Time=====&lt;br /&gt;
You can configure the Remote-SSH extension to reduce this time to something reasonable (e.g. 5 minutes).&lt;br /&gt;
&lt;br /&gt;
This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Remote-SSH: Settings&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-remotesshsettings.jpg|alt=Under the Command Palette menu, &amp;quot;Remote-SSH: Settings&amp;quot; is searched.]]&lt;br /&gt;
&lt;br /&gt;
This will open a dialog box with settings for the Remote-SSH extension. From here, you can scroll down or search for &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; and configure this to something reasonable.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-reconnectiongracetime.jpg|alt=In the &amp;quot;Settings&amp;quot; dialog box, &amp;quot;Remote.SSH: Reconnection Grace Time&amp;quot; is overridden to 300 seconds.]]&lt;br /&gt;
&lt;br /&gt;
=====Manually killing a remote VS Code server=====&lt;br /&gt;
You can also manually kill a remote VS Code server by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote1.png|alt=Under the Command Palette menu, &amp;quot;Kill VS Code Server on Host...&amp;quot; is searched.]]&lt;br /&gt;
&lt;br /&gt;
Select the submission node you were using and click on it.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote2.png|alt=&#039;nexus&#039; is searched and a 2 submission nodes pop up as matching searches.]]&lt;br /&gt;
&lt;br /&gt;
Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote3.png|alt=Pop-up confirming the kill command went through.]]&lt;br /&gt;
&lt;br /&gt;
The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-reconnectiongracetime.jpg&amp;diff=13240</id>
		<title>File:VSCode-reconnectiongracetime.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-reconnectiongracetime.jpg&amp;diff=13240"/>
		<updated>2026-04-20T16:27:50Z</updated>

		<summary type="html">&lt;p&gt;Seide: Seide uploaded a new version of File:VSCode-reconnectiongracetime.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
VS Code Remote-SSH: Settings page showing &amp;quot;Reconnection Grace Time&amp;quot; overridden to 300 seconds.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-remotesshsettings.jpg&amp;diff=13239</id>
		<title>File:VSCode-remotesshsettings.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-remotesshsettings.jpg&amp;diff=13239"/>
		<updated>2026-04-20T16:26:27Z</updated>

		<summary type="html">&lt;p&gt;Seide: Seide uploaded a new version of File:VSCode-remotesshsettings.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
VS Code Command Pallete with &amp;quot;Remote-SSH: Settings&amp;quot; selected.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-reconnectiongracetime.jpg&amp;diff=13238</id>
		<title>File:VSCode-reconnectiongracetime.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-reconnectiongracetime.jpg&amp;diff=13238"/>
		<updated>2026-04-20T16:03:59Z</updated>

		<summary type="html">&lt;p&gt;Seide: VS Code Remote-SSH: Settings page showing &amp;quot;Reconnection Grace Time&amp;quot; overridden to 300 seconds.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
VS Code Remote-SSH: Settings page showing &amp;quot;Reconnection Grace Time&amp;quot; overridden to 300 seconds.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-remotesshsettings.jpg&amp;diff=13237</id>
		<title>File:VSCode-remotesshsettings.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=File:VSCode-remotesshsettings.jpg&amp;diff=13237"/>
		<updated>2026-04-20T16:03:04Z</updated>

		<summary type="html">&lt;p&gt;Seide: VS Code Command Pallete with &amp;quot;Remote-SSH: Settings&amp;quot; selected.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
VS Code Command Pallete with &amp;quot;Remote-SSH: Settings&amp;quot; selected.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Template:Note&amp;diff=13087</id>
		<title>Template:Note</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Template:Note&amp;diff=13087"/>
		<updated>2026-03-23T18:34:42Z</updated>

		<summary type="html">&lt;p&gt;Seide: Add alt text to the exclamation point image.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt; style=&amp;quot;width: 65%; white-space:pre-wrap; margin-left: 5%;&amp;quot;&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Exclamation-point.png | 25px | alt=Note]]&lt;br /&gt;
|{{{1}}}&lt;br /&gt;
|}&amp;lt;/pre&amp;lt;noinclude&amp;gt;&amp;lt;/noinclude&amp;gt;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13017</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13017"/>
		<updated>2026-03-05T21:29:40Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Search tuning */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to. Password authentication does not provide an option to save your password, so for convenience, you may want to set up an [[SSH/Keys | SSH key]].&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Ripgrep====&lt;br /&gt;
VS Code comes bundled with Ripgrep as the default search program. Even if you aren&#039;t explicitly using the search functionality, VS Code will periodically run &amp;quot;rg --files&amp;quot;, which will enumerate the list of files that Ripgrep would search. In workspaces with very large numbers of small files, this can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that Ripgrep does not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
=====Keep data separate from code where possible=====&lt;br /&gt;
Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file. If you have changed your defaults or want to tweak these exclude settings further, these settings are found under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=====Limit maximum number of threads for searches=====&lt;br /&gt;
By default, VS Code will automatically determine the number of threads to use when running Ripgrep. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot; in order to limit the performance impact.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
If you are done using VS Code for an extended period of time (several hours / overnight), consider manually killing your server session on the submission node when exiting. By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect, keeping the VS Code Server processes on the submission node you were using alive, despite no longer actively being used.&lt;br /&gt;
&lt;br /&gt;
This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote1.png]]&lt;br /&gt;
&lt;br /&gt;
Select the submission node you were using and click on it.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote2.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote3.png]]&lt;br /&gt;
&lt;br /&gt;
The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=13016</id>
		<title>Nexus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=13016"/>
		<updated>2026-03-05T21:24:29Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Access */ Link to &amp;quot;Nexus/Submission Node Policy&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nexus is the combined scheduler of resources in UMIACS.  The resource manager for Nexus is [[SLURM]].  Resources are arranged into partitions where users are able to schedule computational jobs.  Users are arranged into a number of SLURM accounts based on faculty, lab, or center investments.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
All accounts in UMIACS are sponsored.  If you don&#039;t already have a UMIACS account, please see [[Accounts]] for information on getting one.  You need a full UMIACS account (not a [[Accounts/Collaborator | collaborator account]]) in order to access Nexus.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
Your access to submission nodes (alternatively called login nodes) for Nexus computational resources is determined by your account sponsor&#039;s department, center, or lab affiliation.  You can log into the [https://intranet.umiacs.umd.edu/directory/cr/ UMIACS Directory CR application] and select the Computational Resource (CR) in the list that has the prefix &amp;lt;code&amp;gt;nexus&amp;lt;/code&amp;gt;.  The Hosts section lists your available submission nodes - generally a pair of nodes of the format &amp;lt;tt&amp;gt;nexus&amp;lt;department, lab, or center abbreviation&amp;gt;[00,01]&amp;lt;/tt&amp;gt;, e.g., &amp;lt;tt&amp;gt;nexusgroup00&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nexusgroup01&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Once you have identified your submission nodes, you can [[SSH]] into them [https://itsupport.umd.edu/itsupport?id=kb_article_view&amp;amp;sysparm_article=KB0016076 after connecting to UMD&#039;s GlobalProtect VPN].  From there, you are able to submit to the cluster via our [[SLURM]] workload manager.  You need to make sure that your submitted jobs have the correct account, partition, and qos.&lt;br /&gt;
&lt;br /&gt;
Please read our [[Nexus/Submission_Node_Policy|Submission Node Policy]] for guidance on appropriate usage of a submission node. If a submission node becomes unresponsive due to disregarding this policy, &amp;lt;b&amp;gt;we may kill user processes on these nodes to resolve the issue&amp;lt;/b&amp;gt;. We reserve the right to take action on users who repeatedly cause issues on submission nodes.&lt;br /&gt;
&lt;br /&gt;
== Jobs ==&lt;br /&gt;
[[SLURM]] jobs are [[SLURM/JobSubmission | submitted]] by either &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; depending if you are doing an interactive job or batch job, respectively.  You need to provide the where/how/who to run the job and specify the resources you need to run with.&lt;br /&gt;
&lt;br /&gt;
For the who/where/how, you may be required to specify &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; (respectively) to be able to adequately submit jobs to the Nexus.&lt;br /&gt;
&lt;br /&gt;
For resources, you may need to specify &amp;lt;code&amp;gt;--time&amp;lt;/code&amp;gt; for time, &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; for CPUs, &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; for RAM, and &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt; for GPUs in your submission arguments to meet your requirements.  There are defaults for all four; if you don&#039;t specify something, you will get the default value for that resource, which is minimal (e.g., by default, NO GPUs are included if you do not specify &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt;).  For more information about submission flags for GPU resources, see [[SLURM/JobSubmission#Requesting_GPUs | here]].  You may also use &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; to specify the number of parallel processes to run, with each task having its own set of the resources specified above. You can run &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt; on your submission node for a complete list of available submission arguments.&lt;br /&gt;
&lt;br /&gt;
For a list of available GPU types on Nexus and their specs, please see [[Nexus/GPUs]].&lt;br /&gt;
&lt;br /&gt;
For details on how the network for Nexus is architected, please see [[Nexus/Network]]. This can be important if you wish to optimize performance of your jobs.&lt;br /&gt;
&lt;br /&gt;
=== Interactive ===&lt;br /&gt;
Once logged into a submission node, you can run simple interactive jobs.  If your session is interrupted from the submission node, the job will be killed.  As such, we encourage use of a terminal multiplexer such as [[Tmux]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --cpus-per-task=4 --mem=2gb --gres=gpu:1 bash&lt;br /&gt;
srun: Job account was unset; set to user default of &#039;nexus&#039;&lt;br /&gt;
srun: Job partition was unset; set to cluster default of &#039;tron&#039;&lt;br /&gt;
srun: Job QoS was unset; set to association default of &#039;default&#039;&lt;br /&gt;
srun: Job time limit was unset; set to partition default of 60 minutes&lt;br /&gt;
srun: job 1 queued and waiting for resources&lt;br /&gt;
srun: job 1 has been allocated resources&lt;br /&gt;
$ hostname&lt;br /&gt;
tron62.umiacs.umd.edu&lt;br /&gt;
$ nvidia-smi -L&lt;br /&gt;
GPU 0: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-daad6a04-a2ce-1183-ce53-b267048f750a)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch ===&lt;br /&gt;
Batch jobs are scheduled with a script file with an optional ability to embed job scheduling parameters via variables that are defined by &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; lines at the top of the file.  You can find some examples in our [[SLURM/JobSubmission]] documentation.&lt;br /&gt;
&lt;br /&gt;
= Partitions = &lt;br /&gt;
The SLURM resource manager uses partitions to act as job queues which can restrict size, time and user limits. The Nexus has a number of different partitions of resources. Different Centers, Labs, and Faculty are able to invest in computational resources that are restricted to approved users through these partitions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by all non-[[ClassAccounts |class account]] users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/Tron]] - Pool of resources available to all non-class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
* Scavenger - [https://slurm.schedmd.com/preempt.html Preemption] partition that contains [https://en.wikipedia.org/wiki/X86-64 x86_64] architecture nodes from multiple other partitions. More resources are available to schedule simultaneously than in other partitions, however jobs are subject to preemption rules. You are responsible for ensuring your jobs handle this preemption correctly. The SLURM scheduler will simply restart a preempted job with the same submission arguments when it is available to run again. For an overview of things you can check within scripts to determine if your job was preempted/resumed, see [[SLURM/Preemption]].&lt;br /&gt;
* Scavenger (aarch64) - Preemption partition identical in design to &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt;, but only contains [https://en.wikipedia.org/wiki/AArch64 aarch64] architecture nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by [[ClassAccounts]]:&#039;&#039;&#039;&lt;br /&gt;
* [[ClassAccounts#Cluster_Usage | Class]] - Pool of resources available to class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by specific lab/center users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/CBCB]] - CBCB lab pool available for CBCB lab members.&lt;br /&gt;
* [[Nexus/CLIP]] - CLIP lab pool available for CLIP lab members.&lt;br /&gt;
* [[Nexus/CML]] - CML lab pool available for CML lab members.&lt;br /&gt;
* [[Nexus/GAMMA]] - GAMMA lab pool available for GAMMA lab members.&lt;br /&gt;
* [[Nexus/MBRC]] - MBRC lab pool available for MBRC lab members.&lt;br /&gt;
* [[Nexus/MC2]] - MC2 lab pool available for MC2 lab members.&lt;br /&gt;
* [[Nexus/QuICS]] - QuICS lab pool available for QuICS lab members.&lt;br /&gt;
* [[Nexus/Vulcan]] - Vulcan lab pool available for Vulcan lab members.&lt;br /&gt;
&lt;br /&gt;
You can view the partitions that you have access to by using the &amp;lt;code&amp;gt;show_partitions&amp;lt;/code&amp;gt; command. By default, the command will show only the partitions that are available to you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partitions&lt;br /&gt;
                    Name           AllowAccounts                       AllowQos    MaxNodes                        Nodes&lt;br /&gt;
------------------------ ----------------------- ------------------------------ ----------- ----------------------------               &lt;br /&gt;
               scavenger               scavenger                      scavenger   UNLIMITED                brigid[16-19]                                                                                                             &lt;br /&gt;
                                                                                                             cbcb[00-29]                                                                                                             &lt;br /&gt;
                                                                                                             clip[00-13]                                                                                               &lt;br /&gt;
                                                                                               cml[00,02-13,15-28,30-33]                                                                                                     &lt;br /&gt;
                                                                                                     cmlcpu[00-04,06-07]                                                                                                         &lt;br /&gt;
                                                                                                         gammagpu[00-21]                                                                                               &lt;br /&gt;
                                                                                               legacy[00-11,13-28,30-36]                                                                                                        &lt;br /&gt;
                                                                                                        legacygpu[00-07]                                                                                                                 &lt;br /&gt;
                                                                                                                 quics00                                                                                                       &lt;br /&gt;
                                                                                                       tron[00-44,46-69]                                                                                                           &lt;br /&gt;
                                                                                                           vulcan[00-45]&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
       scavenger-aarch64               scavenger              scavenger-aarch64   UNLIMITED                 oasis[00-39]&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------                    &lt;br /&gt;
                    tron                   nexus                        default   UNLIMITED            tron[00-44,46-69]                                                                           &lt;br /&gt;
                                                                           high                                                                                                                  &lt;br /&gt;
                                                                         medium                                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see information for all of the partitions, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_partitions --all&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partitions --all&lt;br /&gt;
                    Name           AllowAccounts                       AllowQos    MaxNodes                        Nodes&lt;br /&gt;
------------------------ ----------------------- ------------------------------ ----------- ----------------------------                    &lt;br /&gt;
                    cbcb                    cbcb                        default   UNLIMITED            cbcb[00-20,22-29]                                                                         &lt;br /&gt;
                                                                         medium                legacy[00-11,13-28,30-36]                                                                           &lt;br /&gt;
                                                                           high                                                                                                               &lt;br /&gt;
                                                                      huge-long                                                                                                                 &lt;br /&gt;
                                                                        highmem                                         &lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
               cbcb-heng               cbcb-heng                        default   UNLIMITED                  cbcb[26-29]                                                                         &lt;br /&gt;
                                                                         medium                                                                                                                     &lt;br /&gt;
                                                                           high                                                                                                               &lt;br /&gt;
                                                                      huge-long                                                                                                                 &lt;br /&gt;
                                                                        highmem                                         &lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------        &lt;br /&gt;
        cbcb-interactive                    cbcb                    interactive   UNLIMITED                       cbcb21&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Quality of Service (QoS) =&lt;br /&gt;
SLURM uses Quality of Service (QoS) both to provide limits on job sizes (termed by us as &amp;quot;job QoS&amp;quot;) as well as to limit resources used by all jobs running in a partition, either per user or per group (termed by us as &amp;quot;partition QoS&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Job QoS ===&lt;br /&gt;
Job QoS are used to provide limits on the size of job that you can run. You should try to allocate only the resources your job actually needs, as resources that each of your jobs schedules are counted against your [[SLURM/Priority#Fair-share | fair-share priority]] in the future.&lt;br /&gt;
* default - Default job QoS. Limited to 4 CPU cores, 1 GPU, and 32GB RAM per job.  The maximum wall time per job is 3 days.&lt;br /&gt;
* medium - Limited to 8 CPU cores, 2 GPUs, and 64GB RAM per job.  The maximum wall time per job is 2 days.&lt;br /&gt;
* high - Limited to 16 CPU cores, 4 GPUs, and 128GB RAM per job.  The maximum wall time per job is 1 day.&lt;br /&gt;
* scavenger - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  11% of the total resources available for each trackable resource type in the partition (CPUs/GPUs/RAM) is permitted simultaneously across all of your jobs running with this job QoS, enforced via the corresponding partition QoS (below) for the scavenger partition.  This job QoS is paired one-to-one with the scavenger partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt; in your submission arguments.  Do not include any job QoS argument other than &amp;lt;code&amp;gt;--qos=scavenger&amp;lt;/code&amp;gt; (optional) or submission will fail.&lt;br /&gt;
* scavenger-aarch64 - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  This job QoS is paired one-to-one with the scavenger-aarch64 partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger-aarch64&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;--qos=scavenger-aarch64&amp;lt;/code&amp;gt; in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
You can display these job QoS from the command line using the &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt; command.  By default, the command will only show job QoS that you can access.  The above five job QoS are the ones that everyone can access.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                          &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00                                                                         &lt;br /&gt;
   scavenger-aarch64  3-00:00:00                                                                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all job QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos --all&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU&lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------&lt;br /&gt;
             cml-cpu  7-00:00:00                                        8&lt;br /&gt;
         cml-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2&lt;br /&gt;
            cml-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2&lt;br /&gt;
       cml-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8&lt;br /&gt;
          cml-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2&lt;br /&gt;
       cml-scavenger  3-00:00:00                                                             gres/gpu=24&lt;br /&gt;
       cml-very_high  1-12:00:00     cpu=32,gres/gpu=8,mem=256G         8                    gres/gpu=12&lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G&lt;br /&gt;
     gamma-huge-long 10-00:00:00    cpu=32,gres/gpu=16,mem=256G&lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G&lt;br /&gt;
             highmem 21-00:00:00                 cpu=128,mem=2T&lt;br /&gt;
           huge-long 10-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
         interactive    12:00:00                 cpu=4,mem=128G&lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G&lt;br /&gt;
        oasis-exempt 10-00:00:00                                                      cpu=160,mem=28114M&lt;br /&gt;
           scavenger  3-00:00:00&lt;br /&gt;
   scavenger-aarch64  3-00:00:00&lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4&lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2&lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2&lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2&lt;br /&gt;
    vulcan-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8&lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2&lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48&lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
vulcan-scavenger-mu+  3-00:00:00  cpu=288,gres/gpu=72,mem=1152G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are able to submit to any partition that is listed in the &amp;lt;code&amp;gt;show_partitions&amp;lt;/code&amp;gt; command. If you need to use an account other than the default account &amp;lt;tt&amp;gt;nexus&amp;lt;/tt&amp;gt;, you will need to specify it via the &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt; submission argument.&lt;br /&gt;
&lt;br /&gt;
=== Partition QoS ===&lt;br /&gt;
Partition QoS are used to limit resources used by all jobs running in a partition, either per user (MaxTRESPU) or per group (GrpTRES).&lt;br /&gt;
&lt;br /&gt;
To view partition QoS, use the &amp;lt;code&amp;gt;show_partition_qos&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
   scavenger-aarch64_part         500                                                      &lt;br /&gt;
           scavenger_part         500     cpu=11%,gres/gpu=11%,mem=11%                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The scavenger_part partition QoS has relative TRES limits based on the current hardware in a given partition, represented with percentages.  To see the current actual TRES limits of this partition QoS, you can use the &amp;lt;code&amp;gt;-r/--real&amp;lt;/code&amp;gt; argument.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos -r&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
   scavenger-aarch64_part         500                                                      &lt;br /&gt;
           scavenger_part         500  cpu=888,gres/gpu=140,mem=12574G                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all partition QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_partition_qos --all&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos --all&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
                     cbcb         500                                   cpu=1406,mem=50359G&lt;br /&gt;
                cbcb-heng         500                                                      &lt;br /&gt;
         cbcb-interactive         500                                                      &lt;br /&gt;
                    class         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
                     clip         500                                     cpu=726,mem=6939G&lt;br /&gt;
                      cml         500                                   cpu=1226,mem=12116G&lt;br /&gt;
                  cml-cpu         500                                                      &lt;br /&gt;
             cml-director         500                                                      &lt;br /&gt;
              cml-furongh         500                                                      &lt;br /&gt;
            cml-scavenger         500                      gres/gpu=24                     &lt;br /&gt;
               cml-sfeizi         500                                                      &lt;br /&gt;
                cml-wriva         500                                                      &lt;br /&gt;
           cml-wriva-high         500                                                      &lt;br /&gt;
                 csd-h200         500                                                      &lt;br /&gt;
                    gamma         500                                     cpu=906,mem=7675G&lt;br /&gt;
                     mbrc         500                                     cpu=370,mem=3571G&lt;br /&gt;
                      mc2         500                                     cpu=330,mem=3201G&lt;br /&gt;
                    oasis         500                                                      &lt;br /&gt;
                    quics         500                                     cpu=458,mem=4710G&lt;br /&gt;
   scavenger-aarch64_part         500                                                      &lt;br /&gt;
           scavenger_part         500     cpu=11%,gres/gpu=11%,mem=11%                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
                   vulcan         500                                   cpu=1402,mem=12936G&lt;br /&gt;
            vulcan-ampere         500                                                      &lt;br /&gt;
               vulcan-cpu         500                                                      &lt;br /&gt;
            vulcan-ramani         500                                                      &lt;br /&gt;
         vulcan-scavenger         500                                                      &lt;br /&gt;
   vulcan-scavenger-multi         500                                                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: These QoS cannot be used directly when submitting jobs. Partition QoS limits apply to all jobs running on a given partition, regardless of what job QoS is used.&lt;br /&gt;
&lt;br /&gt;
For example, in the default non-preemption partition (&amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt;), you are restricted to 32 total CPU cores, 4 total GPUs, and 256GB total RAM at once across all jobs you have running in the partition.&lt;br /&gt;
&lt;br /&gt;
Lab/group-specific partitions may also have their own user limits, and/or may also have group limits on the total number of resources consumed simultaneously by all users that are using their partition, codified by the line in the output above that matches their lab/group name. Note that the values listed above in the two &amp;quot;TRES&amp;quot; columns are not fixed and may fluctuate per-partition as more resources are added to or removed from each partition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;All partitions also only allow a maximum of 500 submitted (running (R) or pending (PD)) jobs per user in the partition simultaneously.&#039;&#039;&#039; This is to prevent excess pending jobs causing [https://slurm.schedmd.com/sched_config.html#backfill backfill] issues with the SLURM scheduler.&lt;br /&gt;
* If you need to submit more than 500 jobs in batch at once, you can develop and run an &amp;quot;outer submission script&amp;quot; that repeatedly attempts to run an &amp;quot;inner submission script&amp;quot; (your original submission script) to submit jobs in the batch periodically, until all job submissions are successful. The outer submission script should use looping logic to check if you are at the max job limit and should then retry submission after waiting for some time interval.&lt;br /&gt;
: An example outer submission script is as follows. In this example, &amp;lt;code&amp;gt;example_inner.sh&amp;lt;/code&amp;gt; is your inner submission script and is not an [[SLURM/ArrayJobs | array job]], and you want to run 1000 jobs. If your inner submission script is an array job, adjust the number of jobs accordingly. Array jobs must be of size 500 or less.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
numjobs=1000&lt;br /&gt;
i=0&lt;br /&gt;
while [ $i -lt $numjobs ]&lt;br /&gt;
do&lt;br /&gt;
  while [[ &amp;quot;$(sbatch example_inner.sh 2&amp;gt;&amp;amp;1)&amp;quot; =~ &amp;quot;QOSMaxSubmitJobPerUserLimit&amp;quot; ]]&lt;br /&gt;
  do&lt;br /&gt;
    echo &amp;quot;Currently at maximum job submissions allowed for this QoS.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Waiting for 5 minutes before trying to submit more jobs.&amp;quot;&lt;br /&gt;
    sleep 300&lt;br /&gt;
  done&lt;br /&gt;
  i=$(( $i + 1 ))&lt;br /&gt;
  echo &amp;quot;Submitted job $i of $numjobs&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is suggested that you run the outer submission script in a [[Tmux]] session to keep the terminal window executing it from being interrupted.&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
All network storage available in Nexus is currently [[NFS]] based, and comes in a few different flavors. Compute nodes also have local scratch storage that can be used.&lt;br /&gt;
&lt;br /&gt;
== Home Directories ==&lt;br /&gt;
{{Nfshomes}}&lt;br /&gt;
&lt;br /&gt;
== Scratch Directories ==&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Nexus compute infrastructure:&lt;br /&gt;
* Network scratch directories&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
Please note that [[ClassAccounts | class accounts]] do not have network scratch directories.&lt;br /&gt;
&lt;br /&gt;
=== Network Scratch Directories ===&lt;br /&gt;
You are allocated 200GB of scratch space via NFS from &amp;lt;code&amp;gt;/fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;USERNAME&amp;gt; is your UMIACS username.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;[[Automounter | automounted]]&#039;&#039;&#039;; you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access it.&lt;br /&gt;
&lt;br /&gt;
You can view your quota usage by running &amp;lt;code&amp;gt;df -h /fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 400GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 400GB, you will need faculty approval and/or a [[#Project_Allocations | project allocation]] for this. If you choose to increase your scratch space beyond 400GB, the increased space is also subject to the 270 TB days limit mentioned in the project allocation section before we check back in for renewal. For example, if you request 1.4TB total space, you may have this for 270 days (1TB beyond the 400GB permanent increase). The amount increased beyond 400GB will also count against your faculty member&#039;s 20TB total storage limit mentioned below.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
=== Local Scratch Directories ===&lt;br /&gt;
Each computational node that you can schedule compute jobs on also has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc. and &#039;&#039;&#039;are not backed up or protected in any way.&#039;&#039;&#039;  These directories are almost always more performant than any other storage available to the job as they are mounted from disks directly attached to the compute node.  However, you must stage your data within the confines of your job and extract the relevant resultant data elsewhere before the end of your job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month during our [[MonthlyMaintenanceWindow | monthly maintenance windows]].  Please make sure you secure any resultant data you wish to keep from these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
== Faculty Allocations ==&lt;br /&gt;
Each faculty member can be allocated 1TB of permanent lab space upon request.  We can also support grouping these individual allocations together into larger center, lab, or research group allocations if desired by the faculty.  Please [[HelpDesk | contact staff]] to inquire.&lt;br /&gt;
&lt;br /&gt;
Lab space storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
== Project Allocations ==&lt;br /&gt;
Project allocations are available per user for 270 TB days; you can have a 1TB allocation for up to 270 days, a 3TB allocation for 90 days, etc..&lt;br /&gt;
&lt;br /&gt;
A single faculty member can not have more than 20TB of project allocations across all of their sponsored accounts active simultaneously. Network scratch allocation space increases beyond the 400GB permanent maximum also have the increase count against this limit (i.e., a 1TB network scratch allocation would have 600GB counted towards this limit).&lt;br /&gt;
&lt;br /&gt;
Project storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
The maximum allocation length you can request is 540 days (500GB space) and the maximum storage space you can request is 9TB (30 day length).&lt;br /&gt;
&lt;br /&gt;
To request an allocation, please [[HelpDesk | contact staff]] with the faculty member(s) that the project is under involved in the conversation.  Please include the following details:&lt;br /&gt;
* Project Name (short)&lt;br /&gt;
* Description&lt;br /&gt;
* Size (1TB, 2TB, etc.)&lt;br /&gt;
* Length in days (270 days, 135 days, etc.)&lt;br /&gt;
* Other user(s) that need to access the allocation, if any&lt;br /&gt;
&lt;br /&gt;
These allocations are available via &amp;lt;code&amp;gt;/fs/nexus-projects/&amp;lt;project name&amp;gt;&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;Renewal is not guaranteed to be available due to limits on the amount of total storage.&#039;&#039;&#039;  Near the end of the allocation period, staff will contact you and ask if you are still in need of the storage allocation.  If renewal is available, you can renew for up to another 270 TB days with reapproval from the original faculty approver.&lt;br /&gt;
* If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.&lt;br /&gt;
* If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible.&lt;br /&gt;
** If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible.&lt;br /&gt;
** If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
== Datasets ==&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/nexus-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and made available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The list of Nexus datasets we currently host can be viewed [https://info.umiacs.umd.edu/datasets/list/?q=Nexus here].&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13015</id>
		<title>Nexus/Submission Node Policy</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Submission_Node_Policy&amp;diff=13015"/>
		<updated>2026-03-05T21:19:04Z</updated>

		<summary type="html">&lt;p&gt;Seide: Created page with &amp;quot;Submission nodes are intended for users to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions in the future. For the time being, be a good neighbor!  In general, we expect that users on the...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Submission nodes are intended for users to submit jobs to the Nexus cluster. User interactivity is critical here, and while some of these submission nodes have a decent amount of cores and memory, highly-intensive computational jobs should not be run on these nodes. We have minimal resource restrictions in place at the moment, but we may explore further CPU/memory restrictions in the future. For the time being, be a good neighbor!&lt;br /&gt;
&lt;br /&gt;
In general, we expect that users on these nodes do not use more than 1-2GB of memory at a time and do not sustain &amp;gt;=100% CPU usage (at least 1 core fully utilized) for extended periods of time. Utilizing more than 1 core is fine for bursty workloads, but sustained high CPU utilization can lead to issues with interactivity, and these issues can be drastically amplified if there is also memory contention on the node (swapping memory requires CPU time).&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
* Job submission&lt;br /&gt;
* SSH jump host for user workstations&lt;br /&gt;
* Basic code editing in editors with minimal extensions (e.g. emacs, nano, vim, neovim without an LSP).&lt;br /&gt;
&lt;br /&gt;
==Appropriate submission node uses, with caveats==&lt;br /&gt;
&lt;br /&gt;
These kinds of workloads can be run on submission nodes, but if they are incorrectly configured, they can affect interactivity of the nodes. If we notice repeated behavior like this, we may reach out to you to ask about your environment and suggest ways to lower resource utilization.&lt;br /&gt;
&lt;br /&gt;
* IDEs can be fine, but keep in mind which extensions you install. Some extensions/behaviors may use more memory/CPU than you realize.&lt;br /&gt;
** We have some [[VS_Code|guidance for VS Code and its forks]].&lt;br /&gt;
* For smaller projects, code compilation can be fine. If a project takes longer than 30 seconds to compile, please ensure compilation is limited to a single thread, or consider compiling the code in a Slurm job on one of the dedicated CPU nodes (we suggest using the scavenger partition).&lt;br /&gt;
** Depending on a project&#039;s file structure, code compilation can be highly I/O dependent, which can also impact user interactivity.&lt;br /&gt;
* Setting up environments with user package managers (e.g. pip, npm, conda/mamba)&lt;br /&gt;
** The resource usage of package managers mostly depends on the specific packages being installed. Complex environments can take a while with package managers like conda/mamba due to dependency resolution. Other packages aren&#039;t actually binary releases but will instead compile projects transparently to the user. For these reasons, we suggest that non-trivial environments should be set up in a Slurm job (we suggest using the scavenger partition).&lt;br /&gt;
* Running lightweight programs to interact with Slurm jobs currently running on the cluster.&lt;br /&gt;
&lt;br /&gt;
==Inappropriate submission node uses==&lt;br /&gt;
&lt;br /&gt;
If tech staff notices processes with the following behavior and node interactivity is affected, &amp;lt;b&amp;gt;we may kill these processes&amp;lt;/b&amp;gt;. If a user repeatedly causes issues, further action may be taken on their account.&lt;br /&gt;
&lt;br /&gt;
* Compiling large projects using all threads on a submission node.&lt;br /&gt;
* Running nontrivial computation requiring significant CPU and/or memory resources.&lt;br /&gt;
&lt;br /&gt;
=Advice for monitoring/reducing CPU/memory utilization=&lt;br /&gt;
&lt;br /&gt;
Here is some general guidance for tracking your resource utilization on a node, as well as some practices you can follow to slightly reduce CPU usage of certain tasks.&lt;br /&gt;
&lt;br /&gt;
* `top`&lt;br /&gt;
** By default, `top` sorts by %CPU, but you can sort by %MEM by pressing &amp;quot;M&amp;quot; (Shift + &amp;quot;m&amp;quot;).&lt;br /&gt;
** You can limit it to show only processes from your user by starting it with `-t $USER`&lt;br /&gt;
** VIRT memory usage doesn&#039;t mean too much, as oftentimes programs will request way more memory than they actually need, and the kernel may not actually give them this memory until it is actually required. RSS memory is the actual amount of memory used by a process at a given point. If there is no suffix, the reported value is in KB.&lt;br /&gt;
* /sys/fs/cgroup/memory/user.slice/user-$UID_NUMBER.slice/memory.usage_in_bytes&lt;br /&gt;
** This is the current combined memory usage of all processes running under your user.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13014</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13014"/>
		<updated>2026-03-05T20:56:09Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Keep data separate from code where possible */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to. Password authentication does not provide an option to save your password, so for convenience, you may want to set up an [[SSH/Keys | SSH key]].&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Search tuning====&lt;br /&gt;
VS Code comes bundled with Ripgrep as the default search program. Searching in workspaces with very large numbers of small files can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that searches do not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
=====Keep data separate from code where possible=====&lt;br /&gt;
Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore, .gitignore, or .rgignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file.&lt;br /&gt;
&lt;br /&gt;
=====Limit maximum number of threads for searches=====&lt;br /&gt;
By default, VS Code will automatically determine the number of threads to use when searching files. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
If you are done using VS Code for an extended period of time (several hours / overnight), consider manually killing your server session on the submission node when exiting. By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect, keeping the VS Code Server processes on the submission node you were using alive, despite no longer actively being used.&lt;br /&gt;
&lt;br /&gt;
This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote1.png]]&lt;br /&gt;
&lt;br /&gt;
Select the submission node you were using and click on it.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote2.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote3.png]]&lt;br /&gt;
&lt;br /&gt;
The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13012</id>
		<title>VS Code</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=VS_Code&amp;diff=13012"/>
		<updated>2026-03-05T19:50:13Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Best Practices */ Add information about searching&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://code.visualstudio.com/ Visual Studio (VS) Code] is a multi-platform source-code editor developed by Microsoft. It can be used with a variety of programming languages and can have its base functionality extended through extensions available via its [https://marketplace.visualstudio.com/vscode marketplace]. The base editor itself is free, but some extensions may require paid subscriptions.&lt;br /&gt;
&lt;br /&gt;
There are also forks/open source alternatives of VS Code, such as [https://www.cursor.com Cursor] or [https://vscodium.com/ VSCodium]. The same general principals below apply to these editors as well.&lt;br /&gt;
&lt;br /&gt;
==Cluster Usage==&lt;br /&gt;
It can be convenient when using our [[SLURM]] computing clusters to open a connection to a [https://code.visualstudio.com/docs/remote/vscode-server VS Code Server] session on the submission node(s) that you have access to via VS Code&#039;s [https://code.visualstudio.com/docs/remote/ssh Remote - SSH extension]. Steps to set this up can be found [https://code.visualstudio.com/docs/remote/ssh#_installation here]. Use your UMIACS username and the [https://en.wikipedia.org/wiki/Fully_qualified_domain_name fully qualified domain name (FQDN)] of the submission node you want to connect to. Password authentication does not provide an option to save your password, so for convenience, you may want to set up an [[SSH/Keys | SSH key]].&lt;br /&gt;
&lt;br /&gt;
For a list of active issues with the Remote - SSH extension, please see Microsoft&#039;s GitHub tracker [https://github.com/Microsoft/vscode-remote-release/labels/ssh here].&lt;br /&gt;
&lt;br /&gt;
===Best Practices===&lt;br /&gt;
Because of the multi-tenant nature of our submission nodes, using the Remote - SSH extension to connect to a VS Code Server running on a submission node can have adverse affects on other users simultaneously using the submission nodes if not properly managed. The following is a list of &amp;quot;best practices&amp;quot; that we ask you please follow to minimize the chance of impacting others on submission nodes. We have compiled the list through observation as well as through discussion with users.&lt;br /&gt;
&lt;br /&gt;
====Use only as a code editor====&lt;br /&gt;
VS Code can perform many common file management operations, such as moving, copying, or deleting files or directories. However, the overhead of providing progress updates / status messages through VS Code&#039;s UI can cause load spikes that result in other system-level and user processes on the submission node slowing down. This is especially the case if operating on thousands to millions of small image or video files. In extreme cases, it can seem as though the submission node is wholly unresponsive.&lt;br /&gt;
&lt;br /&gt;
The best way to combat this is to use VS Code as just a code editor as strictly as you can (meaning creating new and/or editing existing source code files only). Use standard command-line programs such as &amp;lt;code&amp;gt;mv&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;cp&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;rm&amp;lt;/code&amp;gt; in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file management instead, or use the techniques advertised [[LocalDataTransfer | here]] for larger data transfers between nodes.&lt;br /&gt;
&lt;br /&gt;
====Do not open large files====&lt;br /&gt;
Files that you open in VS Code&#039;s text editor on a remote machine through the Remote - SSH extension are loaded entirely into RAM on the remote machine. Because of the persistence of VS Code Server processes, opening several unique files may result in them all remaining in RAM for extended periods of time even if you no longer have tabs open for them in the Tab Bar.&lt;br /&gt;
&lt;br /&gt;
As such, please refrain from opening large files (more than a few MB) in VS Code itself on submission nodes. Use a lighter-weight command-line based text editor such as [https://www.vim.org vim] or otherwise in VS Code&#039;s terminal window or a separate application&#039;s terminal window for local file editing instead.&lt;br /&gt;
&lt;br /&gt;
If you absolutely need to open one or more large files for a very brief period of time on a submission node, please clean up your server session on that node (see below section) as soon as possible when done.&lt;br /&gt;
&lt;br /&gt;
====Search tuning====&lt;br /&gt;
VS Code comes bundled with Ripgrep as the default search program. Searching in workspaces with very large numbers of small files can result in degraded performance due to NFS overhead amplified by small file I/O. The following tips can ensure that searches do not significantly impact performance.&lt;br /&gt;
&lt;br /&gt;
=====Keep data separate from code where possible=====&lt;br /&gt;
Make sure that datasets are kept outside of your VS Code workspace so that searches do not look through these directories. Alternatively, by default VS Code will not search files listed in a .ignore or .gitignore file, so adding directories with datasets to one of these files is another option. Any directory with only binary data is a good candidate to add to this file.&lt;br /&gt;
&lt;br /&gt;
=====Limit maximum number of threads for searches=====&lt;br /&gt;
By default, VS Code will automatically determine the number of threads to use when searching files. You can force a maximum number of threads under &amp;quot;Settings-&amp;gt;Features-&amp;gt;Search-&amp;gt;Ripgrep: Max Threads&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Clean up when done====&lt;br /&gt;
If you are done using VS Code for an extended period of time (several hours / overnight), consider manually killing your server session on the submission node when exiting. By default, VS Code Server will keep the processes used by your session active for a few hours after you disconnect, keeping the VS Code Server processes on the submission node you were using alive, despite no longer actively being used.&lt;br /&gt;
&lt;br /&gt;
This can be done by opening the [https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette Command Palette] (Ctrl+Shift+P) and searching &amp;quot;Kill VS Code Server on Host...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote1.png]]&lt;br /&gt;
&lt;br /&gt;
Select the submission node you were using and click on it.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote2.png]]&lt;br /&gt;
&lt;br /&gt;
Wait a few seconds and you should get a message confirming the command went through.&lt;br /&gt;
&lt;br /&gt;
: [[File:VSCode-killremote3.png]]&lt;br /&gt;
&lt;br /&gt;
The next time you connect to the same submission node, you will have a fresh VS Code session on it.&lt;br /&gt;
&lt;br /&gt;
==Common Issues==&lt;br /&gt;
If you are having trouble [[SSH]]&#039;ing to a submission node with VS Code, check if your home directory is full.&lt;br /&gt;
&lt;br /&gt;
# Connect to one of your Nexus submission nodes via [[SSH]] &#039;&#039;&#039;not&#039;&#039;&#039; using VS Code.&lt;br /&gt;
# Navigate to your home directory. &amp;lt;pre&amp;gt;cd ~&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Check if it is full. &amp;lt;pre&amp;gt;df -h .&amp;lt;/pre&amp;gt;&lt;br /&gt;
# If it is full (Avail 0), delete some files to free up at least ~100MB of space. &amp;lt;pre&amp;gt;Filesystem                                    Size  Used Avail Use% Mounted on&amp;amp;#10;data.isilon.umiacs.umd.edu:/ifs/umiacs/homes   30G   30G     0 100% /fs/nfshomes&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Try connecting with VS Code again.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=12937</id>
		<title>Nexus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=12937"/>
		<updated>2025-11-21T16:14:52Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Partition QoS */ Update for scavenger/scavenger-aarch64 relative QoS configuration&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nexus is the combined scheduler of resources in UMIACS.  The resource manager for Nexus is [[SLURM]].  Resources are arranged into partitions where users are able to schedule computational jobs.  Users are arranged into a number of SLURM accounts based on faculty, lab, or center investments.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
All accounts in UMIACS are sponsored.  If you don&#039;t already have a UMIACS account, please see [[Accounts]] for information on getting one.  You need a full UMIACS account (not a [[Accounts/Collaborator | collaborator account]]) in order to access Nexus.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
Your access to submission nodes (alternatively called login nodes) for Nexus computational resources is determined by your account sponsor&#039;s department, center, or lab affiliation.  You can log into the [https://intranet.umiacs.umd.edu/directory/cr/ UMIACS Directory CR application] and select the Computational Resource (CR) in the list that has the prefix &amp;lt;code&amp;gt;nexus&amp;lt;/code&amp;gt;.  The Hosts section lists your available submission nodes - generally a pair of nodes of the format &amp;lt;tt&amp;gt;nexus&amp;lt;department, lab, or center abbreviation&amp;gt;[00,01]&amp;lt;/tt&amp;gt;, e.g., &amp;lt;tt&amp;gt;nexusgroup00&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nexusgroup01&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Once you have identified your submission nodes, you can [[SSH]] into them [https://itsupport.umd.edu/itsupport?id=kb_article_view&amp;amp;sysparm_article=KB0016076 after connecting to UMD&#039;s GlobalProtect VPN].  From there, you are able to submit to the cluster via our [[SLURM]] workload manager.  You need to make sure that your submitted jobs have the correct account, partition, and qos.&lt;br /&gt;
&lt;br /&gt;
== Jobs ==&lt;br /&gt;
[[SLURM]] jobs are [[SLURM/JobSubmission | submitted]] by either &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; depending if you are doing an interactive job or batch job, respectively.  You need to provide the where/how/who to run the job and specify the resources you need to run with.&lt;br /&gt;
&lt;br /&gt;
For the who/where/how, you may be required to specify &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; (respectively) to be able to adequately submit jobs to the Nexus.&lt;br /&gt;
&lt;br /&gt;
For resources, you may need to specify &amp;lt;code&amp;gt;--time&amp;lt;/code&amp;gt; for time, &amp;lt;code&amp;gt;--cpus-per-task&amp;lt;/code&amp;gt; for CPUs, &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; for RAM, and &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt; for GPUs in your submission arguments to meet your requirements.  There are defaults for all four; if you don&#039;t specify something, you will get the default value for that resource, which is minimal (e.g., by default, NO GPUs are included if you do not specify &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt;).  For more information about submission flags for GPU resources, see [[SLURM/JobSubmission#Requesting_GPUs | here]].  You may also use &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; to specify the number of parallel processes to run, with each task having its own set of the resources specified above. You can run &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt; on your submission node for a complete list of available submission arguments.&lt;br /&gt;
&lt;br /&gt;
For a list of available GPU types on Nexus and their specs, please see [[Nexus/GPUs]].&lt;br /&gt;
&lt;br /&gt;
For details on how the network for Nexus is architected, please see [[Nexus/Network]]. This can be important if you wish to optimize performance of your jobs.&lt;br /&gt;
&lt;br /&gt;
=== Interactive ===&lt;br /&gt;
Once logged into a submission node, you can run simple interactive jobs.  If your session is interrupted from the submission node, the job will be killed.  As such, we encourage use of a terminal multiplexer such as [[Tmux]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --cpus-per-task=4 --mem=2gb --gres=gpu:1 bash&lt;br /&gt;
srun: Job account was unset; set to user default of &#039;nexus&#039;&lt;br /&gt;
srun: Job partition was unset; set to cluster default of &#039;tron&#039;&lt;br /&gt;
srun: Job QoS was unset; set to association default of &#039;default&#039;&lt;br /&gt;
srun: Job time limit was unset; set to partition default of 60 minutes&lt;br /&gt;
srun: job 1 queued and waiting for resources&lt;br /&gt;
srun: job 1 has been allocated resources&lt;br /&gt;
$ hostname&lt;br /&gt;
tron62.umiacs.umd.edu&lt;br /&gt;
$ nvidia-smi -L&lt;br /&gt;
GPU 0: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-daad6a04-a2ce-1183-ce53-b267048f750a)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch ===&lt;br /&gt;
Batch jobs are scheduled with a script file with an optional ability to embed job scheduling parameters via variables that are defined by &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; lines at the top of the file.  You can find some examples in our [[SLURM/JobSubmission]] documentation.&lt;br /&gt;
&lt;br /&gt;
= Partitions = &lt;br /&gt;
The SLURM resource manager uses partitions to act as job queues which can restrict size, time and user limits. The Nexus has a number of different partitions of resources. Different Centers, Labs, and Faculty are able to invest in computational resources that are restricted to approved users through these partitions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by all non-[[ClassAccounts |class account]] users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/Tron]] - Pool of resources available to all non-class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
* Scavenger - [https://slurm.schedmd.com/preempt.html Preemption] partition that contains [https://en.wikipedia.org/wiki/X86-64 x86_64] architecture nodes from multiple other partitions. More resources are available to schedule simultaneously than in other partitions, however jobs are subject to preemption rules. You are responsible for ensuring your jobs handle this preemption correctly. The SLURM scheduler will simply restart a preempted job with the same submission arguments when it is available to run again. For an overview of things you can check within scripts to determine if your job was preempted/resumed, see [[SLURM/Preemption]].&lt;br /&gt;
* Scavenger (aarch64) - Preemption partition identical in design to &amp;lt;tt&amp;gt;scavenger&amp;lt;/tt&amp;gt;, but only contains [https://en.wikipedia.org/wiki/AArch64 aarch64] architecture nodes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by [[ClassAccounts]]:&#039;&#039;&#039;&lt;br /&gt;
* [[ClassAccounts | Class]] - Pool of resources available to class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by specific lab/center users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/CBCB]] - CBCB lab pool available for CBCB lab members.&lt;br /&gt;
* [[Nexus/CLIP]] - CLIP lab pool available for CLIP lab members.&lt;br /&gt;
* [[Nexus/CML]] - CML lab pool available for CML lab members.&lt;br /&gt;
* [[Nexus/GAMMA]] - GAMMA lab pool available for GAMMA lab members.&lt;br /&gt;
* [[Nexus/MBRC]] - MBRC lab pool available for MBRC lab members.&lt;br /&gt;
* [[Nexus/MC2]] - MC2 lab pool available for MC2 lab members.&lt;br /&gt;
* [[Nexus/QuICS]] - QuICS lab pool available for QuICS lab members.&lt;br /&gt;
* [[Nexus/Vulcan]] - Vulcan lab pool available for Vulcan lab members.&lt;br /&gt;
&lt;br /&gt;
You can view the partitions that you have access to by using the &amp;lt;code&amp;gt;show_partitions&amp;lt;/code&amp;gt; command. By default, the command will show only the partitions that are available to you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partitions&lt;br /&gt;
                    Name           AllowAccounts                       AllowQos    MaxNodes                        Nodes&lt;br /&gt;
------------------------ ----------------------- ------------------------------ ----------- ----------------------------               &lt;br /&gt;
               scavenger               scavenger                      scavenger   UNLIMITED                brigid[16-19]                                                                                                             &lt;br /&gt;
                                                                                                             cbcb[00-29]                                                                                                             &lt;br /&gt;
                                                                                                             clip[00-13]                                                                                               &lt;br /&gt;
                                                                                               cml[00,02-13,15-28,30-33]                                                                                                     &lt;br /&gt;
                                                                                                     cmlcpu[00-04,06-07]                                                                                                         &lt;br /&gt;
                                                                                                         gammagpu[00-21]                                                                                               &lt;br /&gt;
                                                                                               legacy[00-11,13-28,30-36]                                                                                                        &lt;br /&gt;
                                                                                                        legacygpu[00-07]                                                                                                                 &lt;br /&gt;
                                                                                                                 quics00                                                                                                       &lt;br /&gt;
                                                                                                       tron[00-44,46-69]                                                                                                           &lt;br /&gt;
                                                                                                           vulcan[00-45]&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
       scavenger-aarch64               scavenger              scavenger-aarch64   UNLIMITED                 oasis[00-39]&lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------                    &lt;br /&gt;
                    tron                   nexus                        default   UNLIMITED            tron[00-44,46-69]                                                                           &lt;br /&gt;
                                                                           high                                                                                                                  &lt;br /&gt;
                                                                         medium                                         &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see information for all of the partitions, you can use the &amp;lt;code&amp;gt;show_partitions --all&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partitions --all&lt;br /&gt;
                    Name           AllowAccounts                       AllowQos    MaxNodes                        Nodes&lt;br /&gt;
------------------------ ----------------------- ------------------------------ ----------- ----------------------------                    &lt;br /&gt;
                    cbcb                    cbcb                        default   UNLIMITED            cbcb[00-20,22-29]                                                                         &lt;br /&gt;
                                                                         medium                legacy[00-11,13-28,30-36]                                                                           &lt;br /&gt;
                                                                           high                                                                                                               &lt;br /&gt;
                                                                      huge-long                                                                                                                 &lt;br /&gt;
                                                                        highmem                                         &lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
               cbcb-heng               cbcb-heng                        default   UNLIMITED                  cbcb[26-29]                                                                         &lt;br /&gt;
                                                                         medium                                                                                                                     &lt;br /&gt;
                                                                           high                                                                                                               &lt;br /&gt;
                                                                      huge-long                                                                                                                 &lt;br /&gt;
                                                                        highmem                                         &lt;br /&gt;
------------------------------------------------------------------------------------------------------------------------        &lt;br /&gt;
        cbcb-interactive                    cbcb                    interactive   UNLIMITED                       cbcb21&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Quality of Service (QoS) =&lt;br /&gt;
SLURM uses Quality of Service (QoS) both to provide limits on job sizes (termed by us as &amp;quot;job QoS&amp;quot;) as well as to limit resources used by all jobs running in a partition, either per user or per group (termed by us as &amp;quot;partition QoS&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Job QoS ===&lt;br /&gt;
Job QoS are used to provide limits on the size of job that you can run. You should try to allocate only the resources your job actually needs, as resources that each of your jobs schedules are counted against your [[SLURM/Priority#Fair-share | fair-share priority]] in the future.&lt;br /&gt;
* default - Default job QoS. Limited to 4 CPU cores, 1 GPU, and 32GB RAM per job.  The maximum wall time per job is 3 days.&lt;br /&gt;
* medium - Limited to 8 CPU cores, 2 GPUs, and 64GB RAM per job.  The maximum wall time per job is 2 days.&lt;br /&gt;
* high - Limited to 16 CPU cores, 4 GPUs, and 128GB RAM per job.  The maximum wall time per job is 1 day.&lt;br /&gt;
* scavenger - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  576 total CPU cores, 72 total GPUs, and 2304GB total RAM are permitted simultaneously across all of your jobs running with this job QoS.  This job QoS is paired 1-1 with the scavenger partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt; in your submission arguments.  Do not include any job QoS argument other than &amp;lt;code&amp;gt;--qos=scavenger&amp;lt;/code&amp;gt; (optional) or submission will fail.&lt;br /&gt;
* scavenger-aarch64 - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  1600 total CPU cores and 281140MB total RAM are permitted simultaneously across all of your jobs running with this job QoS.  This job QoS is paired 1-1 with the scavenger-aarch64 partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger-aarch64&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;--qos=scavenger-aarch64&amp;lt;/code&amp;gt; in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
You can display these job QoS from the command line using the &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt; command.  By default, the command will only show job QoS that you can access.  The above five job QoS are the ones that everyone can access.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                          &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00                                           cpu=576,gres/gpu=72,mem=2304G &lt;br /&gt;
   scavenger-aarch64  3-00:00:00                                                    cpu=1600,mem=281140M &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all job QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos --all&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU&lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------&lt;br /&gt;
             cml-cpu  7-00:00:00                                        8&lt;br /&gt;
         cml-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2&lt;br /&gt;
            cml-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2&lt;br /&gt;
       cml-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8&lt;br /&gt;
          cml-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2&lt;br /&gt;
       cml-scavenger  3-00:00:00                                                             gres/gpu=24&lt;br /&gt;
       cml-very_high  1-12:00:00     cpu=32,gres/gpu=8,mem=256G         8                    gres/gpu=12&lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G&lt;br /&gt;
     gamma-huge-long 10-00:00:00    cpu=32,gres/gpu=16,mem=256G&lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G&lt;br /&gt;
             highmem 21-00:00:00                 cpu=128,mem=2T&lt;br /&gt;
           huge-long 10-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
         interactive    12:00:00                 cpu=4,mem=128G&lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G&lt;br /&gt;
        oasis-exempt 10-00:00:00                                                      cpu=160,mem=28114M&lt;br /&gt;
           scavenger  3-00:00:00                                           cpu=576,gres/gpu=72,mem=2304G&lt;br /&gt;
   scavenger-aarch64  3-00:00:00                                                    cpu=1600,mem=281140M&lt;br /&gt;
         tron-exempt              cpu=32,gres/gpu=8,mem=383030M         1&lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4&lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2&lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2&lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2&lt;br /&gt;
    vulcan-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8&lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2&lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48&lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
vulcan-scavenger-mu+  3-00:00:00  cpu=288,gres/gpu=72,mem=1152G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You are able to submit to any partition that is listed in the &amp;lt;code&amp;gt;show_partitions&amp;lt;/code&amp;gt; command. If you need to use an account other than the default account &amp;lt;tt&amp;gt;nexus&amp;lt;/tt&amp;gt;, you will need to specify it via the &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt; submission argument.&lt;br /&gt;
&lt;br /&gt;
=== Partition QoS ===&lt;br /&gt;
Partition QoS are used to limit resources used by all jobs running in a partition, either per user (MaxTRESPU) or per group (GrpTRES).&lt;br /&gt;
&lt;br /&gt;
To view partition QoS, use the &amp;lt;code&amp;gt;show_partition_qos&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
   scavenger-aarch64_part         500                  cpu=11%,mem=11%                     &lt;br /&gt;
           scavenger_part         500     cpu=11%,gres/gpu=11%,mem=11%                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some partitions QoS have relative TRES limits based on the current hardware in a given partition, represented with percentages. Of the broadly-available partitions, this applies to scavenger and scavenger-aarch64. To see the current actual TRES limits of these QoS, you can use the &amp;lt;code&amp;gt;-r/--real&amp;lt;/code&amp;gt; argument.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[seide@nexusstaff00 ~]$ show_partition_qos -r&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
   scavenger-aarch64_part         500              cpu=651,mem=114423M                     &lt;br /&gt;
           scavenger_part         500  cpu=888,gres/gpu=140,mem=12574G                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all partition QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;-a/--all&amp;lt;/code&amp;gt; argument. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos -a&lt;br /&gt;
                     Name MaxSubmitPU                        MaxTRESPU              GrpTRES&lt;br /&gt;
------------------------- ----------- -------------------------------- --------------------&lt;br /&gt;
                     cbcb         500                                   cpu=1406,mem=50359G&lt;br /&gt;
                cbcb-heng         500                                                      &lt;br /&gt;
         cbcb-interactive         500                                                      &lt;br /&gt;
                    class         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
                     clip         500                                     cpu=726,mem=6939G&lt;br /&gt;
                      cml         500                                   cpu=1226,mem=12116G&lt;br /&gt;
                  cml-cpu         500                                                      &lt;br /&gt;
             cml-director         500                                                      &lt;br /&gt;
              cml-furongh         500                                                      &lt;br /&gt;
            cml-scavenger         500                      gres/gpu=24                     &lt;br /&gt;
               cml-sfeizi         500                                                      &lt;br /&gt;
                cml-wriva         500                                                      &lt;br /&gt;
           cml-wriva-high         500                                                      &lt;br /&gt;
                 csd-h200         500                                                      &lt;br /&gt;
                    gamma         500                                     cpu=906,mem=7675G&lt;br /&gt;
                     mbrc         500                                     cpu=370,mem=3571G&lt;br /&gt;
                      mc2         500                                     cpu=330,mem=3201G&lt;br /&gt;
                    oasis         500                                                      &lt;br /&gt;
                    quics         500                                     cpu=458,mem=4710G&lt;br /&gt;
   scavenger-aarch64_part         500                  cpu=11%,mem=11%                     &lt;br /&gt;
           scavenger_part         500     cpu=11%,gres/gpu=11%,mem=11%                     &lt;br /&gt;
                     tron         500    cpu=32,gres/gpu=4,mem=262144M                     &lt;br /&gt;
                   vulcan         500                                   cpu=1402,mem=12936G&lt;br /&gt;
            vulcan-ampere         500                                                      &lt;br /&gt;
               vulcan-cpu         500                                                      &lt;br /&gt;
            vulcan-ramani         500                                                      &lt;br /&gt;
         vulcan-scavenger         500                                                      &lt;br /&gt;
   vulcan-scavenger-multi         500                                                      &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: These QoS cannot be used directly when submitting jobs. Partition QoS limits apply to all jobs running on a given partition, regardless of what job QoS is used.&lt;br /&gt;
&lt;br /&gt;
For example, in the default non-preemption partition (&amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt;), you are restricted to 32 total CPU cores, 4 total GPUs, and 256GB total RAM at once across all jobs you have running in the partition.&lt;br /&gt;
&lt;br /&gt;
Lab/group-specific partitions may also have their own user limits, and/or may also have group limits on the total number of resources consumed simultaneously by all users that are using their partition, codified by the line in the output above that matches their lab/group name. Note that the values listed above in the two &amp;quot;TRES&amp;quot; columns are not fixed and may fluctuate per-partition as more resources are added to or removed from each partition.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;All partitions also only allow a maximum of 500 submitted (running (R) or pending (PD)) jobs per user in the partition simultaneously.&#039;&#039;&#039; This is to prevent excess pending jobs causing [https://slurm.schedmd.com/sched_config.html#backfill backfill] issues with the SLURM scheduler.&lt;br /&gt;
* If you need to submit more than 500 jobs in batch at once, you can develop and run an &amp;quot;outer submission script&amp;quot; that repeatedly attempts to run an &amp;quot;inner submission script&amp;quot; (your original submission script) to submit jobs in the batch periodically, until all job submissions are successful. The outer submission script should use looping logic to check if you are at the max job limit and should then retry submission after waiting for some time interval.&lt;br /&gt;
: An example outer submission script is as follows. In this example, &amp;lt;code&amp;gt;example_inner.sh&amp;lt;/code&amp;gt; is your inner submission script and is not an [[SLURM/ArrayJobs | array job]], and you want to run 1000 jobs. If your inner submission script is an array job, adjust the number of jobs accordingly. Array jobs must be of size 500 or less.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
numjobs=1000&lt;br /&gt;
i=0&lt;br /&gt;
while [ $i -lt $numjobs ]&lt;br /&gt;
do&lt;br /&gt;
  while [[ &amp;quot;$(sbatch example_inner.sh 2&amp;gt;&amp;amp;1)&amp;quot; =~ &amp;quot;QOSMaxSubmitJobPerUserLimit&amp;quot; ]]&lt;br /&gt;
  do&lt;br /&gt;
    echo &amp;quot;Currently at maximum job submissions allowed.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Waiting for 5 minutes before trying to submit more jobs.&amp;quot;&lt;br /&gt;
    sleep 300&lt;br /&gt;
  done&lt;br /&gt;
  i=$(( $i + 1 ))&lt;br /&gt;
  echo &amp;quot;Submitted job $i of $numjobs&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is suggested that you run the outer submission script in a [[Tmux]] session to keep the terminal window executing it from being interrupted.&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
All network storage available in Nexus is currently [[NFS]] based, and comes in a few different flavors. Compute nodes also have local scratch storage that can be used.&lt;br /&gt;
&lt;br /&gt;
== Home Directories ==&lt;br /&gt;
{{Nfshomes}}&lt;br /&gt;
&lt;br /&gt;
== Scratch Directories ==&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Nexus compute infrastructure:&lt;br /&gt;
* Network scratch directories&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
Please note that [[ClassAccounts | class accounts]] do not have network scratch directories.&lt;br /&gt;
&lt;br /&gt;
=== Network Scratch Directories ===&lt;br /&gt;
You are allocated 200GB of scratch space via NFS from &amp;lt;code&amp;gt;/fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;USERNAME&amp;gt; is your UMIACS username.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;[[Automounter | automounted]]&#039;&#039;&#039;; you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access it.&lt;br /&gt;
&lt;br /&gt;
You can view your quota usage by running &amp;lt;code&amp;gt;df -h /fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 400GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 400GB, you will need faculty approval and/or a [[#Project_Allocations | project allocation]] for this. If you choose to increase your scratch space beyond 400GB, the increased space is also subject to the 270 TB days limit mentioned in the project allocation section before we check back in for renewal. For example, if you request 1.4TB total space, you may have this for 270 days (1TB beyond the 400GB permanent increase). The amount increased beyond 400GB will also count against your faculty member&#039;s 20TB total storage limit mentioned below.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
=== Local Scratch Directories ===&lt;br /&gt;
Each computational node that you can schedule compute jobs on also has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc. and &#039;&#039;&#039;are not backed up or protected in any way.&#039;&#039;&#039;  These directories are almost always more performant than any other storage available to the job as they are mounted from disks directly attached to the compute node.  However, you must stage your data within the confines of your job and extract the relevant resultant data elsewhere before the end of your job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month during our [[MonthlyMaintenanceWindow | monthly maintenance windows]].  Please make sure you secure any resultant data you wish to keep from these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
== Faculty Allocations ==&lt;br /&gt;
Each faculty member can be allocated 1TB of permanent lab space upon request.  We can also support grouping these individual allocations together into larger center, lab, or research group allocations if desired by the faculty.  Please [[HelpDesk | contact staff]] to inquire.&lt;br /&gt;
&lt;br /&gt;
Lab space storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
== Project Allocations ==&lt;br /&gt;
Project allocations are available per user for 270 TB days; you can have a 1TB allocation for up to 270 days, a 3TB allocation for 90 days, etc..&lt;br /&gt;
&lt;br /&gt;
A single faculty member can not have more than 20TB of project allocations across all of their sponsored accounts active simultaneously. Network scratch allocation space increases beyond the 400GB permanent maximum also have the increase count against this limit (i.e., a 1TB network scratch allocation would have 600GB counted towards this limit).&lt;br /&gt;
&lt;br /&gt;
Project storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
The maximum allocation length you can request is 540 days (500GB space) and the maximum storage space you can request is 9TB (30 day length).&lt;br /&gt;
&lt;br /&gt;
To request an allocation, please [[HelpDesk | contact staff]] with the faculty member(s) that the project is under involved in the conversation.  Please include the following details:&lt;br /&gt;
* Project Name (short)&lt;br /&gt;
* Description&lt;br /&gt;
* Size (1TB, 2TB, etc.)&lt;br /&gt;
* Length in days (270 days, 135 days, etc.)&lt;br /&gt;
* Other user(s) that need to access the allocation, if any&lt;br /&gt;
&lt;br /&gt;
These allocations are available via &amp;lt;code&amp;gt;/fs/nexus-projects/&amp;lt;project name&amp;gt;&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;Renewal is not guaranteed to be available due to limits on the amount of total storage.&#039;&#039;&#039;  Near the end of the allocation period, staff will contact you and ask if you are still in need of the storage allocation.  If renewal is available, you can renew for up to another 270 TB days with reapproval from the original faculty approver.&lt;br /&gt;
* If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.&lt;br /&gt;
* If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible.&lt;br /&gt;
** If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible.&lt;br /&gt;
** If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
== Datasets ==&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/nexus-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and made available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The list of Nexus datasets we currently host can be viewed [https://info.umiacs.umd.edu/datasets/list/?q=Nexus here].&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Modules&amp;diff=12021</id>
		<title>Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Modules&amp;diff=12021"/>
		<updated>2024-09-12T17:40:30Z</updated>

		<summary type="html">&lt;p&gt;Seide: RHEL9 desktop node&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=GNU Modules=&lt;br /&gt;
Many large institutions use the concept of Modules to load software into user environments.  They provide a way to add and remove environmental variables that provide access to UMIACS&#039; large set of software that we offer on our Red Hat Enterprise Linux ([[RedHat]]) and [[Ubuntu]] platforms.  They work by customizing your shell environment which is done automatically for the two major shell families (bash/sh (default shell) and tcsh/csh).  If you use an alternate shell, please look to source the appropriate script for your shell in &amp;lt;tt&amp;gt;/usr/share/Modules/init&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Initially your module environment is empty, though included in your module path are local operating system specific modules, locally built software modules, and binary software modules (Matlab, Intel Compiler, etc.).&lt;br /&gt;
&lt;br /&gt;
==Available Software==&lt;br /&gt;
To see if a piece of software is available, use the &amp;lt;tt&amp;gt;module avail&amp;lt;/tt&amp;gt; command.  This can be given a trailing prefix on the command line to search a subset of the available software.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusstaff00 ~]$ module avail cuda&lt;br /&gt;
--------------------------- /opt/common/.modulefiles ---------------------------&lt;br /&gt;
cuda/3.2.16  cuda/6.5.14     cuda/9.0.176   cuda/11.0.3  cuda/11.8.0&lt;br /&gt;
cuda/4.2.9   cuda/7.0.28     cuda/9.1.85    cuda/11.1.1  cuda/12.0.1&lt;br /&gt;
cuda/5.0.35  cuda/7.5.18     cuda/9.2.148   cuda/11.2.2  cuda/12.1.1&lt;br /&gt;
cuda/5.5.11  cuda/8.0.27rc2  cuda/10.0.130  cuda/11.3.1&lt;br /&gt;
cuda/5.5.22  cuda/8.0.44     cuda/10.1.243  cuda/11.4.4&lt;br /&gt;
cuda/6.0.37  cuda/8.0.61     cuda/10.2.89   cuda/11.7.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusstaff00 ~]$ module avail Python3&lt;br /&gt;
------------------------- /opt/local/stow/.modulefiles -------------------------&lt;br /&gt;
Python3/3.5.2   Python3/3.8.2   Python3/3.8.15  Python3/3.9.16&lt;br /&gt;
Python3/3.6.15  Python3/3.8.10  Python3/3.9.5   Python3/3.10.4&lt;br /&gt;
Python3/3.7.13  Python3/3.8.12  Python3/3.9.6   Python3/3.10.10&lt;br /&gt;
Python3/3.7.16  Python3/3.8.13  Python3/3.9.12  Python3/3.11.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some pieces of software may have default versions that are loaded if no version is explicitly specified, indicated by &amp;lt;code&amp;gt;(default)&amp;lt;/code&amp;gt; coming after their name/version in the output of &amp;lt;tt&amp;gt;module avail&amp;lt;/tt&amp;gt;. If a piece of software does not have any default version and you load it without specifying a version, you will load the most recent version of it.&lt;br /&gt;
&lt;br /&gt;
==Adding Modules into your Environment==&lt;br /&gt;
You can simply add a module into your environment by using the &amp;lt;tt&amp;gt;module add &amp;lt;module&amp;gt;&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusstaff00 ~]$ module add cuda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also specify a specific version of the software when we have multiple ones available.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusstaff00 ~]$ module add Python3/3.10.10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Listing Modules==&lt;br /&gt;
You can list the currently loaded modules in your environment by using the &#039;&#039;&#039;list&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusstaff00 ~]$ module list&lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
 1) Python3/3.10.10   2) cuda/12.1.1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Showing a Module==&lt;br /&gt;
You can show what the module is going to add to your environment (and the dependencies that will be added) with the &#039;&#039;&#039;show&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@nexusstaff00 ~]$ module show cuda&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/opt/common/.modulefiles/cuda/12.1.1:&lt;br /&gt;
&lt;br /&gt;
conflict        cuda/12.0.1 cuda/11.8.0 cuda/11.7.0 cuda/11.4.4 cuda/11.2.2 cuda/11.1.1 cuda/11.0.3 cuda/10.2.89 cuda/10.1.243 cuda/10.0.130 cuda/9.2.148 cuda/9.1.85 cuda/9.0.176 cuda/8.0.61 cuda/8.0.44 cuda/8.0.27rc2 cuda/7.5.18 cuda/7.0.28 cuda/6.5.14 cuda/6.0.37 cuda/5.5.22 cuda/5.5.11 cuda/5.0.35 cuda/4.2.9 cuda/3.2.16&lt;br /&gt;
prepend-path    PATH /opt/common/cuda/cuda-12.1.1/bin&lt;br /&gt;
prepend-path    LD_LIBRARY_PATH /opt/common/cuda/cuda-12.1.1/lib64&lt;br /&gt;
prepend-path    LD_RUN_PATH /usr/lib64/nvidia:/usr/lib/nvidia:/opt/common/cuda/cuda-12.1.1/lib64:/opt/common/cuda/cuda-12.1.1/lib&lt;br /&gt;
prepend-path    LIBRARY_PATH /usr/lib64/nvidia:/usr/lib/nvidia:/opt/common/cuda/cuda-12.1.1/lib64:/opt/common/cuda/cuda-12.1.1/lib&lt;br /&gt;
prepend-path    CPATH /opt/common/cuda/cuda-12.1.1/include&lt;br /&gt;
prepend-path    PKG_CONFIG_PATH /opt/common/cuda/cuda-12.1.1/pkgconfig&lt;br /&gt;
setenv          CUDA_HOME /opt/common/cuda/cuda-12.1.1&lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Removing Modules in your Environment==&lt;br /&gt;
If you want to remove a module because it conflicts or you want to clean up your environment you can by using the &amp;lt;tt&amp;gt;module  rm &amp;lt;module&amp;gt;&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
==Using Modules in Scripts==&lt;br /&gt;
To use modules within a shell script or interpreted language you will need to load a file from &amp;lt;tt&amp;gt;/usr/share/Modules/init&amp;lt;/tt&amp;gt; into your program.&lt;br /&gt;
&lt;br /&gt;
===Bash===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
. /usr/share/Modules/init/bash&lt;br /&gt;
module add gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tcsh===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source /usr/share/Modules/init/tcsh&lt;br /&gt;
module add gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modules in Non-Interactive Shell Sessions==&lt;br /&gt;
In non-interactive shell sessions (non-login shells), the Modules configuration environment will not automatically load. This will also occur if the OS version of the compute node you are scheduled on is different from the OS version of the submission node you are submitting the job from.&lt;br /&gt;
&lt;br /&gt;
If you will need the use of Modules in non-interactive [[SLURM]] jobs, cross-OS jobs, or other similar sessions, you will need to include the following in your shell init scripts:&lt;br /&gt;
&lt;br /&gt;
===Bash===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
. /usr/share/Modules/init/bash&lt;br /&gt;
. /etc/profile.d/ummodules.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Tcsh===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source /usr/share/Modules/init/tcsh&lt;br /&gt;
source /etc/profile.d/ummodules.csh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Modules on RHEL9 Desktop Sessions==&lt;br /&gt;
Because of changes made in GNOME between RHEL8 and RHEL9, the &amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt; command will not work on desktop sessions out of the box. In order to use modules in a shell opened from a desktop session, you must source the modules init script. See [[#Modules in Non-Interactive Shell Sessions]] for the required commands. For convenience, we recommend adding this to the top of your shell init file (e.g ~/.bashrc, ~/.tcshrc), this way it gets sourced automatically with each new shell.&lt;br /&gt;
&lt;br /&gt;
Note that this issue does not affect RHEL9 SSH sessions, only sessions using the desktop GUI.&lt;br /&gt;
&lt;br /&gt;
==Additional Help==&lt;br /&gt;
You can type &amp;lt;tt&amp;gt;module&amp;lt;/tt&amp;gt; with no arguments for a full list of commands or &amp;lt;tt&amp;gt;man module&amp;lt;/tt&amp;gt; for further information.&lt;br /&gt;
&lt;br /&gt;
===Online Resources===&lt;br /&gt;
*[http://modules.sourceforge.net/ Project Page (SourceForge)]&lt;br /&gt;
*[http://modules.sourceforge.net/docs/Modules-Paper.pdf Introduction to Modules]&lt;br /&gt;
*[http://sourceforge.net/p/modules/wiki/FAQ/ Modules FAQ]&lt;br /&gt;
*[http://modules.sourceforge.net/docs/user-setup.pdf user-setup]&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=11798</id>
		<title>Nexus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=11798"/>
		<updated>2024-05-10T15:59:41Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Partitions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nexus is the combined scheduler of resources in UMIACS.  The resource manager for Nexus is [[SLURM]].  Resources are arranged into partitions where users are able to schedule computational jobs.  Users are arranged into a number of SLURM accounts based on faculty, lab, or center investments.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
All accounts in UMIACS are sponsored.  If you don&#039;t already have a UMIACS account, please see [[Accounts]] for information on getting one.  You need a full UMIACS account (not a [[Accounts/Collaborator | collaborator account]]) in order to access Nexus.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
Your access to submission nodes (alternatively called login nodes) for Nexus computational resources is determined by your account sponsor&#039;s department, center, or lab affiliation.  You can log into the [https://intranet.umiacs.umd.edu/directory/cr/ UMIACS Directory CR application] and select the Computational Resource (CR) in the list that has the prefix &amp;lt;code&amp;gt;nexus&amp;lt;/code&amp;gt;.  The Hosts section lists your available submission nodes - generally a pair of nodes of the format &amp;lt;tt&amp;gt;nexus&amp;lt;department, lab, or center abbreviation&amp;gt;[00,01]&amp;lt;/tt&amp;gt;, e.g., &amp;lt;tt&amp;gt;nexusgroup00&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nexusgroup01&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; - UMIACS requires multi-factor authentication through our [[Duo]] instance.  This is completely discrete from both UMD&#039;s and CSD&#039;s Duo instances.  You will need to enroll one or more devices to access resources in UMIACS, and will be prompted to enroll when you log into the Directory application for the first time.&lt;br /&gt;
&lt;br /&gt;
Once you have identified your submission nodes, you can [[SSH]] directly into them.  From there, you are able to submit to the cluster via our [[SLURM]] workload manager.  You need to make sure that your submitted jobs have the correct account, partition, and qos.&lt;br /&gt;
&lt;br /&gt;
== Jobs ==&lt;br /&gt;
[[SLURM]] jobs are [[SLURM/JobSubmission | submitted]] by either &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; depending if you are doing an interactive job or batch job, respectively.  You need to provide the where/how/who to run the job and specify the resources you need to run with.&lt;br /&gt;
&lt;br /&gt;
For the who/where/how, you may be required to specify &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; (respectively) to be able to adequately submit jobs to the Nexus.&lt;br /&gt;
&lt;br /&gt;
For resources, you may need to specify &amp;lt;code&amp;gt;--time&amp;lt;/code&amp;gt; for time, &amp;lt;code&amp;gt;--ntasks&amp;lt;/code&amp;gt; for CPUs, &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; for RAM, and &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt; for GPUs in your submission arguments to meet your requirements.  There are defaults for all four, so if you don&#039;t specify something, you may be scheduled with a very minimal set of time and resources (e.g., by default, NO GPUs are included if you do not specify &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt;).  For more information about submission flags for GPU resources, see [[SLURM/JobSubmission#Requesting_GPUs | here]].  You can also can run &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt; on your submission node for a complete list of available submission arguments.&lt;br /&gt;
&lt;br /&gt;
For a list of available GPU types on Nexus and their specs, please see [[Nexus/GPUs]].&lt;br /&gt;
&lt;br /&gt;
=== Interactive ===&lt;br /&gt;
Once logged into a submission node, you can run simple interactive jobs.  If your session is interrupted from the submission node, the job will be killed.  As such, we encourage use of a terminal multiplexer such as [[Tmux]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --ntasks=4 --mem=2gb --gres=gpu:1 nvidia-smi -L&lt;br /&gt;
GPU 0: NVIDIA RTX A4000 (UUID: GPU-ae5dc1f5-c266-5b9f-58d5-7976e62b3ca1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch ===&lt;br /&gt;
Batch jobs are scheduled with a script file with an optional ability to embed job scheduling parameters via variables that are defined by &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; lines at the top of the file.  You can find some examples in our [[SLURM/JobSubmission]] documentation.&lt;br /&gt;
&lt;br /&gt;
= Partitions = &lt;br /&gt;
The SLURM resource manager uses partitions to act as job queues which can restrict size, time and user limits.  The Nexus has a number of different partitions of resources.  Different Centers, Labs, and Faculty are able to invest in computational resources that are restricted to approved users through these partitions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by all non-[[ClassAccounts |class account]] users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/Tron]] - Pool of resources available to all UMIACS and CSD faculty and graduate students.&lt;br /&gt;
* Scavenger - [https://slurm.schedmd.com/preempt.html Preemption] partition that supports nodes from multiple other partitions.  More resources are available to schedule simultaneously than in other partitions, however jobs are subject to preemption rules.  You are responsible for ensuring your jobs handle this preemption correctly.  The SLURM scheduler will simply restart a preempted job with the same submission arguments when it is available to run again. For an overview of things you can check within scripts to determine if your job was preempted/resumed, see [[SLURM/Preemption]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by [[ClassAccounts]]:&#039;&#039;&#039;&lt;br /&gt;
* [[ClassAccounts | Class]] - Pool available for UMIACS class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by specific lab/center users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/CBCB]] - CBCB lab pool available for CBCB lab members.&lt;br /&gt;
* [[Nexus/CLIP]] - CLIP lab pool available for CLIP lab members.&lt;br /&gt;
* [[Nexus/CML]] - CML lab pool available for CML lab members.&lt;br /&gt;
* [[Nexus/GAMMA]] - GAMMA lab pool available for GAMMA lab members.&lt;br /&gt;
* [[Nexus/MBRC]] - MBRC lab pool available for MBRC lab members.&lt;br /&gt;
* [[Nexus/MC2]] - MC2 lab pool available for MC2 lab members.&lt;br /&gt;
* [[Nexus/Vulcan]] - Vulcan lab pool available for Vulcan lab members.&lt;br /&gt;
&lt;br /&gt;
= Quality of Service (QoS) =&lt;br /&gt;
SLURM uses Quality of Service (QoS) both to provide limits on job sizes (termed by us as &amp;quot;job QoS&amp;quot;) as well as to limit resources used by all jobs running in a partition, either per user or per group (termed by us as &amp;quot;partition QoS&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Job QoS ===&lt;br /&gt;
Job QoS are used to provide limits on the size of job that you can run. You should try to allocate only the resources your job actually needs, as resources that each of your jobs schedules are counted against your [[SLURM/Priority#Fair-share | fair-share priority]] in the future.&lt;br /&gt;
* default - Default job QoS. Limited to 4 CPU cores, 1 GPU, and 32GB RAM per job.  The maximum wall time per job is 3 days.&lt;br /&gt;
* medium - Limited to 8 CPU cores, 2 GPUs, and 64GB RAM per job.  The maximum wall time per job is 2 days.&lt;br /&gt;
* high - Limited to 16 CPU cores, 4 GPUs, and 128GB RAM per job.  The maximum wall time per job is 1 day.&lt;br /&gt;
* scavenger - No resource limits per job, only a maximum wall time per job of 3 days.  You are responsible for ensuring your job requests multiple nodes if it requests resources beyond what any one node is capable of.  576 total CPU cores, 72 total GPUs, and 2304GB total RAM are permitted simultaneously across all of your jobs running with this job QoS.  This job QoS is both only available in the scavenger partition and the only job QoS available in the scavenger partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt; in your submission arguments.  Do not include any job QoS argument other than &amp;lt;code&amp;gt;--qos=scavenger&amp;lt;/code&amp;gt; (optional) or submission will fail.&lt;br /&gt;
&lt;br /&gt;
You can display these job QoS from the command line using the &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt; command.  By default, the command will only show job QoS that you can access.  The above four job QoS are the ones that everyone can access.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                                                        &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00                                           cpu=576,gres/gpu=72,mem=2304G &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all job QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos --all&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             cml-cpu  7-00:00:00                                        8                                &lt;br /&gt;
         cml-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
            cml-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                &lt;br /&gt;
       cml-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8 &lt;br /&gt;
          cml-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
       cml-scavenger  3-00:00:00                                                             gres/gpu=24 &lt;br /&gt;
       cml-very_high  1-12:00:00     cpu=32,gres/gpu=8,mem=256G         8                    gres/gpu=12 &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                          &lt;br /&gt;
             highmem 21-00:00:00                  cpu=32,mem=2T                                          &lt;br /&gt;
           huge-long 10-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00                                           cpu=576,gres/gpu=72,mem=2304G &lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4                                &lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2                                &lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                &lt;br /&gt;
        vulcan-janus  3-00:00:00    cpu=32,gres/gpu=10,mem=256G                                          &lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48 &lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To find out what accounts and partitions you have access to, first use the &amp;lt;code&amp;gt;show_assoc&amp;lt;/code&amp;gt; command to show your account/job QoS combinations. Then, use the &amp;lt;code&amp;gt;scontrol show partition&amp;lt;/code&amp;gt; command and note the &amp;lt;tt&amp;gt;AllowAccounts&amp;lt;/tt&amp;gt; entry for each listed partition. You are able to submit to any partition that allows an account that you have. If you need to use an account other than the default account &amp;lt;tt&amp;gt;nexus&amp;lt;/tt&amp;gt;, you will need to specify it via the &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt; submission argument.&lt;br /&gt;
&lt;br /&gt;
=== Partition QoS ===&lt;br /&gt;
Partition QoS are used to limit resources used by all jobs running in a partition, either per user (MaxTRESPU) or per group (GrpTRES).&lt;br /&gt;
&lt;br /&gt;
To view partition QoS, use the &amp;lt;code&amp;gt;show_partition_qos&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
           scavenger         500  cpu=576,gres/gpu=72,mem=2304G                      &lt;br /&gt;
                tron         500     cpu=32,gres/gpu=4,mem=256G                                                          &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all partition QoS, including those that you do not have access to, you can use the &amp;lt;code&amp;gt;show_partition_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_partition_qos --all&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
                cbcb         500                                 cpu=1004,mem=47840G &lt;br /&gt;
               class         500     cpu=32,gres/gpu=4,mem=256G                      &lt;br /&gt;
                clip         500                                   cpu=564,mem=5647G &lt;br /&gt;
                 cml         500                                 cpu=1128,mem=11381G &lt;br /&gt;
       cml-scavenger         500                    gres/gpu=24                      &lt;br /&gt;
               gamma         500                                   cpu=520,mem=4517G &lt;br /&gt;
                mbrc         500                                   cpu=240,mem=2378G &lt;br /&gt;
                 mc2         500                                   cpu=312,mem=3133G &lt;br /&gt;
           scavenger         500  cpu=576,gres/gpu=72,mem=2304G                      &lt;br /&gt;
                tron         500     cpu=32,gres/gpu=4,mem=256G                      &lt;br /&gt;
              vulcan         500                                 cpu=1760,mem=15824G &lt;br /&gt;
    vulcan-scavenger         500       &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: These QoS cannot be used directly when submitting jobs, with the exception of scavenger QoS (i.e. they are not in the AllowQos field for their respective partition). Partition QoS limits apply to all jobs running on a given partition, even when using multiple job QoS.&lt;br /&gt;
&lt;br /&gt;
For example, in the default non-preemption partition (&amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt;), you are restricted to 32 total CPU cores, 4 total GPUs, and 256GB total RAM at once across all jobs you have running in the partition. You also can only have a maximum of 500 submitted (running (R) or pending (PD)) jobs in the partition simultaneously. The latter restriction is to prevent excess pending jobs causing [https://slurm.schedmd.com/sched_config.html#backfill backfill] issues with the SLURM scheduler.&lt;br /&gt;
* If you need to submit more than 500 jobs in batch at once, you can develop and run an &amp;quot;outer submission script&amp;quot; that repeatedly attempts to run the &amp;quot;inner submission script&amp;quot; (your original submission script) to submit jobs in the batch periodically, until all job submissions are successful. The outer submission script should use looping logic to check if you are at the max job limit and should then retry submission after waiting for some time interval.&lt;br /&gt;
: An example outer submission script is as follows. In this example, &amp;lt;code&amp;gt;example_inner.sh&amp;lt;/code&amp;gt; is your inner submission script and you want to run 1000 jobs. In this example, the inner submission script is not an [[SLURM/ArrayJobs | array job]]. If your inner submission script is an array job, adjust the number of jobs accordingly. Keep in mind that array jobs must be of size 500 or fewer.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
numjobs=1000&lt;br /&gt;
i=0&lt;br /&gt;
while [ $i -lt $numjobs ]&lt;br /&gt;
do&lt;br /&gt;
  while [[ &amp;quot;$(sbatch example_inner.sh 2&amp;gt;&amp;amp;1)&amp;quot; =~ &amp;quot;QOSMaxSubmitJobPerUserLimit&amp;quot; ]]&lt;br /&gt;
  do&lt;br /&gt;
    echo &amp;quot;Currently at maximum job submissions allowed.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Waiting for 5 minutes before trying to submit more jobs.&amp;quot;&lt;br /&gt;
    sleep 300&lt;br /&gt;
  done&lt;br /&gt;
  i=$(( $i + 1 ))&lt;br /&gt;
  echo &amp;quot;Submitted job $i of $numjobs&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is suggested that you run the outer submission script in a [[Tmux]] session to keep the terminal window executing it from being interrupted.&lt;br /&gt;
&lt;br /&gt;
Lab/group-specific partitions may also have partition QoS intended to limit the total number of resources consumed by all users in that lab/group that are using the partition (codified by &amp;lt;tt&amp;gt;GrpTRES&amp;lt;/tt&amp;gt; in the output above for the partition QoS name that matches the lab/group partition name). They also have the 500 submitted job maximum. Note that the values listed above in various &amp;quot;TRES&amp;quot; columns are not fixed and may fluctuate as more resources are added to or removed from various partitions.&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
All network storage available in Nexus is currently [[NFS]] based, and comes in a few different flavors. Compute nodes also have local storage that can be used.&lt;br /&gt;
&lt;br /&gt;
== Home Directories ==&lt;br /&gt;
{{Nfshomes}}&lt;br /&gt;
&lt;br /&gt;
== Scratch Directories ==&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Nexus compute infrastructure:&lt;br /&gt;
* Network scratch directories&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
Please note that [[ClassAccounts | class accounts]] do not have network scratch directories.&lt;br /&gt;
&lt;br /&gt;
=== Network Scratch Directories ===&lt;br /&gt;
You are allocated 200GB of scratch space via NFS from &amp;lt;code&amp;gt;/fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt; where &amp;lt;USERNAME&amp;gt; is your UMIACS username.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;automounted&#039;&#039;&#039; so you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access this.&lt;br /&gt;
&lt;br /&gt;
You can view your quota usage by running &amp;lt;code&amp;gt;df -h /fs/nexus-scratch/&amp;lt;USERNAME&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 400GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 400GB, you will need faculty approval and/or a [[#Project_Allocations | project allocation]] for this. If you choose to increase your scratch space beyond 400GB, the increased space is also subject to the 270 TB days limit mentioned in the project allocation section before we check back in for renewal. For example, if you request 1.4TB total space, you may have this for 270 days (1TB beyond the 400GB permanent increase).&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
=== Local Scratch Directories ===&lt;br /&gt;
Each computational node that you can schedule compute jobs on also has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc. and &#039;&#039;&#039;are not backed up or protected in any way.&#039;&#039;&#039;  These directories are almost always more performant than any other storage available to the job as they are mounted from disks directly attached to the compute node.  However, you must stage your data within the confines of your job and extract the relevant resultant data elsewhere before the end of your job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month during our [[MonthlyMaintenanceWindow | monthly maintenance windows]].  Please make sure you secure any resultant data you wish to keep from these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
== Faculty Allocations ==&lt;br /&gt;
Each faculty member can be allocated 1TB of permanent lab space upon request.  We can also support grouping these individual allocations together into larger center, lab, or research group allocations if desired by the faculty.  Please [[HelpDesk | contact staff]] to inquire.&lt;br /&gt;
&lt;br /&gt;
Lab space storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
== Project Allocations ==&lt;br /&gt;
Project allocations are available per user for 270 TB days; you can have a 1TB allocation for up to 270 days, a 3TB allocation for 90 days, etc..  A single faculty member can not have more than 20TB of sponsored account project allocations active at any point.&lt;br /&gt;
&lt;br /&gt;
Project storage is fully protected.  It has [[Snapshots | snapshots]] enabled and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
The maximum allocation length you can request is 540 days (500GB space) and the maximum storage space you can request is 9TB (30 day length).&lt;br /&gt;
&lt;br /&gt;
To request an allocation, please [[HelpDesk | contact staff]] with the faculty member(s) that the project is under involved in the conversation.  Please include the following details:&lt;br /&gt;
* Project Name (short)&lt;br /&gt;
* Description&lt;br /&gt;
* Size (1TB, 2TB, etc.)&lt;br /&gt;
* Length in days (270 days, 135 days, etc.)&lt;br /&gt;
* Other user(s) that need to access the allocation, if any&lt;br /&gt;
&lt;br /&gt;
These allocations are available via &amp;lt;code&amp;gt;/fs/nexus-projects/&amp;lt;project name&amp;gt;&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;Renewal is not guaranteed to be available due to limits on the amount of total storage.&#039;&#039;&#039;  Near the end of the allocation period, staff will contact you and ask if you are still in need of the storage allocation.  If renewal is available, you can renew for up to another 270 TB days with reapproval from the original faculty approver.&lt;br /&gt;
* If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.&lt;br /&gt;
* If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible.&lt;br /&gt;
** If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible.&lt;br /&gt;
** If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
== Datasets ==&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/nexus-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The list of Nexus datasets we currently host can be viewed [https://info.umiacs.umd.edu/datasets/list/?q=Nexus here].&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM&amp;diff=11794</id>
		<title>SLURM</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM&amp;diff=11794"/>
		<updated>2024-05-10T15:56:56Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Simple Linux Utility for Resource Management (SLURM)=&lt;br /&gt;
SLURM is an open-source workload manager designed for Linux clusters of all sizes. It provides three key functions. First, it allocates exclusive or non-exclusive access to resources (computer nodes) to users for some duration of time so they can perform work. Second, it provides a framework for starting, executing, and monitoring work (typically a parallel job) on a set of allocated nodes. Finally, it arbitrates contention for resources by managing a queue of pending work.&lt;br /&gt;
&lt;br /&gt;
==Documentation==&lt;br /&gt;
:[[SLURM/JobSubmission | Submitting Jobs]]&lt;br /&gt;
:[[SLURM/JobStatus | Checking Job Status]]&lt;br /&gt;
:[[SLURM/ClusterStatus | Checking Cluster Status]]&lt;br /&gt;
:[[SLURM/Priority | Understanding Job Priority]]&lt;br /&gt;
:[[SLURM/Preemption | Job Preemption Overview]]&lt;br /&gt;
:[http://slurm.schedmd.com/documentation.html Official Documentation]&lt;br /&gt;
:[http://slurm.schedmd.com/faq.html FAQ]&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
Below are some of the common commands used in SLURM. Further information on how to use these commands is found in the documentation linked above. To see all flags available for a command, please check the command&#039;s manual by using &amp;lt;code&amp;gt;man &amp;lt;COMMAND&amp;gt;&amp;lt;/code&amp;gt; on the command line.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/srun.html srun]====&lt;br /&gt;
srun runs a parallel job on a cluster managed by SLURM.  If necessary, it will first create a resource allocation in which to run the parallel job.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/salloc.html salloc]====&lt;br /&gt;
salloc allocates a SLURM job allocation, which is a set of resources (nodes), possibly with some set of constraints (e.g. number of processors per node).  When salloc successfully obtains the requested allocation, it then runs the command specified by the user.  Finally, when the user specified command is complete, salloc relinquishes the job allocation.  If no command is specified, salloc runs the user&#039;s default shell.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/sbatch.html sbatch]====&lt;br /&gt;
sbatch submits a batch script to SLURM.  The batch script may be given to sbatch through a file name on the command line, or if no file name is specified, sbatch will read in a script from standard input.  The batch script may contain options preceded with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; before any executable commands in the script.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/squeue.html squeue]====&lt;br /&gt;
squeue views job and job step information for jobs managed by SLURM.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/scancel.html scancel]====&lt;br /&gt;
scancel signals or cancels jobs, job arrays, or job steps.  An arbitrary number of jobs or job steps may be signaled using job specification filters or a space separated list of specific job and/or job step IDs.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/sacct.html sacct]====&lt;br /&gt;
sacct displays job accounting data stored in the job accounting log file or SLURM database in a variety of forms for your analysis.  The sacct command displays information on jobs, job steps, status, and exitcodes by default.  You can tailor the output with the use of the &amp;lt;code&amp;gt;--format=&amp;lt;/code&amp;gt; option to specify the fields to be shown.&lt;br /&gt;
&lt;br /&gt;
====[https://slurm.schedmd.com/sstat.html sstat]====&lt;br /&gt;
sstat displays job status information for your analysis.  The sstat command displays information pertaining to CPU, Task, Node, Resident Set Size (RSS) and Virtual Memory (VM).  You can tailor the output with the use of the &amp;lt;code&amp;gt;--fields=&amp;lt;/code&amp;gt; option to specify the fields to be shown.&lt;br /&gt;
&lt;br /&gt;
==Modules==&lt;br /&gt;
If you are trying to use [[Modules | GNU Modules]] in a Slurm job, please read the section of our [[Modules]] documentation on [[Modules#Modules_in_Non-Interactive_Shell_Sessions | non-interactive shell sessions]].  This also needs to be done if the OS version of the compute node you are scheduled on is different from the OS version of the submission node you are submitting the job from.&lt;br /&gt;
&lt;br /&gt;
==Running Jupyter Notebook on a Compute Node==&lt;br /&gt;
The steps to run a Jupyter Notebook from a compute node are listed below.&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;h6&amp;gt;Setting up your Python Virtual Environment&amp;lt;/h6&amp;gt;&lt;br /&gt;
[[PythonVirtualEnv | Create a Python virtual environment]] on the compute node you are assigned and [[PythonVirtualEnv#Activating_the_VirtualEnv | activate it]]. Next, install Jupyter using pip by following the steps [https://jupyter.readthedocs.io/en/latest/install/notebook-classic.html#alternative-for-experienced-python-users-installing-jupyter-with-pip here]. You may also use other environment management systems such as [https://docs.conda.io/en/latest/ Conda] if desired.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h6&amp;gt;Running Jupyter Notebook&amp;lt;/h6&amp;gt;&lt;br /&gt;
After you&#039;ve set up the Python virtual environment, submit a job, activate the environment within the job, and run the following command on the compute node you are assigned:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jupyter notebook --no-browser --port=8889 --ip=0.0.0.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will start running the notebook on port 8889. &amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; You must keep this shell window open to be able to connect. If the submission node for the cluster you are using is not accessible via the public internet, you must also be on a machine connected to the UMIACS network or connected to our [[Network/VPN | VPN]] in order to access the Jupyter notebook once you start the SSH tunnel, so ensure this is the case before starting the tunnel. Then, on your local machine, run&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -N -f -L localhost:8888:&amp;lt;NODENAME&amp;gt;:8889 &amp;lt;USERNAME&amp;gt;@&amp;lt;SUBMISSIONNODE&amp;gt;.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will tunnel port 8889 from the compute node to port 8888 on your local machine, using &amp;lt;SUBMISSIONNODE&amp;gt; as an intermediate node. Make sure to replace &amp;lt;USERNAME&amp;gt; with your username, &amp;lt;SUBMISSIONNODE&amp;gt; with the name of the submission node you want to use, and &amp;lt;NODENAME&amp;gt; with the name of the compute node you are assigned. Note that this command will not display any output if the connection is successful due to the included ssh flags. You must also keep this shell window open to be able to connect.&lt;br /&gt;
&lt;br /&gt;
For example, assuming your username is &amp;lt;code&amp;gt;username&amp;lt;/code&amp;gt; and that you are using the [[Nexus]] cluster, have been [[Nexus#Access | assigned]] the nexusgroup submission nodes, and are assigned compute node tron00.umiacs.umd.edu:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -N -f -L localhost:8888:tron00.umiacs.umd.edu:8889 username@nexusgroup.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then open a web browser and type in &amp;lt;code&amp;gt;localhost:8888&amp;lt;/code&amp;gt; to access the notebook.&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
* Later versions of Jupyter have token authentication enabled by default - you will need to prepend the &amp;lt;code&amp;gt;/?token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&amp;lt;/code&amp;gt; part of the URL provided by the terminal output after starting the notebook in order to connect if this is the case. e.g. &amp;lt;code&amp;gt;localhost:8888/?token=fcc6bd0f996e7aa89376c33cb34f7b80890502aacc97d98e&amp;lt;/code&amp;gt;&lt;br /&gt;
* If the port on the compute node mentioned in the example above (8889) is not working, it may be that someone else has already started a process (Jupyter notebook or otherwise) using that specific port number on that specific compute node. The port number can be replaced with any other [https://en.wikipedia.org/wiki/Ephemeral_port ephemeral port] number you&#039;d like, just make sure to change it in both the command you run on the compute node and the ssh command from your local machine.&lt;br /&gt;
&lt;br /&gt;
=Quick Guide to translate PBS/Torque to SLURM=&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+User commands&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!PBS/Torque&lt;br /&gt;
!SLURM&lt;br /&gt;
|-&lt;br /&gt;
!Job submission&lt;br /&gt;
|qsub [filename]&lt;br /&gt;
|sbatch [filename]&lt;br /&gt;
|-&lt;br /&gt;
!Job deletion&lt;br /&gt;
|qdel [job_id]&lt;br /&gt;
|scancel [job_id]&lt;br /&gt;
|-&lt;br /&gt;
!Job status (by job)&lt;br /&gt;
|qstat [job_id] &lt;br /&gt;
|squeue --job [job_id]&lt;br /&gt;
|-&lt;br /&gt;
!Full job status (by job)&lt;br /&gt;
|qstat -f [job_id]&lt;br /&gt;
|scontrol show job [job_id]&lt;br /&gt;
|-&lt;br /&gt;
!Job status (by user)&lt;br /&gt;
|qstat -u [username]&lt;br /&gt;
|squeue --user=[username]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Environment variables&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!PBS/Torque  &lt;br /&gt;
!SLURM&lt;br /&gt;
|-&lt;br /&gt;
!Job ID&lt;br /&gt;
|$PBS_JOBID&lt;br /&gt;
|$SLURM_JOBID&lt;br /&gt;
|-&lt;br /&gt;
!Submit Directory&lt;br /&gt;
|$PBS_O_WORKDIR&lt;br /&gt;
|$SLURM_SUBMIT_DIR&lt;br /&gt;
|-&lt;br /&gt;
!Node List &lt;br /&gt;
|$PBS_NODEFILE&lt;br /&gt;
|$SLURM_JOB_NODELIST&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Job specification&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!PBS/Torque  &lt;br /&gt;
!SLURM&lt;br /&gt;
|-&lt;br /&gt;
!Script directive&lt;br /&gt;
|#PBS&lt;br /&gt;
|#SBATCH&lt;br /&gt;
|-&lt;br /&gt;
!Job Name &lt;br /&gt;
| -N [name]&lt;br /&gt;
| --job-name=[name] OR -J [name]&lt;br /&gt;
|-&lt;br /&gt;
!Node Count&lt;br /&gt;
| -l nodes=[count]&lt;br /&gt;
| --nodes=[min[-max]] OR -N [min[-max]]&lt;br /&gt;
|-&lt;br /&gt;
!CPU Count&lt;br /&gt;
| -l ppn=[count]&lt;br /&gt;
| --ntasks-per-node=[count]&lt;br /&gt;
|-&lt;br /&gt;
!CPUs Per Task&lt;br /&gt;
|&lt;br /&gt;
| --cpus-per-task=[count]&lt;br /&gt;
|-&lt;br /&gt;
!Memory Size&lt;br /&gt;
| -l mem=[MB] &lt;br /&gt;
| --mem=[MB] OR --mem-per-cpu=[MB]&lt;br /&gt;
|-&lt;br /&gt;
!Wall Clock Limit&lt;br /&gt;
| -l walltime=[hh:mm:ss]&lt;br /&gt;
| --time=[min] OR --time=[days-hh:mm:ss]&lt;br /&gt;
|-&lt;br /&gt;
!Node Properties&lt;br /&gt;
| -l nodes=4:ppn=8:[property]&lt;br /&gt;
| --constraint=[list]&lt;br /&gt;
|-&lt;br /&gt;
!Standard Output File&lt;br /&gt;
| -o [file_name]&lt;br /&gt;
| --output=[file_name] OR -o [file_name]&lt;br /&gt;
|-&lt;br /&gt;
!Standard Error File&lt;br /&gt;
| -e [file_name]&lt;br /&gt;
| --error=[file_name] OR -e [file_name]&lt;br /&gt;
|-&lt;br /&gt;
!Combine stdout/stderr&lt;br /&gt;
| -j oe (both to stdout)&lt;br /&gt;
|(Default if you don&#039;t specify --error)&lt;br /&gt;
|-&lt;br /&gt;
!Job Arrays&lt;br /&gt;
| -t [array_spec]&lt;br /&gt;
| --array=[array_spec] OR -a [array_spec]&lt;br /&gt;
|-&lt;br /&gt;
!Delay Job Start&lt;br /&gt;
| -a [time]&lt;br /&gt;
| --begin=[time]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/Preemption&amp;diff=11792</id>
		<title>SLURM/Preemption</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/Preemption&amp;diff=11792"/>
		<updated>2024-05-10T15:54:15Z</updated>

		<summary type="html">&lt;p&gt;Seide: Created page with &amp;quot;If you are submitting to a partition which is eligible for preemption (e.g. scavenger), you are responsible for making sure that your job can be interrupted/restarted gracefully. Here we are documenting some Slurm behaviors that you can use to determine if your job has been cancelled or preempted. You should be able to take different code paths during startup/shutdown of your jobs based on this information.  =Flowchart for job cancellation/preemption=  ==Cancellation==...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If you are submitting to a partition which is eligible for preemption (e.g. scavenger), you are responsible for making sure that your job can be interrupted/restarted gracefully. Here we are documenting some Slurm behaviors that you can use to determine if your job has been cancelled or preempted. You should be able to take different code paths during startup/shutdown of your jobs based on this information.&lt;br /&gt;
&lt;br /&gt;
=Flowchart for job cancellation/preemption=&lt;br /&gt;
&lt;br /&gt;
==Cancellation==&lt;br /&gt;
&lt;br /&gt;
# Slurm controller sends an internal cancel signal to Slurm node(s) where the job is currently assigned.&lt;br /&gt;
# Slurm node(s) send SIGCONT and SIGTERM around the same time, and the following fields of note are set in the output of &amp;lt;tt&amp;gt;scontrol --json show job $SLURM_JOBID&amp;lt;/tt&amp;gt;:&lt;br /&gt;
#* &amp;lt;tt&amp;gt;job_state = [&#039;CANCELLED&#039;, &#039;COMPLETING&#039;]&amp;lt;/tt&amp;gt;&lt;br /&gt;
# If the processes don&#039;t stop within a certain amount of time, eventually SIGKILL will be sent.&lt;br /&gt;
&lt;br /&gt;
==Preemption/Requeue==&lt;br /&gt;
&lt;br /&gt;
# Slurm controller sends an internal preemption/requeue signal to Slurm node(s) where the job is currently assigned.&lt;br /&gt;
# Slurm node(s) send SIGCONT and SIGTERM around the same time, and the following fields of note are set in the output of &amp;lt;tt&amp;gt;scontrol --json show job $SLURM_JOBID&amp;lt;/tt&amp;gt;:&lt;br /&gt;
#* &amp;lt;tt&amp;gt;job_state = [&#039;PENDING&#039;, &#039;COMPLETING&#039;]&amp;lt;/tt&amp;gt;&lt;br /&gt;
#* &amp;lt;tt&amp;gt;restart_cnt += 1&amp;lt;/tt&amp;gt;&lt;br /&gt;
# If the processes don&#039;t stop within a certain amount of time, eventually SIGKILL will be sent.&lt;br /&gt;
# Once the job is stopped, it enters the PENDING state for two minutes, and then is eligible to be run again.&lt;br /&gt;
# When the job runs again, an additional environment variable will be defined, &amp;lt;tt&amp;gt;SLURM_RESTART_COUNT&amp;lt;/tt&amp;gt;, which reports the number of times the job has been preempted/requeued.&lt;br /&gt;
&lt;br /&gt;
=Key takeaways=&lt;br /&gt;
&lt;br /&gt;
==On job cancellation/preemption==&lt;br /&gt;
&lt;br /&gt;
You can handle the SIGTERM signal and run &amp;lt;tt&amp;gt;scontrol --json show job $SLURM_JOBID&amp;lt;/tt&amp;gt; within your script. Based on the value of &amp;lt;tt&amp;gt;job_state&amp;lt;/tt&amp;gt;, your script can take a different codepath depending on if it was cancelled or was preempted.&lt;br /&gt;
&lt;br /&gt;
The output of &amp;lt;tt&amp;gt;scontrol --json show job $SLURM_JOBID&amp;lt;/tt&amp;gt; is equivalent to the Slurm REST API&#039;s endpoint &amp;quot;GET /slurm/v0.0.40/job/{job_id}&amp;quot;. For more information on how to parse the output of this scontrol command, please refer to Slurm&#039;s REST API documentation. [https://slurm.schedmd.com/rest_api.html#slurmV0040GetJob]&lt;br /&gt;
&lt;br /&gt;
==On resuming==&lt;br /&gt;
&lt;br /&gt;
If your job needs to behave differently based on whether or not it was previously preempted, you can check if the environment variable &amp;lt;tt&amp;gt;SLURM_RESTART_COUNT&amp;lt;/tt&amp;gt; is defined.&lt;br /&gt;
&lt;br /&gt;
=Testing=&lt;br /&gt;
&lt;br /&gt;
You can use the following commands to manually cancel and requeue your jobs (requeueing and preemption are handled similarly). With these tools, you can test your scripts to ensure that they gracefully handle these scenarios.&lt;br /&gt;
&lt;br /&gt;
Cancellation: &amp;lt;tt&amp;gt;scancel &amp;lt;job id&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preemption: &amp;lt;tt&amp;gt;scontrol requeue &amp;lt;job id&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Podman&amp;diff=11774</id>
		<title>Podman</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Podman&amp;diff=11774"/>
		<updated>2024-05-03T19:40:13Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://podman.io/ Podman] is a daemonless container engine alternative to [https://www.docker.com/ Docker].  We don&#039;t support Docker in many of our environments as it grants trivial administrative control over the host the Docker daemon runs on.  Podman on the other hand has the ability to run containers in user namespaces.  This means that for every user name space in the kernel you create the processes within it will map to a new uid/gid range.  For example, if you are root in your container, you will not be uid 0 outside the container, but instead you will be uid 4294000000.&lt;br /&gt;
&lt;br /&gt;
We still believe that [[Apptainer]] is the best option for running containerized workloads on our clustered based resources.  Podman is a good option for developing the containers to be run via Apptainer or building a deliverable for a funding agency.  Please [[HelpDesk | contact staff]] if you would like Podman installed on a workstation or standalone server.  More information on Podman running [https://github.com/containers/podman/blob/main/docs/tutorials/rootless_tutorial.md rootless].&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
To get started there are a few things that you need to configure.&lt;br /&gt;
&lt;br /&gt;
First, run the &amp;lt;code&amp;gt;podman&amp;lt;/code&amp;gt; command.  If it says command not found or you get an ERRO like the one below about no subuid ranges, and you are on a workstation or standalone (non-cluster) server, please [[HelpDesk | contact staff]] with the error and the host that you are using.  We will need to do some steps to setup the host you want ready.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ podman&lt;br /&gt;
ERRO[0000] cannot find mappings for user username: No subuid ranges found for user &amp;quot;username&amp;quot; in /etc/subuid&lt;br /&gt;
Error: missing command &#039;podman COMMAND&#039;&lt;br /&gt;
Try &#039;podman --help&#039; for more information.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Storage ===&lt;br /&gt;
Containers are made up of layers for the image and these are stored in the graphroot setting of &amp;lt;code&amp;gt;~/.config/containers/storage.conf&amp;lt;/code&amp;gt; which by default will be in your home directory.  With our home directories being available over NFS there is an [https://www.redhat.com/sysadmin/rootless-podman-nfs issue] that due to the user name space mapping described above you will not be able to access your home directory when you are building the layers.&lt;br /&gt;
&lt;br /&gt;
You need to update the &amp;lt;code&amp;gt;graphroot&amp;lt;/code&amp;gt; setting to a local directory on the host.  The file &amp;lt;code&amp;gt;~/.config/containers/storage.conf&amp;lt;/code&amp;gt; may not exist until you run &amp;lt;code&amp;gt;podman&amp;lt;/code&amp;gt; the first time, however you can manually create it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[storage]&lt;br /&gt;
  driver = &amp;quot;vfs&amp;quot;&lt;br /&gt;
  runroot = &amp;quot;/tmp/run-2174&amp;quot;&lt;br /&gt;
  graphroot = &amp;quot;/scratch0/username/.local/share/containers/storage&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When building larger images, it may fill up the default directory for imageCopyTmpDir (/var/tmp). If this happens, you will need to specify a different directory using the environment variable TMPDIR. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;export TMPDIR=&amp;quot;/scratch0/example_tmp_directory&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GPUs ==&lt;br /&gt;
Running Podman with the local Nvidia GPUs requires some additional configuration steps that staff has to add to any individual workstation or standalone (non-cluster) server that runs Podman.  This includes ensuring the &amp;lt;tt&amp;gt;nvidia-container-runtime&amp;lt;/tt&amp;gt; package is installed.&lt;br /&gt;
&lt;br /&gt;
For example you can run &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt; from within the official Nvidia CUDA containers with a command like this, optionally replacing the tag for different CUDA versions/OS images:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ podman run --rm --hooks-dir=/usr/share/containers/oci/hooks.d docker.io/nvidia/cuda:12.2.2-base-ubi8 nvidia-smi&lt;br /&gt;
Thu Apr 16 18:47:04 2020&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                      |               MIG M. |&lt;br /&gt;
|=========================================+======================+======================|&lt;br /&gt;
|   0  NVIDIA RTX A6000               Off | 00000000:01:00.0 Off |                  Off |&lt;br /&gt;
| 30%   28C    P8               6W / 300W |      2MiB / 49140MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                            |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |&lt;br /&gt;
|        ID   ID                                                             Usage      |&lt;br /&gt;
|=======================================================================================|&lt;br /&gt;
|  No running processes found                                                           |&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full list of tags can be found at https://hub.docker.com/r/nvidia/cuda/tags.&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
To build your own image you can start from an example we have https://gitlab.umiacs.umd.edu/derek/gpudocker.&lt;br /&gt;
&lt;br /&gt;
First clone the repository, change directory and build the image with podman.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
git clone https://gitlab.umiacs.umd.edu/derek/gpudocker.git&lt;br /&gt;
cd gpudocker&lt;br /&gt;
podman build -t gpudocker .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can run the test script to verify.  Notice that we pass the local directory &amp;lt;code&amp;gt;test&amp;lt;/code&amp;gt; as a path into the image so we can run a script.  This can also be useful for your data output data as well as if you write anywhere else in the container it will not be available outside the container.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ podman run --volume `pwd`/test:/mnt --hooks-dir=/usr/share/containers/oci/hooks.d gpudocker python3 /mnt/test_torch.py&lt;br /&gt;
GPU found 0: GeForce GTX 1080 Ti&lt;br /&gt;
tensor([[0.3479, 0.6594, 0.5791],&lt;br /&gt;
        [0.6065, 0.3415, 0.9328],&lt;br /&gt;
        [0.9117, 0.3541, 0.9050],&lt;br /&gt;
        [0.6611, 0.5361, 0.3212],&lt;br /&gt;
        [0.8574, 0.5116, 0.7021]])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you instead want to push modifications to this example to your own container registry such that you can pull the container image down later, please see the README.md located in the example repository itself.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Tensorflow&amp;diff=11771</id>
		<title>Tensorflow</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Tensorflow&amp;diff=11771"/>
		<updated>2024-04-29T17:17:59Z</updated>

		<summary type="html">&lt;p&gt;Seide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://www.tensorflow.org/ Tensorflow] is a [[Python]] deep learning package from Google.  The easiest way to use install it is to build a [[PythonVirtualEnv | Python virtualenv]] with it in it.&lt;br /&gt;
&lt;br /&gt;
First load GPU modules to allow access to accelerated GPGPU training. You can find the list of Tensorflow versions and their corresponding Python/CUDA/cuDNN requirements here. [https://www.tensorflow.org/install/source#gpu] These modules are appropriate for tensorflow-2.16.1, which is the latest tensorflow release as of April 29, 2024.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;module add Python3/3.9.16 cuda/12.4.1 cudnn/v8.9.7&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next you will want to create a virtualenv and source into it. Note that depending on the version of Tensorflow you need, you may also need to load a module for a more recent version of Python3.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ python3 -m venv env&lt;br /&gt;
$ source env/bin/activate&lt;br /&gt;
(env) $&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then ensure you have a recent copy of pip in your virtualenv.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(env) $ pip install --upgrade pip&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then install the Tensorflow wheel through pip.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(env) $ pip install --upgrade tensorflow&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, start up a python shell (or install ipython through pip) and import Tensorflow.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(env)[username@hostname:/scratch0/username ] $ python&lt;br /&gt;
Python 3.9.16 (main, Feb 28 2023, 09:58:09) &lt;br /&gt;
[GCC 8.5.0 20210514 (Red Hat 8.5.0-16)] on linux&lt;br /&gt;
Type &amp;quot;help&amp;quot;, &amp;quot;copyright&amp;quot;, &amp;quot;credits&amp;quot; or &amp;quot;license&amp;quot; for more information.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; import tensorflow as tf&lt;br /&gt;
2024-04-29 13:14:09.685077: I tensorflow/core/util/port.cc:113] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.&lt;br /&gt;
2024-04-29 13:14:09.737280: I tensorflow/core/platform/cpu_feature_guard.cc:210] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.&lt;br /&gt;
To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.&lt;br /&gt;
2024-04-29 13:14:11.316744: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tf.__version__&lt;br /&gt;
&#039;2.16.1&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can then try a more rigorous test by running the following example. Note that you may need to export XLA_FLAGS in your shell: &amp;lt;code&amp;gt;export XLA_FLAGS=--xla_gpu_cuda_data_dir=/opt/common/cuda/cuda-x.x.x&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
import tensorflow as tf&lt;br /&gt;
mnist = tf.keras.datasets.mnist&lt;br /&gt;
&lt;br /&gt;
(x_train, y_train),(x_test, y_test) = mnist.load_data()&lt;br /&gt;
x_train, x_test = x_train / 255.0, x_test / 255.0&lt;br /&gt;
&lt;br /&gt;
model = tf.keras.models.Sequential([&lt;br /&gt;
  tf.keras.layers.Flatten(),&lt;br /&gt;
  tf.keras.layers.Dense(512, activation=tf.nn.relu),&lt;br /&gt;
  tf.keras.layers.Dropout(0.2),&lt;br /&gt;
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)&lt;br /&gt;
])&lt;br /&gt;
model.compile(optimizer=&#039;adam&#039;,&lt;br /&gt;
              loss=&#039;sparse_categorical_crossentropy&#039;,&lt;br /&gt;
              metrics=[&#039;accuracy&#039;])&lt;br /&gt;
&lt;br /&gt;
model.fit(x_train, y_train, epochs=5)&lt;br /&gt;
model.evaluate(x_test, y_test)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;To use this install after you close the shell you did this install in, you will need to both add the correct [[CUDA]]/cuDNN modules, export the XLA_FLAGS variable (if needed), and activate the virtualenv by the source command.  This includes any time you are submitting to [[SLURM]].&amp;lt;/b&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/GPUs&amp;diff=11750</id>
		<title>Nexus/GPUs</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/GPUs&amp;diff=11750"/>
		<updated>2024-04-23T16:36:47Z</updated>

		<summary type="html">&lt;p&gt;Seide: h100&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are several different types of [https://www.nvidia.com/en-us/ NVIDIA] GPUs in the [[Nexus]] cluster that are available to be scheduled. They are listed below in order of newest to oldest architecture, and then alphabetically.&lt;br /&gt;
&lt;br /&gt;
We do not list the exact quantities of GPU here since they change frequently due to additions to or removals from the cluster or during compute node troubleshooting. To see which compute nodes have which GPUs and in what quantities, use the &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; command on a submission or compute node. The quantities are listed under the &amp;lt;tt&amp;gt;GRES&amp;lt;/tt&amp;gt; column.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! GRES string (Slurm)&lt;br /&gt;
! [https://www.nvidia.com/en-us/technologies Architecture]&lt;br /&gt;
! [https://developer.nvidia.com/cuda-toolkit CUDA] Cores&lt;br /&gt;
! GPU Memory&lt;br /&gt;
! Memory Bandwidth&lt;br /&gt;
! FP32 Performance (TFLOPS)&lt;br /&gt;
! [https://developer.nvidia.com/blog/accelerating-ai-training-with-tf32-tensor-cores/ TF32] Performance ([https://developer.nvidia.com/blog/accelerating-inference-with-sparsity-using-ampere-and-tensorrt Dense / Sparse TOPS])&lt;br /&gt;
|-&lt;br /&gt;
| RTX 6000 Ada Generation&lt;br /&gt;
| &amp;lt;code&amp;gt;rtx6000ada&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ada Lovelace&lt;br /&gt;
| 18176&lt;br /&gt;
| 48GB GDDR6&lt;br /&gt;
| 960GB/s&lt;br /&gt;
| 91.1&lt;br /&gt;
| 182.1/364.2&lt;br /&gt;
|-&lt;br /&gt;
| H100 SXM5 80GB&lt;br /&gt;
| &amp;lt;code&amp;gt;h100&amp;lt;/code&amp;gt;&lt;br /&gt;
| Hopper&lt;br /&gt;
| 16896&lt;br /&gt;
| 80GB HBM3&lt;br /&gt;
| 3.36TB/s&lt;br /&gt;
| 66.91&lt;br /&gt;
| not officially published/989&lt;br /&gt;
|-&lt;br /&gt;
| A100 (80GB)&lt;br /&gt;
| &amp;lt;code&amp;gt;a100&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ampere&lt;br /&gt;
| 6912&lt;br /&gt;
| 80GB HBM2e&lt;br /&gt;
| 1935GB/s&lt;br /&gt;
| 19.5&lt;br /&gt;
| 156/312&lt;br /&gt;
|-&lt;br /&gt;
| GeForce RTX 3070&lt;br /&gt;
| &amp;lt;code&amp;gt;rtx3070&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ampere&lt;br /&gt;
| 5888&lt;br /&gt;
| 8GB GDDR6&lt;br /&gt;
| 448GB/s&lt;br /&gt;
| 20.3&lt;br /&gt;
| 20.3/40.6&lt;br /&gt;
|-&lt;br /&gt;
| GeForce RTX 3090&lt;br /&gt;
| &amp;lt;code&amp;gt;rtx3090&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ampere&lt;br /&gt;
| 10496&lt;br /&gt;
| 24GB GDDR6X&lt;br /&gt;
| 936GB/s&lt;br /&gt;
| 35.6&lt;br /&gt;
| 35.6/71&lt;br /&gt;
|-&lt;br /&gt;
| RTX A4000&lt;br /&gt;
| &amp;lt;code&amp;gt;rtxa4000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ampere&lt;br /&gt;
| 6144&lt;br /&gt;
| 16GB GDDR6&lt;br /&gt;
| 448GB/s&lt;br /&gt;
| 19.2&lt;br /&gt;
| not officially published&lt;br /&gt;
|-&lt;br /&gt;
| RTX A5000&lt;br /&gt;
| &amp;lt;code&amp;gt;rtxa5000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ampere&lt;br /&gt;
| 8192&lt;br /&gt;
| 24GB GDDR6&lt;br /&gt;
| 768GB/s&lt;br /&gt;
| 27.8&lt;br /&gt;
| not officially published&lt;br /&gt;
|-&lt;br /&gt;
| RTX A6000&lt;br /&gt;
| &amp;lt;code&amp;gt;rtxa6000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Ampere&lt;br /&gt;
| 10752&lt;br /&gt;
| 48GB GDDR6&lt;br /&gt;
| 768GB/s&lt;br /&gt;
| 38.7&lt;br /&gt;
| 77.4/154.8&lt;br /&gt;
|-&lt;br /&gt;
| GeForce RTX 2080 Ti&lt;br /&gt;
| &amp;lt;code&amp;gt;rtx2080ti&amp;lt;/code&amp;gt;&lt;br /&gt;
| Turing&lt;br /&gt;
| 4352&lt;br /&gt;
| 11GB GDDR5X&lt;br /&gt;
| 616GB/s&lt;br /&gt;
| 13.4&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| GeForce GTX 1080 Ti&lt;br /&gt;
| &amp;lt;code&amp;gt;gtx1080ti&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3584&lt;br /&gt;
| 11GB GDDR5X&lt;br /&gt;
| 484GB/s&lt;br /&gt;
| 11.3&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| Quadro P6000&lt;br /&gt;
| &amp;lt;code&amp;gt;p6000&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3840&lt;br /&gt;
| 24GB GDDR5X&lt;br /&gt;
| 432GB/s&lt;br /&gt;
| 12.6&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| Tesla P100&lt;br /&gt;
| &amp;lt;code&amp;gt;p100&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3584&lt;br /&gt;
| 16GB CoWoS HBM2&lt;br /&gt;
| 732GB/s&lt;br /&gt;
| 9.3&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| TITAN X (Pascal)&lt;br /&gt;
| &amp;lt;code&amp;gt;titanxpascal&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3584&lt;br /&gt;
| 12GB GDDR5X&lt;br /&gt;
| 480GB/s&lt;br /&gt;
| 11.0&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| TITAN Xp&lt;br /&gt;
| &amp;lt;code&amp;gt;titanxp&amp;lt;/code&amp;gt;&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3840&lt;br /&gt;
| 12GB GDDR5X&lt;br /&gt;
| 548GB/s&lt;br /&gt;
| 12.1&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| GeForce GTX TITAN X&lt;br /&gt;
| &amp;lt;code&amp;gt;gtxtitanx&amp;lt;/code&amp;gt;&lt;br /&gt;
| Maxwell&lt;br /&gt;
| 3072&lt;br /&gt;
| 12GB GDDR5&lt;br /&gt;
| 336GB/s&lt;br /&gt;
| 6.7&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=11680</id>
		<title>SLURM/JobSubmission</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobSubmission&amp;diff=11680"/>
		<updated>2024-03-06T23:04:58Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* show_available_nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Job Submission=&lt;br /&gt;
SLURM offers a variety of ways to run jobs. It is important to understand the different options available and how to request the resources required for a job in order for it to run successfully. All job submission should be done from submit nodes; any computational code should be run in a job allocation on compute nodes. The following commands outline how to allocate resources on the compute nodes and submit processes to be run on the allocated nodes.&lt;br /&gt;
&lt;br /&gt;
The cluster that everyone with a [[Accounts#UMIACS_Account | UMIACS account]] has access to is [[Nexus]]. Please visit the Nexus page for instructions on how to connect to your assigned submit nodes.&lt;br /&gt;
&lt;br /&gt;
Please note that the hard maximum number of jobs that the SLURM scheduler can handle at once (on Nexus) is 50000. It is best to limit your number of submitted jobs at any given time to significantly less than this amount in the case that another user also wants to submit a large number of jobs.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Computational jobs run on submission nodes will be terminated. Please use compute nodes for running computational jobs.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For details on how SLURM decides how to schedule jobs when multiple jobs are waiting in a scheduler&#039;s queue, please see [[SLURM/Priority]].&lt;br /&gt;
&lt;br /&gt;
==srun==&lt;br /&gt;
The &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; command is used to run a process on the compute nodes in the cluster. If you pass it a normal shell command (or command that executes a script), it will submit a job to run that shell command/script on a compute node and then return. &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; accepts many command line options to specify the resources required by the command passed to it. Some common command line arguments are listed below and full documentation of all available options is available in the man page for &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;, which can be accessed by running &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --qos=default --mem=100mb --time=1:00:00 bash -c &#039;echo &amp;quot;Hello World from&amp;quot; `hostname`&#039;&lt;br /&gt;
Hello World from tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is important to understand that &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is an interactive command. By default input to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; is broadcast to all compute nodes running your process and output from the compute nodes is redirected to &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt;. This behavior can be changed; however, &#039;&#039;&#039;srun will always wait for the command passed to finish before exiting, so if you start a long running process and end your terminal session, your process will stop running on the compute nodes and your job will end&#039;&#039;&#039;. To run a non-interactive submission that will remain running after you logout, you will need to wrap your &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; commands in a batch script and submit it with [[#sbatch | sbatch]].&lt;br /&gt;
&lt;br /&gt;
===Common srun arguments===&lt;br /&gt;
* &amp;lt;code&amp;gt;--job-name=helloWorld&amp;lt;/code&amp;gt; &#039;&#039;name of your job&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem=1gb&amp;lt;/code&amp;gt; &#039;&#039;request 1GB of memory, if no unit is given MB is assumed&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--ntasks=2&amp;lt;/code&amp;gt; &#039;&#039;request 2 &amp;quot;tasks&amp;quot; which map to cores on a CPU, if passed to srun the given command will be run concurrently on each core&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodes=2&amp;lt;/code&amp;gt; &#039;&#039;if passed to srun, the given command will be run concurrently on each node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--nodelist=$NODENAME&amp;lt;/code&amp;gt; &#039;&#039;request to run your job on the $NODENAME node&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--time=hh:mm:ss&amp;lt;/code&amp;gt; &#039;&#039;time needed to run your job&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--error=filename&amp;lt;/code&amp;gt; &#039;&#039;file to redirect stderr&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition=$PNAME&amp;lt;/code&amp;gt; &#039;&#039;request job run in the $PNAME partition&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos=default&amp;lt;/code&amp;gt; &#039;&#039;to see the available QOS options on a cluster, run&#039;&#039; &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;--account=accountname&amp;lt;/code&amp;gt; &#039;&#039;use qos specific to an account&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--output=filename&amp;lt;/code&amp;gt; &#039;&#039;file to redirect stdout to&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;--requeue&amp;lt;/code&amp;gt; &#039;&#039;automatically requeue your job if it is preempted&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Interactive Shell Sessions===&lt;br /&gt;
An interactive shell session on a compute node can be useful for debugging or developing code that isn&#039;t ready to be run as a batch job. To get an interactive shell on a node, use &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; to invoke a shell:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=default --mem 1gb --time=01:00:00 bash&lt;br /&gt;
$ hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Please do not leave interactive shells running for long periods of time when you are not working. This blocks resources from being used by everyone else.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==salloc==&lt;br /&gt;
The &amp;lt;code&amp;gt;salloc&amp;lt;/code&amp;gt; command can also be used to request resources be allocated without needing a batch script. Running salloc with a list of resources will allocate the resources you requested, create a job, and drop you into a subshell with the environment variables necessary to run commands in the newly created job allocation. When your time is up or you exit the subshell, your job allocation will be relinquished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ salloc --qos=default -N 1 --mem=2gb --time=01:00:00&lt;br /&gt;
salloc: Granted job allocation 159&lt;br /&gt;
$ srun /usr/bin/hostname&lt;br /&gt;
tron33.umiacs.umd.edu&lt;br /&gt;
$ exit&lt;br /&gt;
exit&lt;br /&gt;
salloc: Relinquishing job allocation 159&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Please note that any commands not invoked with srun will be run locally on the submit node. Please be careful when using salloc.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==sbatch==&lt;br /&gt;
The &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; command allows you to write a batch script to be submitted and run non-interactively on the compute nodes. To run a simple Hello World command on the compute nodes you could write a file, helloWorld.sh with the following contents:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
srun bash -c &#039;echo Hello World from `hostname`&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you need to submit the script with sbatch and request resources:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch --qos=default --mem=1gb --time=1:00:00 helloWorld.sh&lt;br /&gt;
Submitted batch job 121&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
SLURM will return a job number that you can use to check the status of your job with squeue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ squeue&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
               121      tron helloWor username  R       0:01      1 tron32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Advanced Batch Scripts====&lt;br /&gt;
You can also write a batch script with all of your resources/options defined in the script itself. This is useful for jobs that need to be run tens/hundreds/thousands of times. You can then handle any necessary environment setup and run commands on the resources you requested by invoking commands with srun. The srun commands can also be more complex and be told to only use portions of your entire job allocation, each of these distinct srun commands makes up one &amp;quot;job step&amp;quot;. The batch script will be run on the first node allocated as part of your job allocation and each job step will be run on whatever resources you tell them to. In the following example, we have a batch job that will request 2 nodes in the cluster. We then load a specific version of [[Python]] into our environment and submit two job steps, each one using one node. Since srun is blocks until the command finishes, we use the &#039;&amp;amp;&#039; operator to background the process so that both job steps can run at once; however, this means that we then need to use the wait command to block processing until all background processes have finished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# Lines that begin with #SBATCH specify commands to be used by SLURM for scheduling&lt;br /&gt;
&lt;br /&gt;
#SBATCH --job-name=helloWorld                                   # sets the job name&lt;br /&gt;
#SBATCH --output=helloWorld.out.%j                              # indicates a file to redirect STDOUT to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --error=helloWorld.out.%j                               # indicates a file to redirect STDERR to; %j is the jobid. If set, must be set to a file instead of a directory or else submission will fail.&lt;br /&gt;
#SBATCH --time=00:05:00                                         # how long you would like your job to run; format=hh:mm:ss&lt;br /&gt;
#SBATCH --qos=default                                           # set QOS, this will determine what resources can be requested&lt;br /&gt;
#SBATCH --nodes=2                                               # number of nodes to allocate for your job&lt;br /&gt;
#SBATCH --ntasks=4                                              # request 4 cpu cores be reserved for your node total&lt;br /&gt;
#SBATCH --ntasks-per-node=2                                     # request 2 cpu cores be reserved per node&lt;br /&gt;
#SBATCH --mem=1gb                                               # memory required by job; if unit is not specified MB will be assumed&lt;br /&gt;
&lt;br /&gt;
srun -N 1 --mem=512mb bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;   # use srun to invoke commands within your job; using an &#039;&amp;amp;&#039;&lt;br /&gt;
srun -N 1 --mem=512mb bash -c &amp;quot;hostname; python3 --version&amp;quot; &amp;amp;   # will background the process allowing them to run concurrently&lt;br /&gt;
wait                                                            # wait for any background processes to complete&lt;br /&gt;
&lt;br /&gt;
# once the end of the batch script is reached your job allocation will be revoked&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another useful thing to know is that you can pass additional arguments into your sbatch scripts on the command line and reference them as &amp;lt;code&amp;gt;${1}&amp;lt;/code&amp;gt; for the first argument and so on.&lt;br /&gt;
&lt;br /&gt;
====More Examples====&lt;br /&gt;
* [[SLURM/ArrayJobs]]&lt;br /&gt;
&lt;br /&gt;
===scancel===&lt;br /&gt;
The &amp;lt;code&amp;gt;scancel&amp;lt;/code&amp;gt; command can be used to cancel job allocations or job steps that are no longer needed. It can be passed individual job IDs or an option to delete all of your jobs or jobs that meet certain criteria.&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255&amp;lt;/code&amp;gt;     &#039;&#039;cancel job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel 255.3&amp;lt;/code&amp;gt;     &#039;&#039;cancel job step 3 of job 255&#039;&#039;&lt;br /&gt;
*&amp;lt;code&amp;gt;scancel --user username --partition=tron&amp;lt;/code&amp;gt;    &#039;&#039;cancel all jobs for username in the tron partition&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Identifying Resources and Features=&lt;br /&gt;
The &amp;lt;code&amp;gt;sinfo&amp;lt;/code&amp;gt; command can show you additional features of nodes in the cluster but you need to ask it to show some non-default options using a command like &amp;lt;code&amp;gt;sinfo -o &amp;quot;%40N %8c %8m %35f %35G&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -o &amp;quot;%40N %8c %8m %35f %35G&amp;quot;&lt;br /&gt;
NODELIST                                 CPUS     MEMORY   AVAIL_FEATURES                      GRES&lt;br /&gt;
legacy00                                 48       125940   rhel8,Zen,EPYC-7402                 (null)&lt;br /&gt;
legacy[01-11,13-19,22-28,30]             12+      61804+   rhel8,Xeon,E5-2620                  (null)&lt;br /&gt;
cbcb[23-24],twist[02-05]                 24       255150   rhel8,Xeon,E5-2650                  (null)&lt;br /&gt;
cbcb26                                   128      513243   rhel8,Zen,EPYC-7763,Ampere          gpu:rtxa5000:8&lt;br /&gt;
cbcb27                                   64       255167   rhel8,Zen,EPYC-7513,Ampere          gpu:rtxa6000:8&lt;br /&gt;
cbcb[00-21]                              32       2061175  rhel8,Zen,EPYC-7313                 (null)&lt;br /&gt;
cbcb22,cmlcpu[00,06-07],legacy20         24+      384270+  rhel8,Xeon,E5-2680                  (null)&lt;br /&gt;
cbcb25                                   24       255278   rhel8,Xeon,E5-2650,Pascal,Turing    gpu:rtx2080ti:1,gpu:gtx1080ti:1&lt;br /&gt;
legacy21                                 8        61746    rhel8,Xeon,E5-2623                  (null)&lt;br /&gt;
tron[06-09,12-15,21]                     16       126214+  rhel8,Zen,EPYC-7302P,Ampere         gpu:rtxa4000:4&lt;br /&gt;
tron[10-11,16-20,34]                     16       126217   rhel8,Zen,EPYC-7313P,Ampere         gpu:rtxa4000:4&lt;br /&gt;
tron[22-33,35-45]                        16       126214+  rhel8,Zen,EPYC-7302,Ampere          gpu:rtxa4000:4&lt;br /&gt;
clip11                                   16       126217   rhel8,Zen,EPYC-7313,Ampere          gpu:rtxa4000:4&lt;br /&gt;
clip00                                   32       255276   rhel8,Xeon,E5-2683,Pascal           gpu:titanxpascal:3&lt;br /&gt;
clip02                                   20       126255   rhel8,Xeon,E5-2630,Pascal           gpu:gtx1080ti:3&lt;br /&gt;
clip03                                   20       126243   rhel8,Xeon,E5-2630,Pascal,Turing    gpu:rtx2080ti:1,gpu:gtx1080ti:2&lt;br /&gt;
clip04                                   32       255233   rhel8,Zen,EPYC-7302,Ampere          gpu:rtx3090:4&lt;br /&gt;
clip[05-06]                              24       126216   rhel8,Zen,EPYC-7352,Ampere          gpu:rtxa6000:2&lt;br /&gt;
clip07                                   8        255263   rhel8,Xeon,E5-2623,Pascal           gpu:gtx1080ti:3&lt;br /&gt;
clip09                                   32       383043   rhel8,Xeon,6130,Pascal,Turing       gpu:rtx2080ti:5,gpu:gtx1080ti:3&lt;br /&gt;
clip13,cml30,vulcan[29-32]               32       255218+  rhel8,Zen,EPYC-7313,Ampere          gpu:rtxa6000:8&lt;br /&gt;
clip08,vulcan[08-22,25]                  32       255258+  rhel8,Xeon,E5-2683,Pascal           gpu:gtx1080ti:8&lt;br /&gt;
clip12,gammagpu[10-17]                   16       126203+  rhel8,Zen,EPYC-7313,Ampere          gpu:rtxa6000:4&lt;br /&gt;
clip01                                   32       255276   rhel8,Xeon,E5-2683,Pascal           gpu:titanxpascal:1,gpu:titanxp:2&lt;br /&gt;
clip10                                   44       1029404  rhel8,Xeon,E5-2699                  (null)&lt;br /&gt;
cml[00,02-11,13-14],tron[62-63,65-66,68- 32       351530+  rhel8,Xeon,4216,Turing              gpu:rtx2080ti:8&lt;br /&gt;
cml01                                    32       383030   rhel8,Xeon,4216,Turing              gpu:rtx2080ti:6&lt;br /&gt;
cml12                                    32       383038   rhel8,Xeon,4216,Turing,Ampere       gpu:rtx2080ti:7,gpu:rtxa4000:1&lt;br /&gt;
cml[15-16]                               32       383038   rhel8,Xeon,4216,Turing              gpu:rtx2080ti:7&lt;br /&gt;
cml[17-28],gammagpu05                    32       255225+  rhel8,Zen,EPYC-7282,Ampere          gpu:rtxa4000:8&lt;br /&gt;
cml31                                    32       384094   rhel8,Zen,EPYC-9124,Ampere          gpu:a100:1&lt;br /&gt;
cml32                                    64       512999   rhel8,Zen,EPYC-7543,Ampere          gpu:a100:4&lt;br /&gt;
cmlcpu[01-04]                            20       384271   rhel8,Xeon,E5-2660                  (null)&lt;br /&gt;
gammagpu00                               32       255233   rhel8,Zen,EPYC-7302,Ampere          gpu:rtxa5000:8&lt;br /&gt;
mbrc[00-01]                              20       189498   rhel8,Xeon,4114,Turing              gpu:rtx2080ti:8&lt;br /&gt;
twist[00-01]                             8        61727    rhel8,Xeon,E5-1660                  (null)&lt;br /&gt;
legacygpu08                              20       513327   rhel8,Xeon,E5-2640,Maxwell          gpu:m40:2&lt;br /&gt;
brigid[16-17]                            48       512897   rhel8,Zen,EPYC-7443                 (null)&lt;br /&gt;
brigid[18-19]                            20       61739    rhel8,Xeon,E5-2640                  (null)&lt;br /&gt;
legacygpu06                              20       255249   rhel8,Xeon,E5-2699,Maxwell          gpu:gtxtitanx:4&lt;br /&gt;
tron[00-05]                              32       255233   rhel8,Zen,EPYC-7302,Ampere          gpu:rtxa6000:8&lt;br /&gt;
tron[46-61]                              48       255232   rhel8,Zen,EPYC-7352,Ampere          gpu:rtxa5000:8&lt;br /&gt;
tron[64,67]                              32       383028+  rhel8,Xeon,4216,Turing,Ampere       gpu:rtx2080ti:7,gpu:rtx3070:1&lt;br /&gt;
vulcan00                                 32       255259   rhel8,Xeon,E5-2683,Pascal           gpu:p6000:7,gpu:p100:1&lt;br /&gt;
vulcan[01-04,06-07]                      32       255259   rhel8,Xeon,E5-2683,Pascal           gpu:p6000:8&lt;br /&gt;
vulcan05                                 32       255259   rhel8,Xeon,E5-2683,Pascal           gpu:p6000:7&lt;br /&gt;
janus[02-04]                             40       383025   rhel8,Xeon,6248,Turing              gpu:rtx2080ti:10&lt;br /&gt;
legacygpu00                              20       255249   rhel8,Xeon,E5-2650,Pascal           gpu:titanxp:4&lt;br /&gt;
legacygpu[01-02,07]                      20       255249+  rhel8,Xeon,E5-2650,Maxwell          gpu:gtxtitanx:4&lt;br /&gt;
legacygpu[03-04]                         16       255268   rhel8,Xeon,E5-2630,Maxwell          gpu:gtxtitanx:2&lt;br /&gt;
legacygpu05                              44       513193   rhel8,Xeon,E5-2699,Pascal           gpu:gtx1080ti:4&lt;br /&gt;
vulcan23                                 32       383030   rhel8,Xeon,4612,Turing              gpu:rtx2080ti:8&lt;br /&gt;
vulcan26                                 24       770126   rhel8,Xeon,6146,Pascal              gpu:titanxp:10&lt;br /&gt;
vulcan[27-28]                            56       770093   rhel8,Xeon,8280,Turing              gpu:rtx2080ti:10&lt;br /&gt;
vulcan24                                 16       126216   rhel8,Zen,7282,Ampere               gpu:rtxa6000:4&lt;br /&gt;
gammagpu[01-04,06-09],vulcan[33-37]      32       255215+  rhel8,Zen,EPYC-7313,Ampere          gpu:rtxa5000:8&lt;br /&gt;
vulcan[38-44]                            32       255215   rhel8,Zen,EPYC-7313,Ampere          gpu:rtxa4000:8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that all of the nodes shown by this may not necessarily be in a partition you are able to submit to.&lt;br /&gt;
&lt;br /&gt;
You can identify further specific information about a node using [[SLURM/ClusterStatus#scontrol | scontrol]] with various flags.&lt;br /&gt;
&lt;br /&gt;
There are also two command aliases developed by UMIACS staff to show various node information in aggregate. They are &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==show_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; command alias shows each node&#039;s name, number of CPUs, memory, {OS, CPU architecture, CPU type, GPU architecture (if the node has GPUs)} (as AVAIL_FEATURES), GRES (GPUs), and State. It essentially wraps the &amp;lt;tt&amp;gt;sinfo&amp;lt;/tt&amp;gt; command with some pre-determined output format options and shows each node on its own line, in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
To only view nodes in a specific partition, append &amp;lt;code&amp;gt;-p &amp;lt;partition name&amp;gt;&amp;lt;/code&amp;gt; to the command alias.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                 GRES                             STATE&lt;br /&gt;
brigid16             48         512897     rhel8,Zen,EPYC-7443            (null)                           idle&lt;br /&gt;
brigid17             48         512897     rhel8,Zen,EPYC-7443            (null)                           idle&lt;br /&gt;
...                  ...        ...        ...                            ...                              ...&lt;br /&gt;
vulcan44             32         255215     rhel8,Zen,EPYC-7313,Ampere     gpu:rtxa4000:8                   idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(specific partition)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_nodes -p tron&lt;br /&gt;
NODELIST             CPUS       MEMORY     AVAIL_FEATURES                 GRES                             STATE&lt;br /&gt;
tron00               32         255233     rhel8,Zen,EPYC-7302,Ampere     gpu:rtxa6000:8                   idle&lt;br /&gt;
tron01               32         255233     rhel8,Zen,EPYC-7302,Ampere     gpu:rtxa6000:8                   idle&lt;br /&gt;
...                  ...        ...        ...                            ...                              ...&lt;br /&gt;
tron69               32         383030     rhel8,Xeon,4216,Turing         gpu:rtx2080ti:8                  idle&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==show_available_nodes==&lt;br /&gt;
The &amp;lt;code&amp;gt;show_available_nodes&amp;lt;/code&amp;gt; command alias takes zero or more arguments that correspond to resources or features that you are looking to request a job for and tells you what nodes could &#039;&#039;&#039;theoretically&#039;&#039;&#039;[0,1] run a job with these arguments immediately. It assumes your job is a single-node job.&lt;br /&gt;
&lt;br /&gt;
These arguments are:&lt;br /&gt;
* &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;: Only include nodes in the specified partition(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified account(s).&lt;br /&gt;
* &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt;: Only include nodes from partitions that can use the specified QoS(es).&lt;br /&gt;
* &amp;lt;code&amp;gt;--cpus&amp;lt;/code&amp;gt;: Only include nodes with at least this many CPUs free.&lt;br /&gt;
* &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt;: Only include nodes with at least this much memory free. The default unit is MB if unspecified, but any of {K,M,G,T} can be suffixed to the number provided (will then be interpreted as KB, MB, GB, or TB, respectively).&lt;br /&gt;
* GRES-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains any of the specified GRES type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--and-gres&amp;lt;/code&amp;gt;: Only include nodes whose list of GRES contains all of the specified GRES type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--or-gres&amp;lt;/tt&amp;gt; if only one GRES type/quantity pairing is specified.&lt;br /&gt;
* GPU-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains any of the specified GPU type/quantity pairings.&lt;br /&gt;
** &amp;lt;code&amp;gt;--and-gpus&amp;lt;/code&amp;gt;: Only include nodes whose list of GPUs (a subset of GRES) contains all of the specified GPU type/quantity pairings. Functionally identical to &amp;lt;tt&amp;gt;--or-gpus&amp;lt;/tt&amp;gt; if only one GPU type/quantity pairing is specified.&lt;br /&gt;
* Feature-related arguments:&lt;br /&gt;
** &amp;lt;code&amp;gt;--or-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains any of the specified feature(s).&lt;br /&gt;
** &amp;lt;code&amp;gt;--and-feature&amp;lt;/code&amp;gt;: Only include nodes whose list of features contains all of the specified feature(s). Functionally identical to &amp;lt;tt&amp;gt;--or-feature&amp;lt;/tt&amp;gt; if only one feature is specified.&lt;br /&gt;
&lt;br /&gt;
These arguments are also viewable by running &amp;lt;code&amp;gt;show_available_nodes -h&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
===Footnotes===&lt;br /&gt;
[0] - As of now, this command alias does not factor in resources occupied by jobs that could be preempted (based on the partition(s) passed to it, if present). This is soon to come.&lt;br /&gt;
&lt;br /&gt;
[1] - This command alias also does not factor in potentially higher priority jobs in the same partition(s) blocking execution of a job submitted with the arguments checked by the command alias. This is due to the complexity of calculating a job&#039;s priority before it is actually submitted.&lt;br /&gt;
&lt;br /&gt;
=Requesting GPUs=&lt;br /&gt;
If you need to do processing on a GPU, you will need to request that your job have access to GPUs just as you need to request processors or CPU cores. In SLURM, GPUs are considered &amp;quot;generic resources&amp;quot; also known as GRES. To request some number of GPUs be reserved/available for your job, you can use the flag &amp;lt;code&amp;gt;--gres=gpu:#&amp;lt;/code&amp;gt; (with the actual number of GPUs you want). If there are multiple types of GPUs available in the cluster and you need a specific type, you can provide the type option to the gres flag e.g. &amp;lt;code&amp;gt;--gres=gpu:rtxa5000:#&amp;lt;/code&amp;gt;. If you do not request a specific type of GPU, you are likely to be scheduled on an older, lower spec&#039;d GPU.&lt;br /&gt;
&lt;br /&gt;
Note that some QoSes may have limits on the number of GPUs you can request per job, so you may need to specify a different QoS to request more GPUs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --qos=medium --gres=gpu:2 nvidia-smi&lt;br /&gt;
...&lt;br /&gt;
Wed Mar  6 16:59:39 2024&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     |&lt;br /&gt;
|-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                                         |                      |               MIG M. |&lt;br /&gt;
|=========================================+======================+======================|&lt;br /&gt;
|   0  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:3D:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   23C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
|   1  NVIDIA GeForce RTX 2080 Ti     Off | 00000000:40:00.0 Off |                  N/A |&lt;br /&gt;
| 32%   25C    P8               1W / 250W |      0MiB / 11264MiB |      0%      Default |&lt;br /&gt;
|                                         |                      |                  N/A |&lt;br /&gt;
+-----------------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                                            |&lt;br /&gt;
|  GPU   GI   CI        PID   Type   Process name                            GPU Memory |&lt;br /&gt;
|        ID   ID                                                             Usage      |&lt;br /&gt;
|=======================================================================================|&lt;br /&gt;
|  No running processes found                                                           |&lt;br /&gt;
+---------------------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note that your job will only be able to see/access the GPUs you requested. If you only need 1 GPU, please only request 1 GPU. The others on the node (if any) will be left available for other users.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --gres=gpu:rtxa5000:1 nvidia-smi&lt;br /&gt;
Thu Aug 25 15:22:15 2022&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| NVIDIA-SMI 470.129.06   Driver Version: 470.129.06   CUDA Version: 11.4     |&lt;br /&gt;
|-------------------------------+----------------------+----------------------+&lt;br /&gt;
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |&lt;br /&gt;
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |&lt;br /&gt;
|                               |                      |               MIG M. |&lt;br /&gt;
|===============================+======================+======================|&lt;br /&gt;
|   0  NVIDIA RTX A5000    Off  | 00000000:01:00.0 Off |                  Off |&lt;br /&gt;
| 30%   23C    P8    20W / 230W |      0MiB / 24256MiB |      0%      Default |&lt;br /&gt;
|                               |                      |                  N/A |&lt;br /&gt;
+-------------------------------+----------------------+----------------------+&lt;br /&gt;
&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
| Processes:                                                       GPU Memory |&lt;br /&gt;
|  GPU       PID  Type  Process name                               Usage      |&lt;br /&gt;
|=============================================================================|&lt;br /&gt;
|  No running processes found                                                 |&lt;br /&gt;
+-----------------------------------------------------------------------------+&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As with all other flags, the &amp;lt;code&amp;gt;--gres&amp;lt;/code&amp;gt; flag may also be passed to [[#sbatch | sbatch]] and [[#salloc | salloc]] rather than directly to [[#srun | srun]].&lt;br /&gt;
&lt;br /&gt;
=MPI example=&lt;br /&gt;
To run [https://en.wikipedia.org/wiki/Message_Passing_Interface MPI] jobs, you will need to include the &amp;lt;code&amp;gt;--mpi=pmix&amp;lt;/code&amp;gt; flag in your submission arguments.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/bash &lt;br /&gt;
#SBATCH --job-name=mpi_test # Job name &lt;br /&gt;
#SBATCH --nodes=4 # Number of nodes &lt;br /&gt;
#SBATCH --ntasks=8 # Number of MPI ranks &lt;br /&gt;
#SBATCH --ntasks-per-node=2 # Number of MPI ranks per node &lt;br /&gt;
#SBATCH --ntasks-per-socket=1 # Number of tasks per processor socket on the node &lt;br /&gt;
#SBATCH --time=00:30:00 # Time limit hrs:min:sec &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
srun --mpi=pmix /nfshomes/username/testing/mpi/a.out &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/GPUs&amp;diff=11468</id>
		<title>Nexus/GPUs</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/GPUs&amp;diff=11468"/>
		<updated>2023-12-06T21:41:17Z</updated>

		<summary type="html">&lt;p&gt;Seide: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are several different types of [https://www.nvidia.com/en-us/ NVIDIA] GPUs in the [[Nexus]] cluster that are available to be scheduled. They are listed below in order of newest to oldest architecture, and then alphabetically.&lt;br /&gt;
&lt;br /&gt;
We do not list the exact quantities of GPU here since they change frequently due to additions to or removals from the cluster or during compute node troubleshooting. To see which compute nodes have which GPUs and in what quantities, use the &amp;lt;code&amp;gt;show_nodes&amp;lt;/code&amp;gt; command on a submission or compute node. The quantities are listed under the &amp;lt;tt&amp;gt;GRES&amp;lt;/tt&amp;gt; column.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name&lt;br /&gt;
! [https://www.nvidia.com/en-us/technologies Architecture]&lt;br /&gt;
! [https://developer.nvidia.com/cuda-toolkit CUDA] Cores&lt;br /&gt;
! GPU Memory&lt;br /&gt;
! Memory Bandwidth&lt;br /&gt;
! FP32 Performance (TFLOPS)&lt;br /&gt;
! [https://developer.nvidia.com/blog/accelerating-ai-training-with-tf32-tensor-cores/ TF32] Performance ([https://developer.nvidia.com/blog/accelerating-inference-with-sparsity-using-ampere-and-tensorrt Dense / Sparse TOPS])&lt;br /&gt;
|-&lt;br /&gt;
| GeForce RTX 3070&lt;br /&gt;
| Ampere&lt;br /&gt;
| 5888&lt;br /&gt;
| 8GB GDDR6&lt;br /&gt;
| 448GB/s&lt;br /&gt;
| 20.3&lt;br /&gt;
| 20.3/40.6&lt;br /&gt;
|-&lt;br /&gt;
| GeForce RTX 3090&lt;br /&gt;
| Ampere&lt;br /&gt;
| 10496&lt;br /&gt;
| 24GB GDDR6X&lt;br /&gt;
| 936GB/s&lt;br /&gt;
| 35.6&lt;br /&gt;
| 35.6/71&lt;br /&gt;
|-&lt;br /&gt;
| RTX A4000&lt;br /&gt;
| Ampere&lt;br /&gt;
| 6144&lt;br /&gt;
| 16GB GDDR6&lt;br /&gt;
| 448GB/s&lt;br /&gt;
| 19.2&lt;br /&gt;
| not officially published&lt;br /&gt;
|-&lt;br /&gt;
| RTX A5000&lt;br /&gt;
| Ampere&lt;br /&gt;
| 8192&lt;br /&gt;
| 24GB GDDR6&lt;br /&gt;
| 768GB/s&lt;br /&gt;
| 27.8&lt;br /&gt;
| not officially published&lt;br /&gt;
|-&lt;br /&gt;
| RTX A6000&lt;br /&gt;
| Ampere&lt;br /&gt;
| 10752&lt;br /&gt;
| 48GB GDDR6&lt;br /&gt;
| 768GB/s&lt;br /&gt;
| 38.7&lt;br /&gt;
| 77.4/154.8&lt;br /&gt;
|-&lt;br /&gt;
| A100&lt;br /&gt;
| Ampere&lt;br /&gt;
| 6912&lt;br /&gt;
| 80GB HBM2e&lt;br /&gt;
| 1935 GB/s&lt;br /&gt;
| 19.5&lt;br /&gt;
| 156/312&lt;br /&gt;
|-&lt;br /&gt;
| GeForce RTX 2080 Ti&lt;br /&gt;
| Turing&lt;br /&gt;
| 4352&lt;br /&gt;
| 11GB GDDR5X&lt;br /&gt;
| 616GB/s&lt;br /&gt;
| 13.4&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| GeForce GTX 1080 Ti&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3584&lt;br /&gt;
| 11GB GDDR5X&lt;br /&gt;
| 484GB/s&lt;br /&gt;
| 11.3&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| GeForce GTX Titan Xp&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3840&lt;br /&gt;
| 12GB GDDR5X&lt;br /&gt;
| 548GB/s&lt;br /&gt;
| 12.1&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| Quadro P6000&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3840&lt;br /&gt;
| 24GB GDDR5X&lt;br /&gt;
| 432GB/s&lt;br /&gt;
| 12.6&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| Tesla P100&lt;br /&gt;
| Pascal&lt;br /&gt;
| 3584&lt;br /&gt;
| 16GB CoWoS HBM2&lt;br /&gt;
| 732GB/s&lt;br /&gt;
| 9.3&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| GeForce GTX Titan X&lt;br /&gt;
| Maxwell&lt;br /&gt;
| 3072&lt;br /&gt;
| 12GB GDDR5&lt;br /&gt;
| 336GB/s&lt;br /&gt;
| 6.7&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| Tesla M40&lt;br /&gt;
| Maxwell&lt;br /&gt;
| 3072&lt;br /&gt;
| 12GB GDDR5&lt;br /&gt;
| 288GB/s&lt;br /&gt;
| 6.8&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
| Tesla K80&lt;br /&gt;
| Kepler&lt;br /&gt;
| 4992&lt;br /&gt;
| 24GB GDDR5&lt;br /&gt;
| 480GB/s&lt;br /&gt;
| 8.7&lt;br /&gt;
| n/a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/CML&amp;diff=11329</id>
		<title>Nexus/CML</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/CML&amp;diff=11329"/>
		<updated>2023-09-22T15:50:08Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* QoS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[CML]] standalone cluster&#039;s compute nodes have folded into [[Nexus]] as of the scheduled [[MonthlyMaintenanceWindow | maintenance window]] for August 2023 (Thursday 08/17/2023, 5-8pm).&lt;br /&gt;
&lt;br /&gt;
The Nexus cluster already has a large pool of compute resources made possible through leftover funding for the [[Iribe | Brendan Iribe Center]]. Details on common nodes already in the cluster (Tron partition) can be found [[Nexus/Tron | here]].&lt;br /&gt;
&lt;br /&gt;
The CML cluster&#039;s standalone submission node &amp;lt;code&amp;gt;cmlsub00.umiacs.umd.edu&amp;lt;/code&amp;gt; will be retired on Thursday, September 21st, 2023 during that month&#039;s maintenance window (5-8pm), as it is no longer able to submit jobs to CML compute nodes. Please use &amp;lt;code&amp;gt;nexuscml00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nexuscml01.umiacs.umd.edu&amp;lt;/code&amp;gt; for any general purpose CML compute needs after this time.&lt;br /&gt;
&lt;br /&gt;
Please see the [[#Timeline | Timeline]] section below for concrete dates in chronological order.&lt;br /&gt;
&lt;br /&gt;
Please [[HelpDesk | contact staff]] with any questions or concerns.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
The Nexus cluster submission nodes that are allocated to CML are &amp;lt;code&amp;gt;nexuscml00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nexuscml01.umiacs.umd.edu&amp;lt;/code&amp;gt;. &#039;&#039;&#039;You must use these nodes to submit jobs to CML compute nodes.&#039;&#039;&#039; Submission from &amp;lt;code&amp;gt;cmlsub00.umiacs.umd.edu&amp;lt;/code&amp;gt; is no longer available.&lt;br /&gt;
&lt;br /&gt;
All partitions, QoSes, and account names from the standalone CML cluster have been moved over to Nexus. However, please note that &amp;lt;code&amp;gt;cml-&amp;lt;/code&amp;gt; is prepended to all of the values that were present in the standalone CML cluster to distinguish them from existing values in Nexus. The lone exception is the base account that was named &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; in the standalone cluster (it is also named just &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; in Nexus).&lt;br /&gt;
&lt;br /&gt;
Here are some before/after examples of job submission with various parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Standalone CML cluster submission command&lt;br /&gt;
! Nexus cluster submission command&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=dpart --qos=medium --account=tomg --gres=gpu:rtx2080ti:2 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=cml-dpart --qos=cml-medium --account=cml-tomg --gres=gpu:rtx2080ti:2 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=cpu --qos=cpu --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=cml-cpu --qos=cml-cpu --account=cml --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=scavenger --qos=scavenger --account=scavenger --gres=gpu:4 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=cml-scavenger --qos=cml-scavenger --account=cml-scavenger --gres=gpu:4 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CML users (exclusively) can schedule non-interruptible jobs on CML nodes with any non-scavenger job parameters. Please note that the &amp;lt;code&amp;gt;cml-dpart&amp;lt;/code&amp;gt; partition has a &amp;lt;code&amp;gt;GrpTRES&amp;lt;/code&amp;gt; limit of 100% of the available cores/RAM on all cml## nodes in aggregate plus 50% of the available cores/RAM on legacy## nodes in aggregate, so your job may need to wait if all available cores/RAM (or GPUs) are in use. It also has a max submission limit of 500 jobs per user simultaneously so as to not overload the cluster. This is codified by the partition QoS named &#039;&#039;&#039;cml&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that the CML compute nodes are also in the institute-wide &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition in Nexus. CML users still have scavenging priority over these nodes via the &amp;lt;code&amp;gt;cml-scavenger&amp;lt;/code&amp;gt; partition (i.e., all &amp;lt;code&amp;gt;cml-&amp;lt;/code&amp;gt; partition jobs (other than &amp;lt;code&amp;gt;cml-scavenger&amp;lt;/code&amp;gt;) can preempt both &amp;lt;code&amp;gt;cml-scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition jobs, and &amp;lt;code&amp;gt;cml-scavenger&amp;lt;/code&amp;gt; partition jobs can preempt &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition jobs).&lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
There are three partitions available to general CML [[SLURM]] users.  You must specify a partition when submitting your job.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cml-dpart&#039;&#039;&#039; - This is the default partition. Job allocations are guaranteed.&lt;br /&gt;
* &#039;&#039;&#039;cml-scavenger&#039;&#039;&#039; - This is the alternate partition that allows jobs longer run times and more resources but is preemptable when jobs in other &amp;lt;code&amp;gt;cml-&amp;lt;/code&amp;gt; partitions are ready to be scheduled.&lt;br /&gt;
* &#039;&#039;&#039;cml-cpu&#039;&#039;&#039; - This partition is for CPU focused jobs. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
There is one additional partition available solely to Dr. Furong Huang&#039;s sponsored accounts.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;cml-furongh&#039;&#039;&#039; - This partition is for exclusive priority access to Dr. Huang&#039;s purchased A6000 node.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
The Center has a base SLURM account &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; which has a modest number of guaranteed billing resources available to all cluster users at any given time.  Other faculty that have invested in the cluster have an additional account provided to their sponsored accounts on the cluster, which provides a number of guaranteed billing resources corresponding to the amount that they invested.&lt;br /&gt;
&lt;br /&gt;
If you do not specify an account when submitting your job, you will receive the &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; account.  If your faculty sponsor has their own account, it is recommended to use that account for job submission.&lt;br /&gt;
&lt;br /&gt;
The current faculty accounts are:&lt;br /&gt;
* cml-abhinav&lt;br /&gt;
* cml-cameron&lt;br /&gt;
* cml-furongh&lt;br /&gt;
* cml-hajiagha&lt;br /&gt;
* cml-john&lt;br /&gt;
* cml-ramani&lt;br /&gt;
* cml-sfeizi&lt;br /&gt;
* cml-tokekar&lt;br /&gt;
* cml-tomg&lt;br /&gt;
* cml-zhou&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show account format=account%20,description%30,organization%10&lt;br /&gt;
             Account                          Descr        Org&lt;br /&gt;
-------------------- ------------------------------ ----------&lt;br /&gt;
                 ...                            ...        ...&lt;br /&gt;
                 cml                            cml        cml&lt;br /&gt;
         cml-abhinav      cml - abhinav shrivastava        cml&lt;br /&gt;
         cml-cameron            cml - maria cameron        cml&lt;br /&gt;
         cml-furongh             cml - furong huang        cml&lt;br /&gt;
        cml-hajiagha      cml - mohammad hajiaghayi        cml&lt;br /&gt;
            cml-john           cml - john dickerson        cml&lt;br /&gt;
          cml-ramani        cml - ramani duraiswami        cml&lt;br /&gt;
       cml-scavenger                cml - scavenger        cml&lt;br /&gt;
          cml-sfeizi             cml - soheil feizi        cml&lt;br /&gt;
         cml-tokekar           cml - pratap tokekar        cml&lt;br /&gt;
            cml-tomg            cml - tom goldstein        cml&lt;br /&gt;
            cml-zhou              cml - tianyi zhou        cml&lt;br /&gt;
                 ...                            ...        ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faculty can manage this list of users via our [https://intranet.umiacs.umd.edu/directory/secgroup/ Directory application] in the Security Groups section.  The security group that controls access has the prefix &amp;lt;code&amp;gt;cml_&amp;lt;/code&amp;gt; and then the faculty username.  It will also list &amp;lt;code&amp;gt;slurm://nexusctl.umiacs.umd.edu&amp;lt;/code&amp;gt; as the associated URI.&lt;br /&gt;
&lt;br /&gt;
You can check your account associations by running the &#039;&#039;&#039;show_assoc&#039;&#039;&#039; command to see the accounts you are associated with.  Please [[HelpDesk | contact staff]] and include your faculty member in the conversation if you do not see the appropriate association. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_assoc&lt;br /&gt;
      User          Account MaxJobs       GrpTRES                                                QOS&lt;br /&gt;
---------- ---------------- ------- ------------- --------------------------------------------------&lt;br /&gt;
       ...              ...                                                                      ...&lt;br /&gt;
      tomg              cml                                           cml-cpu,cml-default,cml-medium&lt;br /&gt;
      tomg    cml-scavenger                                                            cml-scavenger&lt;br /&gt;
      tomg         cml-tomg                                          cml-default,cml-high,cml-medium&lt;br /&gt;
       ...              ...                                                                      ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also see the total number of Track-able Resources (TRES) allowed for each account by running the following command. Please make sure you give the appropriate account that you are looking for. The billing number displayed here is the sum of [[SLURM/Priority#Modern | resource weightings]] for all nodes appropriated to that account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show assoc account=cml format=user,account,qos,grptres&lt;br /&gt;
      User    Account                  QOS       GrpTRES&lt;br /&gt;
---------- ---------- -------------------- -------------&lt;br /&gt;
                  cml                       billing=7732&lt;br /&gt;
                  ...                                ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==QoS==&lt;br /&gt;
CML currently has 5 QoS for the &#039;&#039;&#039;cml-dpart&#039;&#039;&#039; partition (though &amp;lt;code&amp;gt;high_long&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;very_high&amp;lt;/code&amp;gt; may not be available to all faculty accounts), 1 QoS for the &#039;&#039;&#039;cml-scavenger&#039;&#039;&#039; partition, and 1 QoS for the &#039;&#039;&#039;cml-cpu&#039;&#039;&#039; partition.  If you do not specify a QoS when submitting your job using the &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; parameter, you will receive the &#039;&#039;&#039;cml-default&#039;&#039;&#039; QoS assuming you are using a CML account.&lt;br /&gt;
&lt;br /&gt;
The important part here is that in different QoS you can have a shorter/longer maximum wall time, a different total number of jobs running at once, and a different maximum number of track-able resources (TRES) for the job.  In the cml-scavenger QoS, one more constraint that you are restricted by is the total number of TRES per user (over multiple jobs). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU                                                                             &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------      &lt;br /&gt;
...                                                                       &lt;br /&gt;
             cml-cpu  7-00:00:00                                        8                                                                                                            &lt;br /&gt;
         cml-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                                                                                            &lt;br /&gt;
            cml-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                                                                                            &lt;br /&gt;
       cml-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8                                                                             &lt;br /&gt;
          cml-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                                                                                            &lt;br /&gt;
       cml-scavenger  3-00:00:00                                                             gres/gpu=24                                                                             &lt;br /&gt;
       cml-very_high  1-12:00:00     cpu=32,gres/gpu=8,mem=256G         8                    gres/gpu=12            &lt;br /&gt;
...                                                                                  &lt;br /&gt;
&lt;br /&gt;
$ show_partition_qos&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
...&lt;br /&gt;
                 cml         500                                 cpu=1128,mem=11381G &lt;br /&gt;
       cml-scavenger         500                    gres/gpu=24                      &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Storage==&lt;br /&gt;
There are 3 types of user storage available to users in the CML:&lt;br /&gt;
* Home directories&lt;br /&gt;
* Project directories&lt;br /&gt;
* Scratch directories&lt;br /&gt;
&lt;br /&gt;
There are also 2 types of read-only storage available for common use among users in the CML:&lt;br /&gt;
* Dataset directories&lt;br /&gt;
* Model directories&lt;br /&gt;
&lt;br /&gt;
CML users can also request [[Nexus#Project_Allocations | Nexus project allocations]].&lt;br /&gt;
&lt;br /&gt;
===Home Directories===&lt;br /&gt;
Home directories in the CML computational infrastructure are available from the Institute&#039;s [[NFShomes]] as &amp;lt;code&amp;gt;/nfshomes/USERNAME&amp;lt;/code&amp;gt; where USERNAME is your username.  These home directories have very limited storage (30GB, cannot be increased) and are intended for your personal files, configuration and source code.  Your home directory is &#039;&#039;&#039;not&#039;&#039;&#039; intended for data sets or other large scale data holdings.  Users are encouraged to utilize our [[GitLab]] infrastructure to host your code repositories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: To check your quota on this directory you will need to use the &amp;lt;code&amp;gt;quota -s&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
Your home directory data is fully protected and has both [[Snapshots | snapshots]] and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
===Project Directories===&lt;br /&gt;
You can request project based allocations for up to 6TB for up to 120 days with approval from a CML faculty member and the director of CML.  &lt;br /&gt;
&lt;br /&gt;
To request an allocation, please [[HelpDesk | contact staff]] with the faculty member(s) that the project is under involved in the conversation.  Please include the following details:&lt;br /&gt;
* Project Name (short)&lt;br /&gt;
* Description&lt;br /&gt;
* Size (1TB, 2TB, etc.)&lt;br /&gt;
* Length in days (30 days, 90 days, etc.)&lt;br /&gt;
* Other user(s) that need to access the allocation, if any&lt;br /&gt;
&lt;br /&gt;
These allocations will be available from &#039;&#039;&#039;/fs/cml-projects&#039;&#039;&#039; under a name that you provide when you request the allocation.  Near the end of the allocation period, staff will contact you and ask if you would like to renew the allocation for up to another 120 days (requires re-approval from a CML faculty member and the director of CML).  If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.  If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible. If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible. If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
This data is backed up nightly.&lt;br /&gt;
&lt;br /&gt;
===Scratch Directories===&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the CML compute infrastructure:&lt;br /&gt;
* Network scratch directory&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
====Network Scratch Directory====&lt;br /&gt;
You are allocated 400GB of scratch space via NFS from &amp;lt;code&amp;gt;/cmlscratch/$username&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;automounted&#039;&#039;&#039; so you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access this.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 800GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 800GB, you will need faculty approval and/or a project directory. Space increases beyond 800GB also have a maximum request period of 120 days (as with project directories), after which they will need to be renewed with re-approval from a CML faculty member and the director of CML.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
====Local Scratch Directories====&lt;br /&gt;
Each computational node that you can schedule compute jobs on has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc.  These are almost always more performant than any other storage available to the job.  However, you must stage data to these directories within the confines of your jobs and stage the data out before the end of your jobs.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month during our monthly maintenance windows.  Again, please make sure you secure any data you write to these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
===Datasets===&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/cml-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The following is the list of datasets available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Dataset&lt;br /&gt;
! Path&lt;br /&gt;
|-&lt;br /&gt;
| CelebA&lt;br /&gt;
| /fs/cml-datasets/CelebA&lt;br /&gt;
|-&lt;br /&gt;
| CelebA-HQ&lt;br /&gt;
| /fs/cml-datasets/CelebA-HQ&lt;br /&gt;
|-&lt;br /&gt;
| CelebAMask-HQ&lt;br /&gt;
| /fs/cml-datasets/CelebAMask-HQ&lt;br /&gt;
|-&lt;br /&gt;
| Charades&lt;br /&gt;
| /fs/cml-datasets/Charades&lt;br /&gt;
|-&lt;br /&gt;
| Cityscapes&lt;br /&gt;
| /fs/cml-datasets/cityscapes&lt;br /&gt;
|-&lt;br /&gt;
| COCO&lt;br /&gt;
| /fs/cml-datasets/coco&lt;br /&gt;
|-&lt;br /&gt;
| Diversity in Faces [1]&lt;br /&gt;
| /fs/cml-datasets/diversity_in_faces&lt;br /&gt;
|-&lt;br /&gt;
| FFHQ&lt;br /&gt;
| /fs/cml-datasets/FFHQ&lt;br /&gt;
|-&lt;br /&gt;
| ImageNet ILSVRC2012&lt;br /&gt;
| /fs/cml-datasets/ImageNet/ILSVRC2012&lt;br /&gt;
|-&lt;br /&gt;
| LFW&lt;br /&gt;
| /fs/cml-datasets/facial_test_data&lt;br /&gt;
|-&lt;br /&gt;
| LibriSpeech&lt;br /&gt;
| /fs/cml-datasets/LibriSpeech&lt;br /&gt;
|-&lt;br /&gt;
| LSUN&lt;br /&gt;
| /fs/cml-datasets/LSUN&lt;br /&gt;
|-&lt;br /&gt;
| MAG240M&lt;br /&gt;
| /fs/cml-datasets/OGB/MAG240M&lt;br /&gt;
|-&lt;br /&gt;
| MegaFace&lt;br /&gt;
| /fs/cml-datasets/megaface&lt;br /&gt;
|-&lt;br /&gt;
| MS-Celeb-1M&lt;br /&gt;
| /fs/cml-datasets/MS_Celeb_aligned_112&lt;br /&gt;
|-&lt;br /&gt;
| OC20&lt;br /&gt;
| /fs/cml-datasets/OC20&lt;br /&gt;
|-&lt;br /&gt;
| ogbn-papers100M&lt;br /&gt;
| /fs/cml-datasets/OGB/ogbn-papers100M&lt;br /&gt;
|-&lt;br /&gt;
| roberta&lt;br /&gt;
| /fs/cml-datasets/roberta&lt;br /&gt;
|-&lt;br /&gt;
| Salient ImageNet&lt;br /&gt;
| /fs/cml-datasets/Salient-ImageNet&lt;br /&gt;
|-&lt;br /&gt;
| ShapeNetCore.v2&lt;br /&gt;
| /fs/cml-datasets/ShapeNetCore.v2&lt;br /&gt;
|-&lt;br /&gt;
| Tiny ImageNet&lt;br /&gt;
| /fs/cml-datasets/tiny_imagenet&lt;br /&gt;
|-&lt;br /&gt;
| WikiKG90M&lt;br /&gt;
| /fs/cml-datasets/OGB/WikiKG90M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[1] - This dataset has restricted access. Please [[HelpDesk | contact staff]] if you are looking to use this dataset.&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
We have read-only model storage available at &amp;lt;code&amp;gt;/fs/cml-models&amp;lt;/code&amp;gt;.  If there are models that you would like to see downloaded and made available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
Each event will be completed within the timeframe specified.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
| July 14th 2023&lt;br /&gt;
| A single compute node &amp;lt;code&amp;gt;cml03&amp;lt;/code&amp;gt; is moved into Nexus so submission can be tested&lt;br /&gt;
|- &lt;br /&gt;
| [[MonthlyMaintenanceWindow | August 17th 2023, 5-8pm]]&lt;br /&gt;
| All other standalone CML cluster compute nodes are moved into Nexus in corresponding &amp;lt;code&amp;gt;cml-&amp;lt;/code&amp;gt; named partitions&lt;br /&gt;
|- &lt;br /&gt;
| [[MonthlyMaintenanceWindow | September 21st 2023, 5-8pm]]&lt;br /&gt;
| &amp;lt;code&amp;gt;cmlsub00.umiacs.umd.edu&amp;lt;/code&amp;gt; is taken offline&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Vulcan&amp;diff=11328</id>
		<title>Nexus/Vulcan</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Vulcan&amp;diff=11328"/>
		<updated>2023-09-22T15:46:20Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* QoS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [https://wiki.umiacs.umd.edu/cfar/index.php/Vulcan Vulcan] standalone cluster&#039;s compute nodes have folded into [[Nexus]] as of the scheduled [[MonthlyMaintenanceWindow | maintenance window]] for August 2023 (Thursday 08/17/2023, 5-8pm).&lt;br /&gt;
&lt;br /&gt;
The Nexus cluster already has a large pool of compute resources made possible through leftover funding for the [[Iribe | Brendan Iribe Center]]. Details on common nodes already in the cluster (Tron partition) can be found [[Nexus/Tron | here]].&lt;br /&gt;
&lt;br /&gt;
The Vulcan cluster&#039;s standalone submission nodes &amp;lt;code&amp;gt;vulcansub00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vulcansub01.umiacs.umd.edu&amp;lt;/code&amp;gt; will be retired on Thursday, September 21st, 2023 during that month&#039;s maintenance window (5-8pm), as they are no longer able to submit jobs to Vulcan compute nodes. Please use &amp;lt;code&amp;gt;nexusvulcan00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nexusvulcan01.umiacs.umd.edu&amp;lt;/code&amp;gt; for any general purpose Vulcan compute needs after this time.&lt;br /&gt;
&lt;br /&gt;
Please see the [[#Timeline | Timeline]] section below for concrete dates in chronological order.&lt;br /&gt;
&lt;br /&gt;
Please [[HelpDesk | contact staff]] with any questions or concerns.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
The Nexus cluster submission nodes that are allocated to Vulcan are &amp;lt;code&amp;gt;nexusvulcan00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nexusvulcan01.umiacs.umd.edu&amp;lt;/code&amp;gt;. &#039;&#039;&#039;You must use these nodes to submit jobs to Vulcan compute nodes.&#039;&#039;&#039; Submission from &amp;lt;code&amp;gt;vulcansub00.umiacs.umd.edu&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;vulcansub01.umiacs.umd.edu&amp;lt;/code&amp;gt; is no longer available.&lt;br /&gt;
&lt;br /&gt;
All partitions, QoSes, and account names from the standalone Vulcan cluster have been moved over to Nexus. However, please note that &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; is prepended to all of the values that were present in the standalone Vulcan cluster to distinguish them from existing values in Nexus. The lone exception is the base account that was named &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; in the standalone cluster (it is also named just &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; in Nexus).&lt;br /&gt;
&lt;br /&gt;
Here are some before/after examples of job submission with various parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Standalone Vulcan cluster submission command&lt;br /&gt;
! Nexus cluster submission command&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=dpart --qos=medium --account=abhinav --gres=gpu:rtxa4000:2 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=vulcan-dpart --qos=vulcan-medium --account=vulcan-abhinav --gres=gpu:rtxa4000:2 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=cpu --qos=cpu --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=vulcan-cpu --qos=vulcan-cpu --account=vulcan --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=scavenger --qos=scavenger --account=vulcan --gres=gpu:4 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=vulcan-scavenger --qos=vulcan-scavenger --account=vulcan --gres=gpu:4 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vulcan users (exclusively) can schedule non-interruptible jobs on Vulcan nodes with any non-scavenger job parameters. Please note that the &amp;lt;code&amp;gt;vulcan-dpart&amp;lt;/code&amp;gt; partition has a &amp;lt;code&amp;gt;GrpTRES&amp;lt;/code&amp;gt; limit of 100% of the available cores/RAM on all vulcan## in aggregate nodes plus 50% of the available cores/RAM on legacy## nodes in aggregate, so your job may need to wait if all available cores/RAM (or GPUs) are in use. It also has a max submission limit of 500 jobs per user simultaneously so as to not overload the cluster. This is codified by the partition QoS named &#039;&#039;&#039;vulcan&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that the Vulcan compute nodes are also in the institute-wide &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition in Nexus. Vulcan users still have scavenging priority over these nodes via the &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt; partition (i.e., all &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; partition jobs (other than &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt;) can preempt both &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition jobs, and &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt; partition jobs can preempt &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition jobs).&lt;br /&gt;
&lt;br /&gt;
==Nodes==&lt;br /&gt;
There are currently 45 [[Nexus/Vulcan/GPUs | GPU nodes]] available running a mixture of NVIDIA RTX A6000, NVIDIA RTX A5000, NVIDIA RTX A4000, NVIDIA Quadro P6000, NVIDIA GeForce GTX 1080 Ti, NVIDIA GeForce RTX 2080 Ti, and NVIDIA Tesla P100 cards. There are also 2 CPU-only nodes available.&lt;br /&gt;
&lt;br /&gt;
All nodes are scheduled with the [[SLURM]] resource manager.  &lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
There are three partitions available to general Vulcan [[SLURM]] users.  You must specify a partition when submitting your job.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vulcan-dpart&#039;&#039;&#039; - This is the default partition. Job allocations are guaranteed.&lt;br /&gt;
* &#039;&#039;&#039;vulcan-scavenger&#039;&#039;&#039; - This is the alternate partition that allows jobs longer run times and more resources but is preemptable when jobs in other &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; partitions are ready to be scheduled.&lt;br /&gt;
* &#039;&#039;&#039;vulcan-cpu&#039;&#039;&#039; - This partition is for CPU focused jobs. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
There are a few additional partitions available to subsets of Vulcan users based on specific requirements.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
Vulcan has a base SLURM account &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; which has a modest number of guaranteed billing resources available to all cluster users at any given time.  Other faculty that have invested in Vulcan compute infrastructure have an additional account provided to their sponsored accounts on the cluster, which provides a number of guaranteed billing resources corresponding to the amount that they invested.&lt;br /&gt;
&lt;br /&gt;
If you do not specify an account when submitting your job, you will receive the &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; account.  If your faculty sponsor has their own account, it is recommended to use that account for job submission.&lt;br /&gt;
&lt;br /&gt;
The current faculty accounts are:&lt;br /&gt;
* vulcan-abhinav&lt;br /&gt;
* vulcan-djacobs&lt;br /&gt;
* vulcan-jbhuang&lt;br /&gt;
* vulcan-lsd&lt;br /&gt;
* vulcan-metzler&lt;br /&gt;
* vulcan-rama&lt;br /&gt;
* vulcan-ramani&lt;br /&gt;
* vulcan-yaser&lt;br /&gt;
* vulcan-zwicker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show account format=account%20,description%30,organization%10&lt;br /&gt;
             Account                          Descr        Org&lt;br /&gt;
-------------------- ------------------------------ ----------&lt;br /&gt;
                 ...                            ...        ...&lt;br /&gt;
              vulcan                         vulcan     vulcan&lt;br /&gt;
      vulcan-abhinav   vulcan - abhinav shrivastava     vulcan&lt;br /&gt;
      vulcan-djacobs          vulcan - david jacobs     vulcan&lt;br /&gt;
      vulcan-jbhuang         vulcan - jia-bin huang     vulcan&lt;br /&gt;
          vulcan-lsd           vulcan - larry davis     vulcan&lt;br /&gt;
      vulcan-metzler         vulcan - chris metzler     vulcan&lt;br /&gt;
         vulcan-rama        vulcan - rama chellappa     vulcan&lt;br /&gt;
       vulcan-ramani     vulcan - ramani duraiswami     vulcan&lt;br /&gt;
        vulcan-yaser          vulcan - yaser yacoob     vulcan&lt;br /&gt;
      vulcan-zwicker      vulcan - matthias zwicker     vulcan&lt;br /&gt;
                 ...                            ...        ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faculty can manage this list of users via our [https://intranet.umiacs.umd.edu/directory/secgroup/ Directory application] in the Security Groups section.  The security group that controls access has the prefix &amp;lt;code&amp;gt;vulcan_&amp;lt;/code&amp;gt; and then the faculty username.  It will also list &amp;lt;code&amp;gt;slurm://nexusctl.umiacs.umd.edu&amp;lt;/code&amp;gt; as the associated URI.&lt;br /&gt;
&lt;br /&gt;
You can check your account associations by running the &#039;&#039;&#039;show_assoc&#039;&#039;&#039; command to see the accounts you are associated with.  Please [[HelpDesk | contact staff]] and include your faculty member in the conversation if you do not see the appropriate association. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_assoc&lt;br /&gt;
      User          Account MaxJobs       GrpTRES                                                                              QOS&lt;br /&gt;
---------- ---------------- ------- ------------- --------------------------------------------------------------------------------&lt;br /&gt;
       ...              ...     ...                                                                                            ...&lt;br /&gt;
   abhinav          abhinav      48                           vulcan-cpu,vulcan-default,vulcan-high,vulcan-medium,vulcan-scavenger&lt;br /&gt;
   abhinav           vulcan      48                                       vulcan-cpu,vulcan-default,vulcan-medium,vulcan-scavenger&lt;br /&gt;
       ...              ...     ...                                                                                            ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also see the total number of Track-able Resources (TRES) allowed for each account by running the following command. Please make sure you give the appropriate account that you are looking for. As shown below, there is a concurrent limit of 64 total GPUs for all users not in a contributing faculty group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show assoc account=vulcan format=user,account,qos,grptres&lt;br /&gt;
      User    Account                  QOS       GrpTRES&lt;br /&gt;
---------- ---------- -------------------- -------------&lt;br /&gt;
               vulcan                        gres/gpu=64&lt;br /&gt;
                  ...                                ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==QoS==&lt;br /&gt;
You need to decide the QOS to submit with which will set a certain number of restrictions to your job.  If you do not specify a QoS when submitting your job using the &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; parameter, you will receive the &#039;&#039;&#039;vulcan-default&#039;&#039;&#039; QoS assuming you are using a Vulcan account.&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;sacctmgr&amp;lt;/code&amp;gt; command will list the current QOS.  Either the &amp;lt;code&amp;gt;vulcan-default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vulcan-medium&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;vulcan-high&amp;lt;/code&amp;gt; QOS is required for the vulcan-dpart partition.  Please note that only faculty accounts (see above) have access to the &amp;lt;code&amp;gt;vulcan-high&amp;lt;/code&amp;gt; QoS.&lt;br /&gt;
&lt;br /&gt;
The following example will show you the current limits that the QOS have. The output is truncated to show only relevant Vulcan QoS.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
...&lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4                                &lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2                                &lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                &lt;br /&gt;
        vulcan-janus  3-00:00:00    cpu=32,gres/gpu=10,mem=256G                                          &lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48 &lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ show_partition_qos&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
...&lt;br /&gt;
              vulcan         500                                 cpu=1760,mem=15824G &lt;br /&gt;
    vulcan-scavenger         500                                                     &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Storage==&lt;br /&gt;
Vulcan has the following storage available.  Please also review UMIACS [[LocalDataStorage | Local Data Storage]] policies including any volume that is labeled as scratch.&lt;br /&gt;
&lt;br /&gt;
Vulcan users can also request [[Nexus#Project_Allocations | Nexus project allocations]].&lt;br /&gt;
&lt;br /&gt;
===Home Directory===&lt;br /&gt;
You have 30GB of storage available at &amp;lt;code&amp;gt;/nfshomes/&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt;. It has both [[Snapshots]] and [[TSM | Backups]] available if need be.&lt;br /&gt;
&lt;br /&gt;
Home directories are intended to store personal or configuration files only.  We encourage users to not share any data in their home directory.&lt;br /&gt;
&lt;br /&gt;
===Scratch Directories===&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Vulcan compute infrastructure:&lt;br /&gt;
* Network scratch directory&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
====Network Scratch Directory====&lt;br /&gt;
You are allocated 300GB of scratch space via NFS from &amp;lt;code&amp;gt;/vulcanscratch/$username&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;automounted&#039;&#039;&#039; so you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access this.&lt;br /&gt;
&lt;br /&gt;
You may request a temporary increase of up to 500GB total space for a maximum of 120 days without any faculty approval by contacting [mailto:staff@umiacs.umd.edu staff@umiacs.umd.edu].  Once the temporary increase period is over, you will be contacted and given a one-week window of opportunity to clean and secure your data before staff will forcibly remove data to get your space back under 300GB.  If you need space beyond 500GB or for longer than 120 days, you will need faculty approval and/or a project directory.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
====Local Scratch Directories====&lt;br /&gt;
Each computational node that you can schedule compute jobs on has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc.  These are almost always more performant than any other storage available to the job.  However, you must stage their data within the confine of their job and stage the data out before the end of their job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month at 1am.  Different nodes will run the maintenance jobs on different days of the month to ensure the cluster is still highly available at all times.  Please make sure you secure any data you write to these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
===Datasets===&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/vulcan-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The following is the list of datasets available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Dataset&lt;br /&gt;
! Path&lt;br /&gt;
|-&lt;br /&gt;
| 3D-FRONT&lt;br /&gt;
| /fs/vulcan-datasets/3d-front&lt;br /&gt;
|-&lt;br /&gt;
| 3D-FUTURE&lt;br /&gt;
| /fs/vulcan-datasets/3d-future&lt;br /&gt;
|-&lt;br /&gt;
| Action Genome&lt;br /&gt;
| /fs/vulcan-datasets/AG&lt;br /&gt;
|-&lt;br /&gt;
| ActivityNet&lt;br /&gt;
| /fs/vulcan-datasets/ActivityNet&lt;br /&gt;
|-&lt;br /&gt;
| CATER&lt;br /&gt;
| /fs/vulcan-datasets/CATER&lt;br /&gt;
|-&lt;br /&gt;
| COVID-DA&lt;br /&gt;
| /fs/vulcan-datasets/COVID-DA&lt;br /&gt;
|-&lt;br /&gt;
| CelebA&lt;br /&gt;
| /fs/vulcan-datasets/CelebA&lt;br /&gt;
|-&lt;br /&gt;
| CelebA-HQ&lt;br /&gt;
| /fs/vulcan-datasets/CelebA-HQ&lt;br /&gt;
|-&lt;br /&gt;
| CelebAMask-HQ&lt;br /&gt;
| /fs/vulcan-datasets/CelebAMask-HQ&lt;br /&gt;
|-&lt;br /&gt;
| Charades&lt;br /&gt;
| /fs/vulcan-datasets/Charades&lt;br /&gt;
|-&lt;br /&gt;
| CharadesEgo&lt;br /&gt;
| /fs/vulcan-datasets/CharadesEgo&lt;br /&gt;
|-&lt;br /&gt;
| CIFAR10&lt;br /&gt;
| /fs/vulcan-datasets/cifar-10-python&lt;br /&gt;
|-&lt;br /&gt;
| CIFAR100&lt;br /&gt;
| /fs/vulcan-datasets/cifar-100-python&lt;br /&gt;
|-&lt;br /&gt;
| CityScapes&lt;br /&gt;
| /fs/vulcan-datasets/cityscapes&lt;br /&gt;
|-&lt;br /&gt;
| COCO&lt;br /&gt;
| /fs/vulcan-datasets/coco&lt;br /&gt;
|-&lt;br /&gt;
| Conceptual Captions&lt;br /&gt;
| /fs/vulcan-datasets/conceptual_captions&lt;br /&gt;
|-&lt;br /&gt;
| CUB&lt;br /&gt;
| /fs/vulcan-datasets/CUB&lt;br /&gt;
|-&lt;br /&gt;
| DeepFashion&lt;br /&gt;
| /fs/vulcan-datasets/DeepFashion&lt;br /&gt;
|-&lt;br /&gt;
| Digits&lt;br /&gt;
| /fs/vulcan-datasets/digits_full&lt;br /&gt;
|-&lt;br /&gt;
| Edges2handbags&lt;br /&gt;
| /fs/vulcan/datasets/edges2handbags&lt;br /&gt;
|-&lt;br /&gt;
| Edges2shoes&lt;br /&gt;
| /fs/vulcan/datasets/edges2shoes&lt;br /&gt;
|-&lt;br /&gt;
| EGTEA&lt;br /&gt;
| /fs/vulcan/datasets/EGTEA&lt;br /&gt;
|-&lt;br /&gt;
| emnist&lt;br /&gt;
| /fs/vulcan-datasets/emnist&lt;br /&gt;
|-&lt;br /&gt;
| EPIC Kitchens 2018&lt;br /&gt;
| /fs/vulcan-datasets/Epics-kitchen-2018&lt;br /&gt;
|-&lt;br /&gt;
| EPIC Kitchens 2020&lt;br /&gt;
| /fs/vulcan-datasets/EPIC-Kitchens-2020&lt;br /&gt;
|-&lt;br /&gt;
| Facades&lt;br /&gt;
| /fs/vulcan/datasets/facades&lt;br /&gt;
|-&lt;br /&gt;
| from_games (GTA5)&lt;br /&gt;
| /fs/vulcan-datasets/from_games&lt;br /&gt;
|-&lt;br /&gt;
| FFHQ&lt;br /&gt;
| /fs/vulcan-datasets/ffhq-dataset&lt;br /&gt;
|-&lt;br /&gt;
| FineGym&lt;br /&gt;
| /fs/vulcan-datasets/FineGym&lt;br /&gt;
|-&lt;br /&gt;
| Google Landmarks Dataset v2&lt;br /&gt;
| /fs/vulcan-datasets/google-landmark-v2&lt;br /&gt;
|-&lt;br /&gt;
| HAA500&lt;br /&gt;
| /fs/vulcan-datasets/haa500&lt;br /&gt;
|-&lt;br /&gt;
| HICO&lt;br /&gt;
| /fs/vulcan-datasets/HICO&lt;br /&gt;
|-&lt;br /&gt;
| HMDB51&lt;br /&gt;
| /fs/vulcan-datasets/HMDB51&lt;br /&gt;
|-&lt;br /&gt;
| Honda_100h&lt;br /&gt;
| /fs/vulcan-datasets/honda_100h&lt;br /&gt;
|-&lt;br /&gt;
| HPatches&lt;br /&gt;
| /fs/vulcan-datasets/HPatches&lt;br /&gt;
|-&lt;br /&gt;
| Human3.6M&lt;br /&gt;
| /fs/vulcan-datasets/human3.6&lt;br /&gt;
|-&lt;br /&gt;
| IM2GPS (test only)&lt;br /&gt;
| /fs/vulcan-datasets/im2gps&lt;br /&gt;
|-&lt;br /&gt;
| ImageNet&lt;br /&gt;
| /fs/vulcan-datasets/imagenet&lt;br /&gt;
|-&lt;br /&gt;
| iNaturalist Dataset 2021&lt;br /&gt;
| /fs/vulcan-datasets/inat_comp_2021&lt;br /&gt;
|-&lt;br /&gt;
| InteriorNet&lt;br /&gt;
| /fs/vulcan-datasets/InteriorNet&lt;br /&gt;
|-&lt;br /&gt;
| Kinetics-400&lt;br /&gt;
| /fs/vulcan-datasets/Kinetics-400&lt;br /&gt;
|-&lt;br /&gt;
| Labelled Faces in the Wild&lt;br /&gt;
| /fs/vulcan-datasets/lfw&lt;br /&gt;
|-&lt;br /&gt;
| LibriSpeech&lt;br /&gt;
| /fs/vulcan-datasets/LibriSpeech&lt;br /&gt;
|-&lt;br /&gt;
| LSUN&lt;br /&gt;
| /fs/vulcan-datasets/LSUN&lt;br /&gt;
|-&lt;br /&gt;
| LVIS&lt;br /&gt;
| /fs/vulcan-datasets/LVIS&lt;br /&gt;
|-&lt;br /&gt;
| Maps&lt;br /&gt;
| /fs/vulcan-datasets/maps&lt;br /&gt;
|-&lt;br /&gt;
| Matterport3D&lt;br /&gt;
| /fs/vulcan-datasets/Matterport3D&lt;br /&gt;
|-&lt;br /&gt;
| MegaDepth&lt;br /&gt;
| /fs/vulcan-datasets/MegaDepth&lt;br /&gt;
|-&lt;br /&gt;
| MineRL&lt;br /&gt;
| /fs/vulcan-datasets/MineRL&lt;br /&gt;
|-&lt;br /&gt;
| Mini-ImageNet&lt;br /&gt;
| /fs/vulcan-datasets/miniImagenet&lt;br /&gt;
|-&lt;br /&gt;
| MIT Indoor&lt;br /&gt;
| /fs/vulcan-datasets/mit_indoor&lt;br /&gt;
|-&lt;br /&gt;
| MIT Places&lt;br /&gt;
| /fs/vulcan-datasets/mit_places&lt;br /&gt;
|-&lt;br /&gt;
| Multi-PIE Face&lt;br /&gt;
| /fs/vulcan-datasets/multipie&lt;br /&gt;
|-&lt;br /&gt;
| Night2day&lt;br /&gt;
| /fs/vulcan-datasets/night2day&lt;br /&gt;
|-&lt;br /&gt;
| ObjectNet3D&lt;br /&gt;
| /fs/vulcan-datasets/ObjectNet3D&lt;br /&gt;
|-&lt;br /&gt;
| Occluded Video Instance Segmentation&lt;br /&gt;
| /fs/vulcan-datasets/ovis-2021&lt;br /&gt;
|-&lt;br /&gt;
| Office&lt;br /&gt;
| /fs/vulcan-datasets/office&lt;br /&gt;
|-&lt;br /&gt;
| Office-Home&lt;br /&gt;
| /fs/vulcan-datasets/office_home&lt;br /&gt;
|-&lt;br /&gt;
| omniglot&lt;br /&gt;
| /fs/vulcan-datasets/omniglot&lt;br /&gt;
|-&lt;br /&gt;
| OOPS&lt;br /&gt;
| /fs/vulcan-datasets/OOPS&lt;br /&gt;
|-&lt;br /&gt;
| OpenImagesv4&lt;br /&gt;
| /fs/vulcan-datasets/OpenImagesv4&lt;br /&gt;
|-&lt;br /&gt;
| PartNet&lt;br /&gt;
| /fs/vulcan-datasets/PartNet&lt;br /&gt;
|-&lt;br /&gt;
| Pascal VOC&lt;br /&gt;
| /fs/vulcan-datasets/pascal_voc&lt;br /&gt;
|-&lt;br /&gt;
| PIC (HOI-A)&lt;br /&gt;
| /fs/vulcan-datasets/PIC&lt;br /&gt;
|-&lt;br /&gt;
| PubLayNet&lt;br /&gt;
| /fs/vulcan-datasets/PubLayNet&lt;br /&gt;
|-&lt;br /&gt;
| Replica&lt;br /&gt;
| /fs/vulcan-datasets/Replica&lt;br /&gt;
|-&lt;br /&gt;
| ScanNet&lt;br /&gt;
| /fs/vulcan-datasets/ScanNet&lt;br /&gt;
|-&lt;br /&gt;
| ShapeNetCore.v2&lt;br /&gt;
| /fs/vulcan-datasets/ShapeNetCore.v2&lt;br /&gt;
|-&lt;br /&gt;
| Something-Something-V1&lt;br /&gt;
| /fs/vulcan-datasets/SomethingV1&lt;br /&gt;
|-&lt;br /&gt;
| Something-Something-V2&lt;br /&gt;
| /fs/vulcan-datasets/SomethingV2&lt;br /&gt;
|-&lt;br /&gt;
| SYNTHIA-RAND-CITYSCAPES&lt;br /&gt;
| /fs/vulcan-datasets/SYNTHIA-RAND-CITYSCAPES&lt;br /&gt;
|-&lt;br /&gt;
| TAPOS&lt;br /&gt;
| /fs/vulcan-datasets/TAPOS&lt;br /&gt;
|-&lt;br /&gt;
| Tiny ImageNet&lt;br /&gt;
| /fs/vulcan-datasets/tiny_imagenet&lt;br /&gt;
|-&lt;br /&gt;
| Tumblr GIF Description&lt;br /&gt;
| /fs/vulcan-datasets/TGIF&lt;br /&gt;
|-&lt;br /&gt;
| Thingi10K&lt;br /&gt;
| /fs/vulcan-datasets/Thingi10K&lt;br /&gt;
|-&lt;br /&gt;
| UCF101&lt;br /&gt;
| /fs/vulcan-datasets/UCF101&lt;br /&gt;
|-&lt;br /&gt;
| VirtualHomes&lt;br /&gt;
| /fs/vulcan-datasets/VirtualHomes&lt;br /&gt;
|-&lt;br /&gt;
| visda17&lt;br /&gt;
| /fs/vulcan-datasets/visda17&lt;br /&gt;
|-&lt;br /&gt;
| visda17_openset &lt;br /&gt;
| /fs/vulcan-datasets/VISDA&lt;br /&gt;
|-&lt;br /&gt;
| visda19&lt;br /&gt;
| /fs/vulcan-datasets/visda&lt;br /&gt;
|-&lt;br /&gt;
| Visual Genome&lt;br /&gt;
| /fs/vulcan-datasets/VG&lt;br /&gt;
|-&lt;br /&gt;
| Visual Relationship Detection&lt;br /&gt;
| /fs/vulcan-datasets/VRD&lt;br /&gt;
|-&lt;br /&gt;
| VOCdevkit&lt;br /&gt;
| /fs/vulcan-datasets/VOCdevkit&lt;br /&gt;
|-&lt;br /&gt;
| VoxCeleb2&lt;br /&gt;
| /fs/vulcan-datasets/VoxCeleb2&lt;br /&gt;
|-&lt;br /&gt;
| WILDS&lt;br /&gt;
| /fs/vulcan-datasets/WILDS&lt;br /&gt;
|-&lt;br /&gt;
| xView2&lt;br /&gt;
| /fs/vulcan-datasets/xView2&lt;br /&gt;
|-&lt;br /&gt;
| YCB Object Models&lt;br /&gt;
| /fs/vulcan-datasets/YCB&lt;br /&gt;
|-&lt;br /&gt;
| YouTube8M&lt;br /&gt;
| /fs/vulcan-datasets/YouTube8M&lt;br /&gt;
|-&lt;br /&gt;
| YouTubeVIS-2019&lt;br /&gt;
| /fs/vulcan-datasets/YouTubeVIS-2019&lt;br /&gt;
|-&lt;br /&gt;
| YouTubeVIS-2021&lt;br /&gt;
| /fs/vulcan-datasets/YouTubeVIS-2021&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Project Storage===&lt;br /&gt;
Users within the Vulcan compute infrastructure can request project based allocations for up to 10TB for up to 180 days by [https://wiki.umiacs.umd.edu/umiacs/index.php/HelpDesk contacting staff] with approval from the Vulcan faculty manager (Dr. Shrivastava).  These allocations will be available from &amp;lt;code&amp;gt;/fs/vulcan-projects&amp;lt;/code&amp;gt; under a name that you provide when you request the allocation.  Near the end of the allocation period, staff will contact you and ask if you would like to renew the allocation for up to another 180 days (requires re-approval from Dr. Shrivastava).  If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.  If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible. If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible. If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
This data, by default, will be backed up nightly and have a limited snapshot schedule (1 daily snapshot). Upon request, staff can both exclude the data from backups and/or disable snapshots on the project storage volume. We currently have 100TB total to support these projects which includes the snapshot data for this volume.&lt;br /&gt;
&lt;br /&gt;
===Object Storage===&lt;br /&gt;
All Vulcan users can request project allocations in the [https://obj.umiacs.umd.edu/obj/help UMIACS Object Store]. Please email staff@umiacs.umd.edu with a short project name and the amount of storage you will need to get started.&lt;br /&gt;
&lt;br /&gt;
An example on how to use the umobj command line utilities can be found [https://wiki.umiacs.umd.edu/umiacs/index.php/UMobj/Example here].  A full set of documentation for the utilities can be found on the [https://gitlab.umiacs.umd.edu/staff/umobj/blob/master/README.md#umobj umobj Gitlab page].&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
Each event will be completed within the timeframe specified.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
| July 21st 2023&lt;br /&gt;
| Two compute nodes &amp;lt;code&amp;gt;vulcan11&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vulcan12&amp;lt;/code&amp;gt; are moved into Nexus so submission can be tested&lt;br /&gt;
|-&lt;br /&gt;
| [[MonthlyMaintenanceWindow | August 17th 2023, 5-8pm]]&lt;br /&gt;
| All other standalone Vulcan cluster compute nodes are moved into Nexus in corresponding &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; named partitions&lt;br /&gt;
|- &lt;br /&gt;
| [[MonthlyMaintenanceWindow | September 21st 2023, 5-8pm]]&lt;br /&gt;
| &amp;lt;code&amp;gt;vulcansub00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vulcansub01.umiacs.umd.edu&amp;lt;/code&amp;gt; are taken offline&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Migration==&lt;br /&gt;
===Home Directories===&lt;br /&gt;
The [[Nexus]] uses [[NFShomes]] home directories - if your UMIACS account was created before February 22nd, 2023, you were using &amp;lt;code&amp;gt;/cfarhomes/&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; as your home directory on the standalone Vulcan cluster. While &amp;lt;code&amp;gt;/cfarhomes&amp;lt;/code&amp;gt; is available on Nexus, your shell initialization scripts from it will not automatically load. Please copy over anything you need to your &amp;lt;code&amp;gt;/nfshomes/&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; directory at your earliest convenience, as &amp;lt;code&amp;gt;/cfarhomes&amp;lt;/code&amp;gt; will be retired in a two phase process:&lt;br /&gt;
* Fri 11/17/2023, 5pm: cfarhomes directories are made read-only&lt;br /&gt;
* Thu 12/21/2023, 5pm ([[MonthlyMaintenanceWindow |monthly maintenance window]]): cfarhomes directories are taken offline&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Vulcan&amp;diff=11327</id>
		<title>Nexus/Vulcan</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus/Vulcan&amp;diff=11327"/>
		<updated>2023-09-22T15:45:45Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* QoS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [https://wiki.umiacs.umd.edu/cfar/index.php/Vulcan Vulcan] standalone cluster&#039;s compute nodes have folded into [[Nexus]] as of the scheduled [[MonthlyMaintenanceWindow | maintenance window]] for August 2023 (Thursday 08/17/2023, 5-8pm).&lt;br /&gt;
&lt;br /&gt;
The Nexus cluster already has a large pool of compute resources made possible through leftover funding for the [[Iribe | Brendan Iribe Center]]. Details on common nodes already in the cluster (Tron partition) can be found [[Nexus/Tron | here]].&lt;br /&gt;
&lt;br /&gt;
The Vulcan cluster&#039;s standalone submission nodes &amp;lt;code&amp;gt;vulcansub00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vulcansub01.umiacs.umd.edu&amp;lt;/code&amp;gt; will be retired on Thursday, September 21st, 2023 during that month&#039;s maintenance window (5-8pm), as they are no longer able to submit jobs to Vulcan compute nodes. Please use &amp;lt;code&amp;gt;nexusvulcan00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nexusvulcan01.umiacs.umd.edu&amp;lt;/code&amp;gt; for any general purpose Vulcan compute needs after this time.&lt;br /&gt;
&lt;br /&gt;
Please see the [[#Timeline | Timeline]] section below for concrete dates in chronological order.&lt;br /&gt;
&lt;br /&gt;
Please [[HelpDesk | contact staff]] with any questions or concerns.&lt;br /&gt;
&lt;br /&gt;
==Usage==&lt;br /&gt;
The Nexus cluster submission nodes that are allocated to Vulcan are &amp;lt;code&amp;gt;nexusvulcan00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;nexusvulcan01.umiacs.umd.edu&amp;lt;/code&amp;gt;. &#039;&#039;&#039;You must use these nodes to submit jobs to Vulcan compute nodes.&#039;&#039;&#039; Submission from &amp;lt;code&amp;gt;vulcansub00.umiacs.umd.edu&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;vulcansub01.umiacs.umd.edu&amp;lt;/code&amp;gt; is no longer available.&lt;br /&gt;
&lt;br /&gt;
All partitions, QoSes, and account names from the standalone Vulcan cluster have been moved over to Nexus. However, please note that &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; is prepended to all of the values that were present in the standalone Vulcan cluster to distinguish them from existing values in Nexus. The lone exception is the base account that was named &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; in the standalone cluster (it is also named just &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; in Nexus).&lt;br /&gt;
&lt;br /&gt;
Here are some before/after examples of job submission with various parameters:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Standalone Vulcan cluster submission command&lt;br /&gt;
! Nexus cluster submission command&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=dpart --qos=medium --account=abhinav --gres=gpu:rtxa4000:2 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=vulcan-dpart --qos=vulcan-medium --account=vulcan-abhinav --gres=gpu:rtxa4000:2 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=cpu --qos=cpu --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=vulcan-cpu --qos=vulcan-cpu --account=vulcan --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=scavenger --qos=scavenger --account=vulcan --gres=gpu:4 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|&amp;lt;code&amp;gt;srun --partition=vulcan-scavenger --qos=vulcan-scavenger --account=vulcan --gres=gpu:4 --pty bash&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Vulcan users (exclusively) can schedule non-interruptible jobs on Vulcan nodes with any non-scavenger job parameters. Please note that the &amp;lt;code&amp;gt;vulcan-dpart&amp;lt;/code&amp;gt; partition has a &amp;lt;code&amp;gt;GrpTRES&amp;lt;/code&amp;gt; limit of 100% of the available cores/RAM on all vulcan## in aggregate nodes plus 50% of the available cores/RAM on legacy## nodes in aggregate, so your job may need to wait if all available cores/RAM (or GPUs) are in use. It also has a max submission limit of 500 jobs per user simultaneously so as to not overload the cluster. This is codified by the partition QoS named &#039;&#039;&#039;vulcan&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Please note that the Vulcan compute nodes are also in the institute-wide &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition in Nexus. Vulcan users still have scavenging priority over these nodes via the &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt; partition (i.e., all &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; partition jobs (other than &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt;) can preempt both &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition jobs, and &amp;lt;code&amp;gt;vulcan-scavenger&amp;lt;/code&amp;gt; partition jobs can preempt &amp;lt;code&amp;gt;scavenger&amp;lt;/code&amp;gt; partition jobs).&lt;br /&gt;
&lt;br /&gt;
==Nodes==&lt;br /&gt;
There are currently 45 [[Nexus/Vulcan/GPUs | GPU nodes]] available running a mixture of NVIDIA RTX A6000, NVIDIA RTX A5000, NVIDIA RTX A4000, NVIDIA Quadro P6000, NVIDIA GeForce GTX 1080 Ti, NVIDIA GeForce RTX 2080 Ti, and NVIDIA Tesla P100 cards. There are also 2 CPU-only nodes available.&lt;br /&gt;
&lt;br /&gt;
All nodes are scheduled with the [[SLURM]] resource manager.  &lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
There are three partitions available to general Vulcan [[SLURM]] users.  You must specify a partition when submitting your job.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;vulcan-dpart&#039;&#039;&#039; - This is the default partition. Job allocations are guaranteed.&lt;br /&gt;
* &#039;&#039;&#039;vulcan-scavenger&#039;&#039;&#039; - This is the alternate partition that allows jobs longer run times and more resources but is preemptable when jobs in other &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; partitions are ready to be scheduled.&lt;br /&gt;
* &#039;&#039;&#039;vulcan-cpu&#039;&#039;&#039; - This partition is for CPU focused jobs. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
There are a few additional partitions available to subsets of Vulcan users based on specific requirements.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
Vulcan has a base SLURM account &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; which has a modest number of guaranteed billing resources available to all cluster users at any given time.  Other faculty that have invested in Vulcan compute infrastructure have an additional account provided to their sponsored accounts on the cluster, which provides a number of guaranteed billing resources corresponding to the amount that they invested.&lt;br /&gt;
&lt;br /&gt;
If you do not specify an account when submitting your job, you will receive the &amp;lt;code&amp;gt;vulcan&amp;lt;/code&amp;gt; account.  If your faculty sponsor has their own account, it is recommended to use that account for job submission.&lt;br /&gt;
&lt;br /&gt;
The current faculty accounts are:&lt;br /&gt;
* vulcan-abhinav&lt;br /&gt;
* vulcan-djacobs&lt;br /&gt;
* vulcan-jbhuang&lt;br /&gt;
* vulcan-lsd&lt;br /&gt;
* vulcan-metzler&lt;br /&gt;
* vulcan-rama&lt;br /&gt;
* vulcan-ramani&lt;br /&gt;
* vulcan-yaser&lt;br /&gt;
* vulcan-zwicker&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show account format=account%20,description%30,organization%10&lt;br /&gt;
             Account                          Descr        Org&lt;br /&gt;
-------------------- ------------------------------ ----------&lt;br /&gt;
                 ...                            ...        ...&lt;br /&gt;
              vulcan                         vulcan     vulcan&lt;br /&gt;
      vulcan-abhinav   vulcan - abhinav shrivastava     vulcan&lt;br /&gt;
      vulcan-djacobs          vulcan - david jacobs     vulcan&lt;br /&gt;
      vulcan-jbhuang         vulcan - jia-bin huang     vulcan&lt;br /&gt;
          vulcan-lsd           vulcan - larry davis     vulcan&lt;br /&gt;
      vulcan-metzler         vulcan - chris metzler     vulcan&lt;br /&gt;
         vulcan-rama        vulcan - rama chellappa     vulcan&lt;br /&gt;
       vulcan-ramani     vulcan - ramani duraiswami     vulcan&lt;br /&gt;
        vulcan-yaser          vulcan - yaser yacoob     vulcan&lt;br /&gt;
      vulcan-zwicker      vulcan - matthias zwicker     vulcan&lt;br /&gt;
                 ...                            ...        ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Faculty can manage this list of users via our [https://intranet.umiacs.umd.edu/directory/secgroup/ Directory application] in the Security Groups section.  The security group that controls access has the prefix &amp;lt;code&amp;gt;vulcan_&amp;lt;/code&amp;gt; and then the faculty username.  It will also list &amp;lt;code&amp;gt;slurm://nexusctl.umiacs.umd.edu&amp;lt;/code&amp;gt; as the associated URI.&lt;br /&gt;
&lt;br /&gt;
You can check your account associations by running the &#039;&#039;&#039;show_assoc&#039;&#039;&#039; command to see the accounts you are associated with.  Please [[HelpDesk | contact staff]] and include your faculty member in the conversation if you do not see the appropriate association. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_assoc&lt;br /&gt;
      User          Account MaxJobs       GrpTRES                                                                              QOS&lt;br /&gt;
---------- ---------------- ------- ------------- --------------------------------------------------------------------------------&lt;br /&gt;
       ...              ...     ...                                                                                            ...&lt;br /&gt;
   abhinav          abhinav      48                           vulcan-cpu,vulcan-default,vulcan-high,vulcan-medium,vulcan-scavenger&lt;br /&gt;
   abhinav           vulcan      48                                       vulcan-cpu,vulcan-default,vulcan-medium,vulcan-scavenger&lt;br /&gt;
       ...              ...     ...                                                                                            ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also see the total number of Track-able Resources (TRES) allowed for each account by running the following command. Please make sure you give the appropriate account that you are looking for. As shown below, there is a concurrent limit of 64 total GPUs for all users not in a contributing faculty group.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show assoc account=vulcan format=user,account,qos,grptres&lt;br /&gt;
      User    Account                  QOS       GrpTRES&lt;br /&gt;
---------- ---------- -------------------- -------------&lt;br /&gt;
               vulcan                        gres/gpu=64&lt;br /&gt;
                  ...                                ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==QoS==&lt;br /&gt;
You need to decide the QOS to submit with which will set a certain number of restrictions to your job.  If you do not specify a QoS when submitting your job using the &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; parameter, you will receive the &#039;&#039;&#039;vulcan-default&#039;&#039;&#039; QoS assuming you are using a Vulcan account.&lt;br /&gt;
&lt;br /&gt;
The following &amp;lt;code&amp;gt;sacctmgr&amp;lt;/code&amp;gt; command will list the current QOS.  Either the &amp;lt;code&amp;gt;vulcan-default&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;vulcan-medium&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;vulcan-high&amp;lt;/code&amp;gt; QOS is required for the vulcan-dpart partition.  Please note that only faculty accounts (see above) have access to the &amp;lt;code&amp;gt;vulcan-high&amp;lt;/code&amp;gt; QoS.&lt;br /&gt;
&lt;br /&gt;
The following example will show you the current limits that the QOS have. The output is truncated to show only relevant Vulcan QoS.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_qos --all&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
...&lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4                                &lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2                                &lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                &lt;br /&gt;
        vulcan-janus  3-00:00:00    cpu=32,gres/gpu=10,mem=256G                                          &lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48 &lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
$ show_partition_qos --all&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
...&lt;br /&gt;
              vulcan         500                                 cpu=1760,mem=15824G &lt;br /&gt;
    vulcan-scavenger         500                                                     &lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Storage==&lt;br /&gt;
Vulcan has the following storage available.  Please also review UMIACS [[LocalDataStorage | Local Data Storage]] policies including any volume that is labeled as scratch.&lt;br /&gt;
&lt;br /&gt;
Vulcan users can also request [[Nexus#Project_Allocations | Nexus project allocations]].&lt;br /&gt;
&lt;br /&gt;
===Home Directory===&lt;br /&gt;
You have 30GB of storage available at &amp;lt;code&amp;gt;/nfshomes/&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt;. It has both [[Snapshots]] and [[TSM | Backups]] available if need be.&lt;br /&gt;
&lt;br /&gt;
Home directories are intended to store personal or configuration files only.  We encourage users to not share any data in their home directory.&lt;br /&gt;
&lt;br /&gt;
===Scratch Directories===&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Vulcan compute infrastructure:&lt;br /&gt;
* Network scratch directory&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
====Network Scratch Directory====&lt;br /&gt;
You are allocated 300GB of scratch space via NFS from &amp;lt;code&amp;gt;/vulcanscratch/$username&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;automounted&#039;&#039;&#039; so you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access this.&lt;br /&gt;
&lt;br /&gt;
You may request a temporary increase of up to 500GB total space for a maximum of 120 days without any faculty approval by contacting [mailto:staff@umiacs.umd.edu staff@umiacs.umd.edu].  Once the temporary increase period is over, you will be contacted and given a one-week window of opportunity to clean and secure your data before staff will forcibly remove data to get your space back under 300GB.  If you need space beyond 500GB or for longer than 120 days, you will need faculty approval and/or a project directory.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
====Local Scratch Directories====&lt;br /&gt;
Each computational node that you can schedule compute jobs on has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc.  These are almost always more performant than any other storage available to the job.  However, you must stage their data within the confine of their job and stage the data out before the end of their job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month at 1am.  Different nodes will run the maintenance jobs on different days of the month to ensure the cluster is still highly available at all times.  Please make sure you secure any data you write to these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
===Datasets===&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/vulcan-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The following is the list of datasets available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Dataset&lt;br /&gt;
! Path&lt;br /&gt;
|-&lt;br /&gt;
| 3D-FRONT&lt;br /&gt;
| /fs/vulcan-datasets/3d-front&lt;br /&gt;
|-&lt;br /&gt;
| 3D-FUTURE&lt;br /&gt;
| /fs/vulcan-datasets/3d-future&lt;br /&gt;
|-&lt;br /&gt;
| Action Genome&lt;br /&gt;
| /fs/vulcan-datasets/AG&lt;br /&gt;
|-&lt;br /&gt;
| ActivityNet&lt;br /&gt;
| /fs/vulcan-datasets/ActivityNet&lt;br /&gt;
|-&lt;br /&gt;
| CATER&lt;br /&gt;
| /fs/vulcan-datasets/CATER&lt;br /&gt;
|-&lt;br /&gt;
| COVID-DA&lt;br /&gt;
| /fs/vulcan-datasets/COVID-DA&lt;br /&gt;
|-&lt;br /&gt;
| CelebA&lt;br /&gt;
| /fs/vulcan-datasets/CelebA&lt;br /&gt;
|-&lt;br /&gt;
| CelebA-HQ&lt;br /&gt;
| /fs/vulcan-datasets/CelebA-HQ&lt;br /&gt;
|-&lt;br /&gt;
| CelebAMask-HQ&lt;br /&gt;
| /fs/vulcan-datasets/CelebAMask-HQ&lt;br /&gt;
|-&lt;br /&gt;
| Charades&lt;br /&gt;
| /fs/vulcan-datasets/Charades&lt;br /&gt;
|-&lt;br /&gt;
| CharadesEgo&lt;br /&gt;
| /fs/vulcan-datasets/CharadesEgo&lt;br /&gt;
|-&lt;br /&gt;
| CIFAR10&lt;br /&gt;
| /fs/vulcan-datasets/cifar-10-python&lt;br /&gt;
|-&lt;br /&gt;
| CIFAR100&lt;br /&gt;
| /fs/vulcan-datasets/cifar-100-python&lt;br /&gt;
|-&lt;br /&gt;
| CityScapes&lt;br /&gt;
| /fs/vulcan-datasets/cityscapes&lt;br /&gt;
|-&lt;br /&gt;
| COCO&lt;br /&gt;
| /fs/vulcan-datasets/coco&lt;br /&gt;
|-&lt;br /&gt;
| Conceptual Captions&lt;br /&gt;
| /fs/vulcan-datasets/conceptual_captions&lt;br /&gt;
|-&lt;br /&gt;
| CUB&lt;br /&gt;
| /fs/vulcan-datasets/CUB&lt;br /&gt;
|-&lt;br /&gt;
| DeepFashion&lt;br /&gt;
| /fs/vulcan-datasets/DeepFashion&lt;br /&gt;
|-&lt;br /&gt;
| Digits&lt;br /&gt;
| /fs/vulcan-datasets/digits_full&lt;br /&gt;
|-&lt;br /&gt;
| Edges2handbags&lt;br /&gt;
| /fs/vulcan/datasets/edges2handbags&lt;br /&gt;
|-&lt;br /&gt;
| Edges2shoes&lt;br /&gt;
| /fs/vulcan/datasets/edges2shoes&lt;br /&gt;
|-&lt;br /&gt;
| EGTEA&lt;br /&gt;
| /fs/vulcan/datasets/EGTEA&lt;br /&gt;
|-&lt;br /&gt;
| emnist&lt;br /&gt;
| /fs/vulcan-datasets/emnist&lt;br /&gt;
|-&lt;br /&gt;
| EPIC Kitchens 2018&lt;br /&gt;
| /fs/vulcan-datasets/Epics-kitchen-2018&lt;br /&gt;
|-&lt;br /&gt;
| EPIC Kitchens 2020&lt;br /&gt;
| /fs/vulcan-datasets/EPIC-Kitchens-2020&lt;br /&gt;
|-&lt;br /&gt;
| Facades&lt;br /&gt;
| /fs/vulcan/datasets/facades&lt;br /&gt;
|-&lt;br /&gt;
| from_games (GTA5)&lt;br /&gt;
| /fs/vulcan-datasets/from_games&lt;br /&gt;
|-&lt;br /&gt;
| FFHQ&lt;br /&gt;
| /fs/vulcan-datasets/ffhq-dataset&lt;br /&gt;
|-&lt;br /&gt;
| FineGym&lt;br /&gt;
| /fs/vulcan-datasets/FineGym&lt;br /&gt;
|-&lt;br /&gt;
| Google Landmarks Dataset v2&lt;br /&gt;
| /fs/vulcan-datasets/google-landmark-v2&lt;br /&gt;
|-&lt;br /&gt;
| HAA500&lt;br /&gt;
| /fs/vulcan-datasets/haa500&lt;br /&gt;
|-&lt;br /&gt;
| HICO&lt;br /&gt;
| /fs/vulcan-datasets/HICO&lt;br /&gt;
|-&lt;br /&gt;
| HMDB51&lt;br /&gt;
| /fs/vulcan-datasets/HMDB51&lt;br /&gt;
|-&lt;br /&gt;
| Honda_100h&lt;br /&gt;
| /fs/vulcan-datasets/honda_100h&lt;br /&gt;
|-&lt;br /&gt;
| HPatches&lt;br /&gt;
| /fs/vulcan-datasets/HPatches&lt;br /&gt;
|-&lt;br /&gt;
| Human3.6M&lt;br /&gt;
| /fs/vulcan-datasets/human3.6&lt;br /&gt;
|-&lt;br /&gt;
| IM2GPS (test only)&lt;br /&gt;
| /fs/vulcan-datasets/im2gps&lt;br /&gt;
|-&lt;br /&gt;
| ImageNet&lt;br /&gt;
| /fs/vulcan-datasets/imagenet&lt;br /&gt;
|-&lt;br /&gt;
| iNaturalist Dataset 2021&lt;br /&gt;
| /fs/vulcan-datasets/inat_comp_2021&lt;br /&gt;
|-&lt;br /&gt;
| InteriorNet&lt;br /&gt;
| /fs/vulcan-datasets/InteriorNet&lt;br /&gt;
|-&lt;br /&gt;
| Kinetics-400&lt;br /&gt;
| /fs/vulcan-datasets/Kinetics-400&lt;br /&gt;
|-&lt;br /&gt;
| Labelled Faces in the Wild&lt;br /&gt;
| /fs/vulcan-datasets/lfw&lt;br /&gt;
|-&lt;br /&gt;
| LibriSpeech&lt;br /&gt;
| /fs/vulcan-datasets/LibriSpeech&lt;br /&gt;
|-&lt;br /&gt;
| LSUN&lt;br /&gt;
| /fs/vulcan-datasets/LSUN&lt;br /&gt;
|-&lt;br /&gt;
| LVIS&lt;br /&gt;
| /fs/vulcan-datasets/LVIS&lt;br /&gt;
|-&lt;br /&gt;
| Maps&lt;br /&gt;
| /fs/vulcan-datasets/maps&lt;br /&gt;
|-&lt;br /&gt;
| Matterport3D&lt;br /&gt;
| /fs/vulcan-datasets/Matterport3D&lt;br /&gt;
|-&lt;br /&gt;
| MegaDepth&lt;br /&gt;
| /fs/vulcan-datasets/MegaDepth&lt;br /&gt;
|-&lt;br /&gt;
| MineRL&lt;br /&gt;
| /fs/vulcan-datasets/MineRL&lt;br /&gt;
|-&lt;br /&gt;
| Mini-ImageNet&lt;br /&gt;
| /fs/vulcan-datasets/miniImagenet&lt;br /&gt;
|-&lt;br /&gt;
| MIT Indoor&lt;br /&gt;
| /fs/vulcan-datasets/mit_indoor&lt;br /&gt;
|-&lt;br /&gt;
| MIT Places&lt;br /&gt;
| /fs/vulcan-datasets/mit_places&lt;br /&gt;
|-&lt;br /&gt;
| Multi-PIE Face&lt;br /&gt;
| /fs/vulcan-datasets/multipie&lt;br /&gt;
|-&lt;br /&gt;
| Night2day&lt;br /&gt;
| /fs/vulcan-datasets/night2day&lt;br /&gt;
|-&lt;br /&gt;
| ObjectNet3D&lt;br /&gt;
| /fs/vulcan-datasets/ObjectNet3D&lt;br /&gt;
|-&lt;br /&gt;
| Occluded Video Instance Segmentation&lt;br /&gt;
| /fs/vulcan-datasets/ovis-2021&lt;br /&gt;
|-&lt;br /&gt;
| Office&lt;br /&gt;
| /fs/vulcan-datasets/office&lt;br /&gt;
|-&lt;br /&gt;
| Office-Home&lt;br /&gt;
| /fs/vulcan-datasets/office_home&lt;br /&gt;
|-&lt;br /&gt;
| omniglot&lt;br /&gt;
| /fs/vulcan-datasets/omniglot&lt;br /&gt;
|-&lt;br /&gt;
| OOPS&lt;br /&gt;
| /fs/vulcan-datasets/OOPS&lt;br /&gt;
|-&lt;br /&gt;
| OpenImagesv4&lt;br /&gt;
| /fs/vulcan-datasets/OpenImagesv4&lt;br /&gt;
|-&lt;br /&gt;
| PartNet&lt;br /&gt;
| /fs/vulcan-datasets/PartNet&lt;br /&gt;
|-&lt;br /&gt;
| Pascal VOC&lt;br /&gt;
| /fs/vulcan-datasets/pascal_voc&lt;br /&gt;
|-&lt;br /&gt;
| PIC (HOI-A)&lt;br /&gt;
| /fs/vulcan-datasets/PIC&lt;br /&gt;
|-&lt;br /&gt;
| PubLayNet&lt;br /&gt;
| /fs/vulcan-datasets/PubLayNet&lt;br /&gt;
|-&lt;br /&gt;
| Replica&lt;br /&gt;
| /fs/vulcan-datasets/Replica&lt;br /&gt;
|-&lt;br /&gt;
| ScanNet&lt;br /&gt;
| /fs/vulcan-datasets/ScanNet&lt;br /&gt;
|-&lt;br /&gt;
| ShapeNetCore.v2&lt;br /&gt;
| /fs/vulcan-datasets/ShapeNetCore.v2&lt;br /&gt;
|-&lt;br /&gt;
| Something-Something-V1&lt;br /&gt;
| /fs/vulcan-datasets/SomethingV1&lt;br /&gt;
|-&lt;br /&gt;
| Something-Something-V2&lt;br /&gt;
| /fs/vulcan-datasets/SomethingV2&lt;br /&gt;
|-&lt;br /&gt;
| SYNTHIA-RAND-CITYSCAPES&lt;br /&gt;
| /fs/vulcan-datasets/SYNTHIA-RAND-CITYSCAPES&lt;br /&gt;
|-&lt;br /&gt;
| TAPOS&lt;br /&gt;
| /fs/vulcan-datasets/TAPOS&lt;br /&gt;
|-&lt;br /&gt;
| Tiny ImageNet&lt;br /&gt;
| /fs/vulcan-datasets/tiny_imagenet&lt;br /&gt;
|-&lt;br /&gt;
| Tumblr GIF Description&lt;br /&gt;
| /fs/vulcan-datasets/TGIF&lt;br /&gt;
|-&lt;br /&gt;
| Thingi10K&lt;br /&gt;
| /fs/vulcan-datasets/Thingi10K&lt;br /&gt;
|-&lt;br /&gt;
| UCF101&lt;br /&gt;
| /fs/vulcan-datasets/UCF101&lt;br /&gt;
|-&lt;br /&gt;
| VirtualHomes&lt;br /&gt;
| /fs/vulcan-datasets/VirtualHomes&lt;br /&gt;
|-&lt;br /&gt;
| visda17&lt;br /&gt;
| /fs/vulcan-datasets/visda17&lt;br /&gt;
|-&lt;br /&gt;
| visda17_openset &lt;br /&gt;
| /fs/vulcan-datasets/VISDA&lt;br /&gt;
|-&lt;br /&gt;
| visda19&lt;br /&gt;
| /fs/vulcan-datasets/visda&lt;br /&gt;
|-&lt;br /&gt;
| Visual Genome&lt;br /&gt;
| /fs/vulcan-datasets/VG&lt;br /&gt;
|-&lt;br /&gt;
| Visual Relationship Detection&lt;br /&gt;
| /fs/vulcan-datasets/VRD&lt;br /&gt;
|-&lt;br /&gt;
| VOCdevkit&lt;br /&gt;
| /fs/vulcan-datasets/VOCdevkit&lt;br /&gt;
|-&lt;br /&gt;
| VoxCeleb2&lt;br /&gt;
| /fs/vulcan-datasets/VoxCeleb2&lt;br /&gt;
|-&lt;br /&gt;
| WILDS&lt;br /&gt;
| /fs/vulcan-datasets/WILDS&lt;br /&gt;
|-&lt;br /&gt;
| xView2&lt;br /&gt;
| /fs/vulcan-datasets/xView2&lt;br /&gt;
|-&lt;br /&gt;
| YCB Object Models&lt;br /&gt;
| /fs/vulcan-datasets/YCB&lt;br /&gt;
|-&lt;br /&gt;
| YouTube8M&lt;br /&gt;
| /fs/vulcan-datasets/YouTube8M&lt;br /&gt;
|-&lt;br /&gt;
| YouTubeVIS-2019&lt;br /&gt;
| /fs/vulcan-datasets/YouTubeVIS-2019&lt;br /&gt;
|-&lt;br /&gt;
| YouTubeVIS-2021&lt;br /&gt;
| /fs/vulcan-datasets/YouTubeVIS-2021&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Project Storage===&lt;br /&gt;
Users within the Vulcan compute infrastructure can request project based allocations for up to 10TB for up to 180 days by [https://wiki.umiacs.umd.edu/umiacs/index.php/HelpDesk contacting staff] with approval from the Vulcan faculty manager (Dr. Shrivastava).  These allocations will be available from &amp;lt;code&amp;gt;/fs/vulcan-projects&amp;lt;/code&amp;gt; under a name that you provide when you request the allocation.  Near the end of the allocation period, staff will contact you and ask if you would like to renew the allocation for up to another 180 days (requires re-approval from Dr. Shrivastava).  If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.  If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible. If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible. If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
This data, by default, will be backed up nightly and have a limited snapshot schedule (1 daily snapshot). Upon request, staff can both exclude the data from backups and/or disable snapshots on the project storage volume. We currently have 100TB total to support these projects which includes the snapshot data for this volume.&lt;br /&gt;
&lt;br /&gt;
===Object Storage===&lt;br /&gt;
All Vulcan users can request project allocations in the [https://obj.umiacs.umd.edu/obj/help UMIACS Object Store]. Please email staff@umiacs.umd.edu with a short project name and the amount of storage you will need to get started.&lt;br /&gt;
&lt;br /&gt;
An example on how to use the umobj command line utilities can be found [https://wiki.umiacs.umd.edu/umiacs/index.php/UMobj/Example here].  A full set of documentation for the utilities can be found on the [https://gitlab.umiacs.umd.edu/staff/umobj/blob/master/README.md#umobj umobj Gitlab page].&lt;br /&gt;
&lt;br /&gt;
==Timeline==&lt;br /&gt;
Each event will be completed within the timeframe specified.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Date&lt;br /&gt;
! Event&lt;br /&gt;
|-&lt;br /&gt;
| July 21st 2023&lt;br /&gt;
| Two compute nodes &amp;lt;code&amp;gt;vulcan11&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vulcan12&amp;lt;/code&amp;gt; are moved into Nexus so submission can be tested&lt;br /&gt;
|-&lt;br /&gt;
| [[MonthlyMaintenanceWindow | August 17th 2023, 5-8pm]]&lt;br /&gt;
| All other standalone Vulcan cluster compute nodes are moved into Nexus in corresponding &amp;lt;code&amp;gt;vulcan-&amp;lt;/code&amp;gt; named partitions&lt;br /&gt;
|- &lt;br /&gt;
| [[MonthlyMaintenanceWindow | September 21st 2023, 5-8pm]]&lt;br /&gt;
| &amp;lt;code&amp;gt;vulcansub00.umiacs.umd.edu&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;vulcansub01.umiacs.umd.edu&amp;lt;/code&amp;gt; are taken offline&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Migration==&lt;br /&gt;
===Home Directories===&lt;br /&gt;
The [[Nexus]] uses [[NFShomes]] home directories - if your UMIACS account was created before February 22nd, 2023, you were using &amp;lt;code&amp;gt;/cfarhomes/&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; as your home directory on the standalone Vulcan cluster. While &amp;lt;code&amp;gt;/cfarhomes&amp;lt;/code&amp;gt; is available on Nexus, your shell initialization scripts from it will not automatically load. Please copy over anything you need to your &amp;lt;code&amp;gt;/nfshomes/&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; directory at your earliest convenience, as &amp;lt;code&amp;gt;/cfarhomes&amp;lt;/code&amp;gt; will be retired in a two phase process:&lt;br /&gt;
* Fri 11/17/2023, 5pm: cfarhomes directories are made read-only&lt;br /&gt;
* Thu 12/21/2023, 5pm ([[MonthlyMaintenanceWindow |monthly maintenance window]]): cfarhomes directories are taken offline&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobStatus&amp;diff=11326</id>
		<title>SLURM/JobStatus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=SLURM/JobStatus&amp;diff=11326"/>
		<updated>2023-09-22T15:39:20Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Job Codes */ show_partition_qos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Job Status=&lt;br /&gt;
SLURM offers a variety of tools to check the status of your jobs before, during, and after execution. When you first submit your job, SLURM should give you a job ID which represents the resources allocated to your job. Individual calls to srun will spawn job steps which can also be queried individually.&lt;br /&gt;
&lt;br /&gt;
==squeue==&lt;br /&gt;
The squeue command shows job status in the queue. Helpful flags:&lt;br /&gt;
* &amp;lt;code&amp;gt;-u username&amp;lt;/code&amp;gt; to show only your jobs (replace username with your UMIACS username)&lt;br /&gt;
* &amp;lt;code&amp;gt;--start&amp;lt;/code&amp;gt; to estimate start time for a job that has not yet started and the reason why it is waiting&lt;br /&gt;
* &amp;lt;code&amp;gt;-s&amp;lt;/code&amp;gt; to show the status of individual job steps for a job (e.g. batch jobs)&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00:squeue -u username&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
               162     test2 helloWor username  R       0:03      2 tron[00-01]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00:squeue --start -u username&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST          START_TIME  NODES SCHEDNODES           NODELIST(REASON)&lt;br /&gt;
               163     test2 helloWo2 username PD 2020-05-11T18:36:49      1 tron02               (Priority)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00:squeue -s -u username&lt;br /&gt;
         STEPID     NAME PARTITION     USER      TIME NODELIST&lt;br /&gt;
          162.0    sleep     test2 username      0:05 tron00&lt;br /&gt;
          162.1    sleep     test2 username      0:05 tron01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==sstat==&lt;br /&gt;
The sstat command shows metrics from currently running job steps. If you don&#039;t specify a job step, the lowest job step is displayed.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sstat --format JobID,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize &amp;lt;$JOBID&amp;gt;.&amp;lt;$JOBSTEP&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00: sstat --format JobID,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize 171&lt;br /&gt;
       JobID   NTasks             Nodelist     MaxRSS  MaxVMSize     AveRSS  AveVMSize &lt;br /&gt;
------------ -------- -------------------- ---------- ---------- ---------- ---------- &lt;br /&gt;
171.0               1            tron00          0    186060K          0    107900K &lt;br /&gt;
username@nexusclip00: sstat --format JobID,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize 171.1&lt;br /&gt;
       JobID   NTasks             Nodelist     MaxRSS  MaxVMSize     AveRSS  AveVMSize &lt;br /&gt;
------------ -------- -------------------- ---------- ---------- ---------- ---------- &lt;br /&gt;
171.1               1            tron01          0    186060K          0    107900K &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that if you do not have any jobsteps, sstat will return an error.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00: sstat --format JobID,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize 172&lt;br /&gt;
       JobID   NTasks             Nodelist     MaxRSS  MaxVMSize     AveRSS  AveVMSize &lt;br /&gt;
------------ -------- -------------------- ---------- ---------- ---------- ----------&lt;br /&gt;
sstat: error: no steps running for job 237&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If you do not run any srun commands, you will not create any job steps and metrics will not be available for your job. Your batch scripts should follow this format:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH ...&lt;br /&gt;
#SBATCH ...&lt;br /&gt;
# set environment up&lt;br /&gt;
module load ...&lt;br /&gt;
&lt;br /&gt;
# launch job steps&lt;br /&gt;
srun &amp;lt;command to run&amp;gt; # that would be step 1&lt;br /&gt;
srun &amp;lt;command to run&amp;gt; # that would be step 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==sacct==&lt;br /&gt;
The sacct command shows metrics from past jobs.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00:sacct&lt;br /&gt;
       JobID    JobName  Partition    Account  AllocCPUS      State ExitCode &lt;br /&gt;
------------ ---------- ---------- ---------- ---------- ---------- -------- &lt;br /&gt;
162          helloWorld      test2      staff          2  COMPLETED      0:0 &lt;br /&gt;
162.batch         batch                 staff          1  COMPLETED      0:0 &lt;br /&gt;
162.0             sleep                 staff          1  COMPLETED      0:0 &lt;br /&gt;
162.1             sleep                 staff          1  COMPLETED      0:0 &lt;br /&gt;
163          helloWorld      test2      staff          2  COMPLETED      0:0 &lt;br /&gt;
163.batch         batch                 staff          1  COMPLETED      0:0 &lt;br /&gt;
163.0             sleep                 staff          1  COMPLETED      0:0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To check one specific job, you can run something like the following (if you omit .&amp;lt;$JOBSTEP&amp;gt;, all jobsteps will be shown):&lt;br /&gt;
&amp;lt;pre&amp;gt;sacct  --format JobID,jobname,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize,Elapsed -j &amp;lt;$JOBID&amp;gt;.&amp;lt;$JOBSTEP&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
username@nexusclip00:sacct  --format JobID,jobname,NTasks,nodelist,MaxRSS,MaxVMSize,AveRSS,AveVMSize,Elapsed -j 171&lt;br /&gt;
       JobID    JobName   NTasks        NodeList     MaxRSS  MaxVMSize     AveRSS  AveVMSize    Elapsed &lt;br /&gt;
------------ ---------- -------- --------------- ---------- ---------- ---------- ---------- ---------- &lt;br /&gt;
171          helloWorld           tron[00-01]                                               00:00:30 &lt;br /&gt;
171.batch         batch        1       tron00          0    119784K          0    113120K   00:00:30 &lt;br /&gt;
171.0             sleep        1       tron00          0    186060K          0    107900K   00:00:30 &lt;br /&gt;
171.1             sleep        1       tron01          0    186060K          0    107900K   00:00:30 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Job Codes=&lt;br /&gt;
If you list the current running jobs and your job is in &amp;lt;code&amp;gt;PD&amp;lt;/code&amp;gt; (Pending), SLURM will provide you some information on what the reason for this in the NODELIST parameter.  You can use &amp;lt;code&amp;gt;scontrol show job &amp;lt;jobid&amp;gt;&amp;lt;/code&amp;gt; to get all the parameters for your job to help identify why your job is not running.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# squeue -u testuser&lt;br /&gt;
JOBID PARTITION     NAME     USER     ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
581530     dpart     bash    testuser PD       0:00      1 (AssocGrpGRES)&lt;br /&gt;
581533     dpart     bash    testuser PD       0:00      1 (Resources)&lt;br /&gt;
581534     dpart     bash    testuser PD       0:00      1 (QOSMaxGRESPerUser)&lt;br /&gt;
581535     dpart     bash    testuser PD       0:00      1 (ReqNodeNotAvail, Reserved for maintenance)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some common ones are as follows:&lt;br /&gt;
* &amp;lt;code&amp;gt;Resources&amp;lt;/code&amp;gt; - The cluster does not currently have the resources to fit your job in your selected partition.&lt;br /&gt;
* &amp;lt;code&amp;gt;QOSMaxGRESPerUser&amp;lt;/code&amp;gt; - The quality of service (QoS) your job is running in has a limit of resources per user.  Use &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;show_partition_qos&amp;lt;/code&amp;gt; to identify the limits and then use &amp;lt;code&amp;gt;scontrol show job &amp;lt;jobid&amp;gt;&amp;lt;/code&amp;gt; for each of your jobs running in that QoS.&lt;br /&gt;
* &amp;lt;code&amp;gt;AssocGrpGRES&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;AssocGrpBilling&amp;lt;/code&amp;gt; - The SLURM account you are using has a limit on either a specific GRES or the overall billing amount (respectively) available in total for the account.  Use &amp;lt;code&amp;gt;sacctmgr show assoc account=&amp;lt;account_name&amp;gt;&amp;lt;/code&amp;gt; to identify the limit.  You can see all jobs running under the account by running &amp;lt;code&amp;gt;squeue -A account_name&amp;lt;/code&amp;gt; and then find out more information on each job by &amp;lt;code&amp;gt;scontrol show job &amp;lt;jobid&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &amp;lt;code&amp;gt;ReqNodeNotAvail&amp;lt;/code&amp;gt; - You have requested a specific node for your job and it does not currently have the resources to fit your job.  Alternatively, if you also see &amp;lt;code&amp;gt;Reserved for maintenance&amp;lt;/code&amp;gt;, there is a reservation in place (often for a [[MonthlyMaintenanceWindow | maintenance window]]).  You can see the current reservations by running &amp;lt;code&amp;gt;scontrol show reservation&amp;lt;/code&amp;gt;.  Often the culprit is that you have requested a TimeLimit that will conflict with the reservation.  You can either lower your TimeLimit such that the job will complete before the reservation begins, or leave your job to wait until the reservation completes.&lt;br /&gt;
&lt;br /&gt;
SLURM&#039;s full list of reasons/explanations can be found [https://slurm.schedmd.com/resource_limits.html#reasons here].&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=11325</id>
		<title>Nexus</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=Nexus&amp;diff=11325"/>
		<updated>2023-09-22T15:36:04Z</updated>

		<summary type="html">&lt;p&gt;Seide: show_qos and show_partition_qos updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Nexus is the combined scheduler of resources in UMIACS.  Many of our existing computational clusters that have discrete schedulers will be folding into this scheduler in the future (see [[#Migrations | below]]).  The resource manager for Nexus is [[SLURM]].  Resources are arranged into partitions where users are able to schedule computational jobs.  Users are arranged into a number of SLURM accounts based on faculty, lab, or center investments.&lt;br /&gt;
&lt;br /&gt;
= Getting Started =&lt;br /&gt;
All accounts in UMIACS are sponsored.  If you don&#039;t already have a UMIACS account, please see [[Accounts]] for information on getting one.  You need a full UMIACS account (not a [[Accounts/Collaborator | collaborator account]]) in order to access Nexus.&lt;br /&gt;
&lt;br /&gt;
== Access ==&lt;br /&gt;
Your access to submission nodes for Nexus computational resources are determined by your account sponsor&#039;s department, center, or lab affiliation.  You can log into the [https://intranet.umiacs.umd.edu/directory/cr/ UMIACS Directory CR application] and select the Computational Resource (CR) in the list that has the prefix &amp;lt;code&amp;gt;nexus&amp;lt;/code&amp;gt;.  The Hosts section lists your available submission nodes, generally a pair of nodes of the format &amp;lt;tt&amp;gt;nexus&amp;lt;department, lab, or center abbreviation&amp;gt;[00,01]&amp;lt;/tt&amp;gt;, e.g., &amp;lt;tt&amp;gt;nexuscfar00&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;nexuscfar01&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; - UMIACS requires multi-factor authentication through our [[Duo]] instance.  This is completely discrete from both UMD&#039;s and CSD&#039;s Duo instances.  You will need to enroll one or more devices to access resources in UMIACS, and will be prompted to enroll when you log into the Directory application for the first time.&lt;br /&gt;
&lt;br /&gt;
Once you have identified your submission nodes, you can [[SSH]] directly into them.  From there, you are able to submit to the cluster via our [[SLURM]] workload manager.  You need to make sure that your submitted jobs have the correct account, partition, and qos.&lt;br /&gt;
&lt;br /&gt;
== Jobs ==&lt;br /&gt;
[[SLURM]] jobs are submitted by either &amp;lt;code&amp;gt;srun&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sbatch&amp;lt;/code&amp;gt; depending if you are doing an interactive job or batch job, respectively.  You need to provide the where/how/who to run the job and specify the resources you need to run with.&lt;br /&gt;
&lt;br /&gt;
For the who/where/how, you may be required to specify &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;--partition&amp;lt;/code&amp;gt;, and/or &amp;lt;code&amp;gt;--qos&amp;lt;/code&amp;gt; (respectively) to be able to adequately submit jobs to the Nexus.&lt;br /&gt;
&lt;br /&gt;
For resources, you may need to specify &amp;lt;code&amp;gt;--time&amp;lt;/code&amp;gt; for time, &amp;lt;code&amp;gt;--tasks&amp;lt;/code&amp;gt; for CPUs, &amp;lt;code&amp;gt;--mem&amp;lt;/code&amp;gt; for RAM, and &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt; for GPUs in your submission arguments to meet your requirements.  There are defaults for all four, so if you don&#039;t specify something, you may be scheduled with a very minimal set of time and resources (e.g., by default, NO GPUs are included if you do not specify &amp;lt;code&amp;gt;--gres=gpu&amp;lt;/code&amp;gt;).  For more information about submission flags for GPU resources, see [[SLURM/JobSubmission#Requesting_GPUs]].  You can also can run &amp;lt;code&amp;gt;man srun&amp;lt;/code&amp;gt; on your submission node for a complete list of available submission arguments.&lt;br /&gt;
&lt;br /&gt;
=== Interactive ===&lt;br /&gt;
Once logged into a submission node, you can run simple interactive jobs.  If your session is interrupted from the submission node, the job will be killed.  As such, we encourage use of a terminal multiplexer such as [[Tmux]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ srun --pty --ntasks 4 --mem=2gb --gres=gpu:1 nvidia-smi -L&lt;br /&gt;
GPU 0: NVIDIA RTX A4000 (UUID: GPU-ae5dc1f5-c266-5b9f-58d5-7976e62b3ca1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch ===&lt;br /&gt;
Batch jobs are scheduled with a script file with an optional ability to embed job scheduling parameters via variables that are defined by &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; lines at the top of the file.  You can find some examples in our [[SLURM/JobSubmission]] documentation.&lt;br /&gt;
&lt;br /&gt;
= Partitions = &lt;br /&gt;
The SLURM resource manager uses partitions to act as job queues which can restrict size, time and user limits.  The Nexus has a number of different partitions of resources.  Different Centers, Labs, and Faculty are able to invest in computational resources that are restricted to approved users through these partitions.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by all non-[[ClassAccounts |class account]] users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/Tron]] - Pool of resources available to all UMIACS and CSD faculty and graduate students.&lt;br /&gt;
* Scavenger - [https://slurm.schedmd.com/preempt.html Preemption] partition that supports nodes from multiple other partitions.  More resources are available to schedule simultaneously than in other partitions, however jobs are subject to preemption rules.  You are responsible for ensuring your jobs handle this preemption correctly.  The SLURM scheduler will simply restart a preempted job with the same submission arguments when it is available to run again.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by [[ClassAccounts]]:&#039;&#039;&#039;&lt;br /&gt;
* [[ClassAccounts | Class]] - Pool available for UMIACS class accounts sponsored by either UMIACS or CSD faculty.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Partitions usable by specific lab/center users:&#039;&#039;&#039;&lt;br /&gt;
* [[Nexus/CBCB]] - CBCB lab pool available for CBCB lab members.&lt;br /&gt;
* [[Nexus/CLIP]] - CLIP lab pool available for CLIP lab members.&lt;br /&gt;
* [[Nexus/CML]] - CML lab pool available for CML lab members. (all compute nodes from standalone cluster folded in as of 08/17/2023)&lt;br /&gt;
* [[Nexus/Gamma]] - GAMMA lab pool available for GAMMA lab members.&lt;br /&gt;
* [[Nexus/MBRC]] - MBRC lab pool available for MBRC lab members.&lt;br /&gt;
* [[Nexus/MC2]] - MC2 lab pool available for MC2 lab members.&lt;br /&gt;
* [[Nexus/Vulcan]] - Vulcan lab pool available for Vulcan lab members. (all compute nodes from standalone cluster folded in as of 08/17/2023)&lt;br /&gt;
&lt;br /&gt;
= Quality of Service (QoS) =&lt;br /&gt;
SLURM uses Quality of Service (QoS) to provide limits on job sizes to users.  Note that you should still try to only allocate the minimum resources for your jobs, as resources that each of your jobs schedules are counted against your [https://slurm.schedmd.com/fair_tree.html FairShare priority] in the future.&lt;br /&gt;
* default - Default job QoS. Limited to 4 cores, 32GB RAM, and 1 GPU per job.  The maximum wall time per job is 3 days.&lt;br /&gt;
* medium - Limited to 8 cores, 64GB RAM, and 2 GPUs per job.  The maximum wall time per job is 2 days.&lt;br /&gt;
* high - Limited to 16 cores, 128GB RAM, and 4 GPUs per job.  The maximum wall time per job is 1 day.&lt;br /&gt;
* scavenger - Limited to 64 cores, 256GB RAM, and 8 GPUs per job.  The maximum wall time per job is 2 days.  Only 576 total cores, 2304GB total RAM, and 72 total GPUs are permitted simultaneously across all of your jobs running with this job QoS.  This job QoS is both only available in the scavenger partition and the only job QoS available in the scavenger partition. To use this job QoS, include &amp;lt;code&amp;gt;--partition=scavenger&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;--account=scavenger&amp;lt;/code&amp;gt; in your submission arguments.  Do not include any job QoS argument other than &amp;lt;code&amp;gt;--qos=scavenger&amp;lt;/code&amp;gt; (optional) or submission will fail.&lt;br /&gt;
&lt;br /&gt;
You can display these job QoS from the command line using the &amp;lt;code&amp;gt;show_qos&amp;lt;/code&amp;gt; command.  By default, the command will only show QoS that your user can access.  The above four job QoS are the ones that everyone can submit using.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[seide@nexusstaff00 ~]$ show_qos&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                          &lt;br /&gt;
           huge-long 10-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00     cpu=64,gres/gpu=8,mem=256G            cpu=576,gres/gpu=72,mem=2304G &lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4                                &lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all QoS, including those that your user cannot access, you can use the &amp;lt;code&amp;gt;show_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[seide@nexusstaff00 ~]$ show_qos --all&lt;br /&gt;
                Name     MaxWall                        MaxTRES MaxJobsPU                      MaxTRESPU &lt;br /&gt;
-------------------- ----------- ------------------------------ --------- ------------------------------ &lt;br /&gt;
             cml-cpu  7-00:00:00                                        8                                &lt;br /&gt;
         cml-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
            cml-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                &lt;br /&gt;
       cml-high_long 14-00:00:00              cpu=32,gres/gpu=8         8                     gres/gpu=8 &lt;br /&gt;
          cml-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
       cml-scavenger  3-00:00:00                                                             gres/gpu=24 &lt;br /&gt;
       cml-very_high  1-12:00:00     cpu=32,gres/gpu=8,mem=256G         8                    gres/gpu=12 &lt;br /&gt;
             default  3-00:00:00       cpu=4,gres/gpu=1,mem=32G                                          &lt;br /&gt;
                high  1-00:00:00     cpu=16,gres/gpu=4,mem=128G                                          &lt;br /&gt;
             highmem 21-00:00:00               cpu=32,mem=2000G                                          &lt;br /&gt;
           huge-long 10-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
              medium  2-00:00:00       cpu=8,gres/gpu=2,mem=64G                                          &lt;br /&gt;
           scavenger  3-00:00:00     cpu=64,gres/gpu=8,mem=256G            cpu=576,gres/gpu=72,mem=2304G &lt;br /&gt;
          vulcan-cpu  2-00:00:00                cpu=1024,mem=4T         4                                &lt;br /&gt;
      vulcan-default  7-00:00:00       cpu=4,gres/gpu=1,mem=32G         2                                &lt;br /&gt;
       vulcan-exempt  7-00:00:00     cpu=32,gres/gpu=8,mem=256G         2                                &lt;br /&gt;
         vulcan-high  1-12:00:00     cpu=16,gres/gpu=4,mem=128G         2                                &lt;br /&gt;
        vulcan-janus  3-00:00:00    cpu=32,gres/gpu=10,mem=256G                                          &lt;br /&gt;
       vulcan-medium  3-00:00:00       cpu=8,gres/gpu=2,mem=64G         2                                &lt;br /&gt;
       vulcan-sailon  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                              gres/gpu=48 &lt;br /&gt;
    vulcan-scavenger  3-00:00:00     cpu=32,gres/gpu=8,mem=256G                                          &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To find out what accounts and partitions you have access to, first use the &amp;lt;code&amp;gt;show_assoc&amp;lt;/code&amp;gt; command to show your account/job QoS combinations. Then, use the &amp;lt;code&amp;gt;scontrol show partition&amp;lt;/code&amp;gt; command and note the &amp;lt;tt&amp;gt;AllowAccounts&amp;lt;/tt&amp;gt; entry for each listed partition. You are able to submit to any partition that allows an account that you have. If you need to use an account other than the default account &amp;lt;tt&amp;gt;nexus&amp;lt;/tt&amp;gt;, you will need to specify an account via the &amp;lt;code&amp;gt;--account&amp;lt;/code&amp;gt; submission argument.&lt;br /&gt;
&lt;br /&gt;
===Partition QoS===&lt;br /&gt;
In addition to using QoS to provide limits on job parameters, termed by us as &amp;quot;job QoS&amp;quot;, SLURM can also have QoS assigned to partitions themselves, termed by us as &amp;quot;partition QoS&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
To view partition QoS, use the &amp;lt;code&amp;gt;show_partition_qos&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[seide@nexusstaff00 ~]$ show_partition_qos&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
                clip         500                                   cpu=564,mem=5647G &lt;br /&gt;
                mbrc         500                                   cpu=240,mem=2378G &lt;br /&gt;
           scavenger         500  cpu=576,gres/gpu=72,mem=2304G                      &lt;br /&gt;
                tron         500     cpu=32,gres/gpu=4,mem=256G                      &lt;br /&gt;
              vulcan         500                                 cpu=1760,mem=15824G &lt;br /&gt;
    vulcan-scavenger         500                                                     &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to see all partition QoS, including those that your user cannot access, you can use the &amp;lt;code&amp;gt;show_partition_qos --all&amp;lt;/code&amp;gt; command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[seide@nexusstaff00 ~]$ show_partition_qos --all&lt;br /&gt;
                Name MaxSubmitPU                      MaxTRESPU              GrpTRES &lt;br /&gt;
-------------------- ----------- ------------------------------ -------------------- &lt;br /&gt;
                cbcb         500                                 cpu=1004,mem=47840G &lt;br /&gt;
               class         500     cpu=32,gres/gpu=4,mem=256G                      &lt;br /&gt;
                clip         500                                   cpu=564,mem=5647G &lt;br /&gt;
                 cml         500                                 cpu=1128,mem=11381G &lt;br /&gt;
       cml-scavenger         500                    gres/gpu=24                      &lt;br /&gt;
               gamma         500                                   cpu=520,mem=4517G &lt;br /&gt;
                mbrc         500                                   cpu=240,mem=2378G &lt;br /&gt;
                 mc2         500                                   cpu=312,mem=3133G &lt;br /&gt;
           scavenger         500  cpu=576,gres/gpu=72,mem=2304G                      &lt;br /&gt;
                tron         500     cpu=32,gres/gpu=4,mem=256G                      &lt;br /&gt;
              vulcan         500                                 cpu=1760,mem=15824G &lt;br /&gt;
    vulcan-scavenger         500       &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: These QoS cannot be used directly when submitting jobs, with the exception of scavenger QoS (i.e. they are not in the AllowQos field for their respective partition). Partition QoS limits apply to all jobs running on a given partition, even when using multiple job QoS.&lt;br /&gt;
&lt;br /&gt;
For example, in the default non-preemption partition (&amp;lt;tt&amp;gt;tron&amp;lt;/tt&amp;gt;), you are restricted to 32 total cores, 4 total GPUs, and 256GB total RAM at once across all jobs you have running in the job QoS allowed by the partition. You also can only have a maximum of 500 jobs in the partition in the running (R) or pending (PD) states simultaneously. The latter is to prevent excess pending jobs causing [https://slurm.schedmd.com/sched_config.html#backfill backfill] issues.&lt;br /&gt;
* If you need to submit more than 500 jobs in batch at once, you can develop and run an &amp;quot;outer submission script&amp;quot; that repeatedly attempts to run the &amp;quot;inner submission script&amp;quot; (your original submission script) to submit jobs in the batch periodically, until all job submissions are successful. The outer submission script should use looping logic to check if you are at the max job limit and should then retry submission after waiting for some time interval. An example outer submission script is as follows. In this example, &amp;lt;code&amp;gt;example_inner.sh&amp;lt;/code&amp;gt; is your inner submission script which is not an array job and you want to run 1000 jobs. If your inner submission script is an array job, adjust the number of jobs accordingly. Keep in mind that array jobs must be of size 500 or fewer.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
numjobs=1000&lt;br /&gt;
i=0&lt;br /&gt;
while [ $i -lt $numjobs ]&lt;br /&gt;
do&lt;br /&gt;
  while [[ &amp;quot;$(sbatch example_inner.sh 2&amp;gt;&amp;amp;1)&amp;quot; =~ &amp;quot;QOSMaxSubmitJobPerUserLimit&amp;quot; ]]&lt;br /&gt;
  do&lt;br /&gt;
    echo &amp;quot;Currently at maximum job submissions allowed.&amp;quot;&lt;br /&gt;
    echo &amp;quot;Waiting for 5 minutes before trying to submit more jobs.&amp;quot;&lt;br /&gt;
    sleep 300&lt;br /&gt;
  done&lt;br /&gt;
  i=$(( $i + 1 ))&lt;br /&gt;
  echo &amp;quot;Submitted job $i of $numjobs&amp;quot;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is suggested that you run the outer submission script in a [[Tmux]] session to keep the terminal window executing it from being interrupted.&lt;br /&gt;
&lt;br /&gt;
Lab/group-specific partitions may also have partition QoS intended to limit the total number of resources consumed by all users in that lab/group that are using the partition (codified by &amp;lt;tt&amp;gt;GrpTRES&amp;lt;/tt&amp;gt; in the output above for the partition QoS name that matches the lab/group partition name). They also have the 500 running/pending job maximum. Note that the exact values above for TRES are not fixed and may fluctuate as more resources are added to various partitions.&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
All storage available in Nexus is currently [[NFS]] based.  We will be introducing some changes for Phase 2 to support high performance GPUDirect Storage (GDS).  These storage allocation procedures will be revised and approved by the launch of Phase 2 by a joint UMIACS and CSD faculty committee.&lt;br /&gt;
&lt;br /&gt;
== Home Directories ==&lt;br /&gt;
Home directories in the Nexus computational infrastructure are available from the Institute&#039;s [[NFShomes]] as &amp;lt;code&amp;gt;/nfshomes/USERNAME&amp;lt;/code&amp;gt; where USERNAME is your username.  These home directories have very limited storage (30GB, cannot be increased) and are intended for your personal files, configuration and source code.  Your home directory is &#039;&#039;&#039;not&#039;&#039;&#039; intended for data sets or other large scale data holdings.  Users are encouraged to utilize our [[GitLab]] infrastructure to host your code repositories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: To check your quota on this directory you will need to use the &amp;lt;code&amp;gt;quota -s&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
Your home directory data is fully protected and has both [[Snapshots | snapshots]] and is [[NightlyBackups | backed up nightly]].&lt;br /&gt;
&lt;br /&gt;
Other standalone compute clusters have begun to fold into partitions in Nexus.  The corresponding home directories used by these clusters (if not &amp;lt;code&amp;gt;/nfshomes&amp;lt;/code&amp;gt;) will be gradually phased out in favor of the &amp;lt;code&amp;gt;/nfshomes&amp;lt;/code&amp;gt; home directories.&lt;br /&gt;
&lt;br /&gt;
== Scratch Directories ==&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the Nexus compute infrastructure:&lt;br /&gt;
* Network scratch directories&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
Please note that [[ClassAccounts | class accounts]] do not have network scratch directories.&lt;br /&gt;
&lt;br /&gt;
=== Network Scratch Directories ===&lt;br /&gt;
You are allocated 200GB of scratch space via NFS from &amp;lt;code&amp;gt;/fs/nexus-scratch/$username&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;automounted&#039;&#039;&#039; so you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access this.&lt;br /&gt;
&lt;br /&gt;
You can view your quota usage by running &amp;lt;code&amp;gt;df -h /fs/nexus-scratch/$username&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 400GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 400GB, you will need faculty approval and/or a [[#Project_Allocations | project allocation]] for this. If you choose to increase your scratch space beyond 400GB, the increased space is also subject to the 270 TB days limit mentioned in the project allocation section before we check back in for renewal. For example, if you request 1.4TB total space, you may have this for 270 days (1TB beyond the 400GB permanent increase).&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
=== Local Scratch Directories ===&lt;br /&gt;
Each computational node that you can schedule compute jobs on also has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc.  These are almost always more performant than any other storage available to the job.  However, you must stage their data within the confines of your job and stage the data out before the end of your job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month during our monthly maintenance windows.  Please make sure you secure any data you write to these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
== Faculty Allocations ==&lt;br /&gt;
Each faculty member can be allocated 1TB of lab space upon request.  We can also support grouping these individual allocations together into larger center, lab, or research group allocations if desired by the faculty.  Please [[HelpDesk | contact staff]] to inquire.&lt;br /&gt;
&lt;br /&gt;
This lab space does not have [[Snapshots | snapshots]] by default (but are available if requested), but is [[NightlyBackups | backed up]].&lt;br /&gt;
&lt;br /&gt;
== Project Allocations ==&lt;br /&gt;
Project allocations are available per user for 270 TB days; you can have a 1TB allocation for up to 270 days, a 3TB allocation for 90 days, etc..  A single faculty member can not have more than 20TB of sponsored account project allocations active at any point. &lt;br /&gt;
&lt;br /&gt;
The maximum allocation length you can request is 540 days (500GB space) and the maximum storage space you can request is 9TB (30 day length).&lt;br /&gt;
&lt;br /&gt;
To request an allocation, please [[HelpDesk | contact staff]] with the faculty member(s) that the project is under involved in the conversation.  Please include the following details:&lt;br /&gt;
* Project Name (short)&lt;br /&gt;
* Description&lt;br /&gt;
* Size (1TB, 2TB, etc.)&lt;br /&gt;
* Length in days (270 days, 135 days, etc.)&lt;br /&gt;
* Other user(s) that need to access the allocation, if any&lt;br /&gt;
&lt;br /&gt;
These allocations are available via &amp;lt;code&amp;gt;/fs/nexus-projects/$project_name&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;Renewal is not guaranteed to be available due to limits on the amount of total storage.&#039;&#039;&#039;  Near the end of the allocation period, staff will contact you and ask if you are still in need of the storage allocation.  If renewal is available, you can renew for up to another 270 TB days with reapproval from the original faculty approver.  If you are no longer in need of the storage allocation, you will need to relocate all desired data within two weeks of the end of the allocation period.  Staff will then remove the allocation.  If you do not respond to staff&#039;s request by the end of the allocation period, staff will make the allocation temporarily inaccessible. If you do respond asking for renewal but the original faculty approver does not respond within two weeks of the end of the allocation period, staff will also make the allocation temporarily inaccessible. If one month from the end of the allocation period is reached without both you and the faculty approver responding, staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
== Datasets ==&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/nexus-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
We will have a more formal process to approve datasets by Phase 2 of Nexus.&lt;br /&gt;
&lt;br /&gt;
= Migrations =&lt;br /&gt;
If you are a user of an existing cluster that is the process of being folded into Nexus now or in the near future, your cluster-specific migration information will be listed here.&lt;br /&gt;
* [[Nexus/CML]] - all compute nodes folded in as of 08/17/2023&lt;br /&gt;
* [[Nexus/Vulcan]] - all compute nodes folded in as of 08/17/2023&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=CML&amp;diff=10371</id>
		<title>CML</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=CML&amp;diff=10371"/>
		<updated>2022-04-18T20:38:42Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* Datasets */  Add Salient ImageNet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Center for Machine Learning ([https://ml.umd.edu CML]) at the University of Maryland is located within the Institute for Advanced Computer Studies.  The CML has a cluster of computational (CPU/GPU) resources that are available to be scheduled.&lt;br /&gt;
&lt;br /&gt;
=Compute Infrastructure=&lt;br /&gt;
Each of UMIACS&#039; cluster computational infrastructures is accessed through the submission node.  Users will need to submit jobs through the [[SLURM]] resource manager once they have logged into the submission node.  Each cluster in UMIACS has different quality of service (QoS) that are &#039;&#039;&#039;required&#039;&#039;&#039; to be selected upon submission of a job. Many clusters, including this one, also have other resources such as GPUs that need to be requested for a job.  &lt;br /&gt;
&lt;br /&gt;
The current submission node(s) for &#039;&#039;&#039;CML&#039;&#039;&#039; are:&lt;br /&gt;
* &amp;lt;code&amp;gt;cmlsub00.umiacs.umd.edu&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Center for Machine Learning GPU resources are a small investment from the base Center funds and a number of investments by individual faculty members.  The scheduler&#039;s resources are modeled around this concept.  This means there are additional Slurm accounts that users will need to be aware of if they are submitting in the non-scavenger partition.&lt;br /&gt;
&lt;br /&gt;
==Partitions==&lt;br /&gt;
There are three partitions to the CML [[SLURM]] computational infrastructure.  If you do not specify a partition when submitting your job, you will receive the &#039;&#039;&#039;dpart&#039;&#039;&#039; partition.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;dpart&#039;&#039;&#039; - This is the default partition. Job allocations are guaranteed.&lt;br /&gt;
* &#039;&#039;&#039;scavenger&#039;&#039;&#039; - This is the alternate partition that allows jobs longer run times and more resources but is preemptable when jobs in other partitions are ready to be scheduled.&lt;br /&gt;
* &#039;&#039;&#039;cpu&#039;&#039;&#039; - This partition is for CPU focused jobs. Job allocations are guaranteed.&lt;br /&gt;
&lt;br /&gt;
==Accounts==&lt;br /&gt;
The Center has a base account &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; which has a modest number of nodes (currently 16 GPUs) total available in it.  Other faculty that have invested in the cluster have an additional account provided to their sponsored accounts on the cluster, which provides a number of guaranteed GPU resources corresponding to the amount that they invested.  If you do not specify a account when submitting your job, you will receive the &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; account.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# sacctmgr show accounts&lt;br /&gt;
   Account                Descr                  Org&lt;br /&gt;
---------- -------------------- --------------------&lt;br /&gt;
   abhinav  abhinav shrivastava                  cml&lt;br /&gt;
       cml                  cml                  cml&lt;br /&gt;
   furongh         furong huang                  cml&lt;br /&gt;
      john       john dickerson                  cml&lt;br /&gt;
      root default root account                 root&lt;br /&gt;
 scavenger            scavenger            scavenger&lt;br /&gt;
    sfeizi         soheil feizi                  cml&lt;br /&gt;
      tomg        tom goldstein                  cml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can check your account associations by running the &#039;&#039;&#039;show_assoc&#039;&#039;&#039; to see the accounts you are associated with.  Please [[HelpDesk | contact staff]] and include your faculty member in the conversation if you do not see the appropriate association. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ show_assoc&lt;br /&gt;
      User    Account   Def Acct   Def QOS                                  QOS&lt;br /&gt;
---------- ---------- ---------- --------- ------------------------------------&lt;br /&gt;
      tomg       tomg                                       default,high,medium&lt;br /&gt;
      tomg        cml                                        cpu,default,medium&lt;br /&gt;
      tomg  scavenger                                                 scavenger&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also see the total number of Track-able Resources (TRES) allowed for each account by running the following command. Please make sure you give the appropriate account that you are looking for.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sacctmgr show assoc account=tomg format=user,account,qos,grptres&lt;br /&gt;
      User    Account                  QOS       GrpTRES&lt;br /&gt;
---------- ---------- -------------------- -------------&lt;br /&gt;
                 tomg                        gres/gpu=48&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==QoS==&lt;br /&gt;
CML currently has 4 QoS for the &#039;&#039;&#039;dpart&#039;&#039;&#039; partition (though &amp;lt;code&amp;gt;very_high&amp;lt;/code&amp;gt; is only available on a single faculty member&#039;s account), 1 QoS for the &#039;&#039;&#039;scavenger&#039;&#039;&#039; partition, and 1 QoS for the &#039;&#039;&#039;cpu&#039;&#039;&#039; partition.  You are &#039;&#039;&#039;required&#039;&#039;&#039; to specify a QoS when submitting your job.  The important part here is that in different QoS you can have a shorter/longer maximum wall time, a different total number of jobs running at once, and a different maximum number of track-able resources (TRES) for the job.  In the scavenger QoS, one more constraint that you are restricted by is the total number of TRES per user (over multiple jobs). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# show_qos&lt;br /&gt;
      Name     MaxWall MaxJobs                        MaxTRES     MaxTRESPU   Priority&lt;br /&gt;
---------- ----------- ------- ------------------------------ ------------- ----------&lt;br /&gt;
    medium  3-00:00:00       1       cpu=8,gres/gpu=2,mem=64G                        0&lt;br /&gt;
   default  7-00:00:00       2       cpu=4,gres/gpu=1,mem=32G                        0&lt;br /&gt;
      high  1-12:00:00       2     cpu=16,gres/gpu=4,mem=128G                        0&lt;br /&gt;
 scavenger  3-00:00:00                                          gres/gpu=24          0&lt;br /&gt;
    normal                                                                           0&lt;br /&gt;
       cpu  1-00:00:00       1                                                       0&lt;br /&gt;
 very_high  1-12:00:00       8     cpu=32,gres/gpu=8,mem=256G   gres/gpu=12          0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==GPUs==&lt;br /&gt;
Jobs that require GPU resources need to explicitly request the resources within their job submission.  This is done through Generic Resource Scheduling (GRES).  Users may use the most generic identifier (in this case &#039;&#039;&#039;gpu&#039;&#039;&#039;), a colon, and a number to select without explicitly naming the type of GPU (ie. &amp;lt;code&amp;gt;--gres=gpu:4&amp;lt;/code&amp;gt; for 4 GPUs).  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sinfo -o &amp;quot;%20N %10c %10m %25f %40G&amp;quot;&lt;br /&gt;
NODELIST        CPUS       MEMORY      AVAIL_FEATURES            GRES&lt;br /&gt;
cmlgrad05       32         385421      Xeon,4216                 gpu:rtx3070:1,gpu:rtx2080ti:6&lt;br /&gt;
cml[00-11,13-16 32         353924+     Xeon,4216                 gpu:rtx2080ti:8&lt;br /&gt;
cmlgrad02       32         385421      Xeon,4216                 gpu:rtx2080ti:7,gpu:rtx3070:1&lt;br /&gt;
cmlcpu[00,05-07 24         386675+     Xeon,E5-2680              (null)&lt;br /&gt;
cmlcpu[01-04]   20         386675      Xeon,E5-2660              (null)&lt;br /&gt;
cml12           32         385429      Xeon,4216                 gpu:rtx2080ti:7,gpu:rtxa4000:1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Job Submission and Management==&lt;br /&gt;
Users should review our [[SLURM]] [[SLURM/JobSubmission | job submission]] and [[SLURM/JobStatus | job management]] documentation.  &lt;br /&gt;
&lt;br /&gt;
A very quick start to get an interactive shell is as follows when run on the submission node.  This will allocate 1 GPU with 16GB of memory (system RAM) in the QoS default for 4 hours maximum time.  If the job goes beyond these limits (either the memory allocation or the maximum time) it will be terminated immediately. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --pty --gres=gpu:1 --mem=16G --qos=default --time=04:00:00 bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[username@cmlsub00:~ ] $ srun --pty --gres=gpu:1 --mem=16G --qos=default --time=04:00:00 bash&lt;br /&gt;
[username@cml00:~ ] $ nvidia-smi -L&lt;br /&gt;
GPU 0: GeForce RTX 2080 Ti (UUID: GPU-20846848-e66d-866c-ecbe-89f2623f3b9a)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are going to run in a faculty account instead of the default &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt; account you will need to specify the &amp;lt;code&amp;gt;--account=&amp;lt;/code&amp;gt; flag.&lt;br /&gt;
&lt;br /&gt;
A quick example to run an interactive job using the cpu partition. The cpu partition uses the default account &amp;lt;code&amp;gt;cml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash-4.2$ srun --partition=cpu --qos=cpu bash -c &#039;echo &amp;quot;Hello World from&amp;quot; `hostname`&#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Data Storage=&lt;br /&gt;
Until the final storage investment arrives we have made available a temporary allocation of storage.  This section is subject to change.  There are 3 types of storage available to users in the CML:&lt;br /&gt;
* Home directories&lt;br /&gt;
* Project directories&lt;br /&gt;
* Scratch directories&lt;br /&gt;
&lt;br /&gt;
==Home Directories==&lt;br /&gt;
Home directories in the CML computational infrastructure are available from the Institute&#039;s [[NFShomes]] as &amp;lt;code&amp;gt;/nfshomes/USERNAME&amp;lt;/code&amp;gt; where USERNAME is your username.  These home directories have very limited storage and are intended for your personal files, configuration and source code.  Your home directory is &#039;&#039;&#039;not&#039;&#039;&#039; intended for data sets or other large scale data holdings.  Users are encouraged to utilize our [[GitLab]] infrastructure to host your code repositories.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE&#039;&#039;&#039;: To check your quota on this directory you will need to use the &amp;lt;code&amp;gt;quota -s&amp;lt;/code&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
Your home directory data is fully protected and has both snapshots and is backed up nightly.&lt;br /&gt;
&lt;br /&gt;
==Project Directories==&lt;br /&gt;
You can request project based allocations for up to 2TB for up to 120 days by [[HelpDesk | contacting staff]] with approval from a CML faculty member and the director of CML.  These allocations will be available from &#039;&#039;&#039;/fs/cml-projects&#039;&#039;&#039; under a name that you provide when you request the allocation.  Once the allocation period is over, you will be contacted and given a 14-day window of opportunity to clean and secure your data before staff will remove the allocation.&lt;br /&gt;
&lt;br /&gt;
This data is backed up nightly.&lt;br /&gt;
&lt;br /&gt;
==Scratch Directories==&lt;br /&gt;
Scratch data has no data protection including no snapshots and the data is not backed up. There are two types of scratch directories in the CML compute infrastructure:&lt;br /&gt;
* Network scratch directory&lt;br /&gt;
* Local scratch directories&lt;br /&gt;
&lt;br /&gt;
===Network Scratch Directory===&lt;br /&gt;
You are allocated 400GB of scratch space via NFS from &amp;lt;code&amp;gt;/cmlscratch/$username&amp;lt;/code&amp;gt;.  &#039;&#039;&#039;It is not backed up or protected in any way.&#039;&#039;&#039;  This directory is &#039;&#039;&#039;automounted&#039;&#039;&#039; so you will need to &amp;lt;code&amp;gt;cd&amp;lt;/code&amp;gt; into the directory or request/specify a fully qualified file path to access this.&lt;br /&gt;
&lt;br /&gt;
You may request a permanent increase of up to 800GB total space without any faculty approval by [[HelpDesk | contacting staff]].  If you need space beyond 800GB, you will need faculty approval and/or a project directory.&lt;br /&gt;
&lt;br /&gt;
This file system is available on all submission, data management, and computational nodes within the cluster.&lt;br /&gt;
&lt;br /&gt;
===Local Scratch Directories===&lt;br /&gt;
Each computational node that you can schedule compute jobs on has one or more local scratch directories.  These are always named &amp;lt;code&amp;gt;/scratch0&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;/scratch1&amp;lt;/code&amp;gt;, etc.  These are almost always more performant than any other storage available to the job.  However, you must stage their data within the confine of their job and stage the data out before the end of their job.&lt;br /&gt;
&lt;br /&gt;
These local scratch directories have a tmpwatch job which will &#039;&#039;&#039;delete unaccessed data after 90 days&#039;&#039;&#039;, scheduled via maintenance jobs to run once a month at 1am.  Please make sure you secure any data you write to these directories at the end of your job.&lt;br /&gt;
&lt;br /&gt;
==Datasets==&lt;br /&gt;
We have read-only dataset storage available at &amp;lt;code&amp;gt;/fs/cml-datasets&amp;lt;/code&amp;gt;.  If there are datasets that you would like to see curated and available, please see [[Datasets | this page]].&lt;br /&gt;
&lt;br /&gt;
The following is the list of datasets available:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Dataset&lt;br /&gt;
! Path&lt;br /&gt;
|-&lt;br /&gt;
| CelebA&lt;br /&gt;
| /fs/cml-datasets/CelebA&lt;br /&gt;
|-&lt;br /&gt;
| CelebA-HQ&lt;br /&gt;
| /fs/cml-datasets/CelebA-HQ&lt;br /&gt;
|-&lt;br /&gt;
| CelebAMask-HQ&lt;br /&gt;
| /fs/cml-datasets/CelebAMask-HQ&lt;br /&gt;
|-&lt;br /&gt;
| Charades&lt;br /&gt;
| /fs/cml-datasets/Charades&lt;br /&gt;
|-&lt;br /&gt;
| Cityscapes&lt;br /&gt;
| /fs/cml-datasets/cityscapes&lt;br /&gt;
|-&lt;br /&gt;
| COCO&lt;br /&gt;
| /fs/cml-datasets/coco&lt;br /&gt;
|-&lt;br /&gt;
| Diversity in Faces [1]&lt;br /&gt;
| /fs/cml-datasets/diversity_in_faces&lt;br /&gt;
|-&lt;br /&gt;
| FFHQ&lt;br /&gt;
| /fs/cml-datasets/FFHQ&lt;br /&gt;
|-&lt;br /&gt;
| ImageNet ILSVRC2012&lt;br /&gt;
| /fs/cml-datasets/ImageNet/ILSVRC2012&lt;br /&gt;
|-&lt;br /&gt;
| LFW&lt;br /&gt;
| /fs/cml-datasets/facial_test_data&lt;br /&gt;
|-&lt;br /&gt;
| LibriSpeech&lt;br /&gt;
| /fs/cml-datasets/LibriSpeech&lt;br /&gt;
|-&lt;br /&gt;
| LSUN&lt;br /&gt;
| /fs/cml-datasets/LSUN&lt;br /&gt;
|-&lt;br /&gt;
| MAG240M&lt;br /&gt;
| /fs/cml-datasets/OGB/MAG240M&lt;br /&gt;
|-&lt;br /&gt;
| MegaFace&lt;br /&gt;
| /fs/cml-datasets/megaface&lt;br /&gt;
|-&lt;br /&gt;
| MS-Celeb-1M&lt;br /&gt;
| /fs/cml-datasets/MS_Celeb_aligned_112&lt;br /&gt;
|-&lt;br /&gt;
| OC20&lt;br /&gt;
| /fs/cml-datasets/OC20&lt;br /&gt;
|-&lt;br /&gt;
| ogbn-papers100M&lt;br /&gt;
| /fs/cml-datasets/OGB/ogbn-papers100M&lt;br /&gt;
|-&lt;br /&gt;
| roberta&lt;br /&gt;
| /fs/cml-datasets/roberta&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Salient ImageNet&lt;br /&gt;
| /fs/cml-datasets/Salient-ImageNet&lt;br /&gt;
|-&lt;br /&gt;
| ShapeNetCore.v2&lt;br /&gt;
| /fs/cml-datasets/ShapeNetCore.v2&lt;br /&gt;
|-&lt;br /&gt;
| Tiny ImageNet&lt;br /&gt;
| /fs/cml-datasets/tiny_imagenet&lt;br /&gt;
|-&lt;br /&gt;
| WikiKG90M&lt;br /&gt;
| /fs/cml-datasets/OGB/WikiKG90M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[1] - This dataset has restricted access. Please [[HelpDesk | contact staff]] if you are looking to use this dataset.&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
	<entry>
		<id>https://wiki.umiacs.umd.edu/umiacs/index.php?title=LaTeX&amp;diff=8425</id>
		<title>LaTeX</title>
		<link rel="alternate" type="text/html" href="https://wiki.umiacs.umd.edu/umiacs/index.php?title=LaTeX&amp;diff=8425"/>
		<updated>2019-06-24T20:16:27Z</updated>

		<summary type="html">&lt;p&gt;Seide: /* LaTeX on Linux/UNIX */  Revise section to include GNU module information. Trim down the example.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Background==&lt;br /&gt;
&lt;br /&gt;
From the main [http://www.latex-project.org Project Page]:&lt;br /&gt;
&lt;br /&gt;
LaTeX is a high-quality typesetting system; it includes features designed for the production of technical and scientific documentation. LaTeX is the &amp;lt;i&amp;gt;de facto&amp;lt;/i&amp;gt; standard for the communication and publication of scientific documents.&lt;br /&gt;
&lt;br /&gt;
==LaTeX on Windows==&lt;br /&gt;
&lt;br /&gt;
In Windows, it is highly recommended to use a full-featured suite such as [https://www.tug.org/texlive/ TeX Live] or [http://miktex.org/ MiKTeX]. Both of these suites include everything required for end-to-end LaTeX compilation and filetype conversation. Please contact the [[HelpDesk]] for assistance with installing or using these on a UMIACS-supported Windows machine.&lt;br /&gt;
&lt;br /&gt;
==LaTeX on Linux/UNIX==&lt;br /&gt;
&lt;br /&gt;
[https://www.tug.org/mactex/ MacTeX] is available for macOS.&lt;br /&gt;
&lt;br /&gt;
[https://www.tug.org/texlive/ TeX Live] is available for Linux. For editing LaTeX files on RHEL7, [https://www.xm1math.net/texmaker/ Texmaker] is available as a GNU module.&lt;br /&gt;
&lt;br /&gt;
Most of our supported Linux systems come with the LaTeX command-line utilities, as well as TeX Live, installed. Supported RHEL7 workstations come with Tex Live 2013, but you can load a newer version of TeX Live as a GNU module.&lt;br /&gt;
&lt;br /&gt;
===Checking installed packages===&lt;br /&gt;
&lt;br /&gt;
TeX Live comes with tons of packages preinstalled. To get a list of installed packages, you must first load the TeX Live GNU module. You can then use the following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ tlmgr list --only-installed&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you know which package you are looking for, you can pipe the output into &amp;lt;tt&amp;gt;grep&amp;lt;/tt&amp;gt; to search for specific packages.&lt;br /&gt;
&lt;br /&gt;
===Compiling to PDF===&lt;br /&gt;
&lt;br /&gt;
The following is an example of compiling &amp;lt;tt&amp;gt;example.tex&amp;lt;/tt&amp;gt; to a PDF.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Compile the file into a DVI file by using the &amp;lt;tt&amp;gt;latex&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
$ latex example.tex &lt;br /&gt;
This is pdfTeX, Version 3.1415926-2.3-1.40.13 (TeX Live 2013)&lt;br /&gt;
[...]&lt;br /&gt;
[1] (./example.aux) )&lt;br /&gt;
Output written on example.dvi (1 page, 1692 bytes).&lt;br /&gt;
Transcript written on example.log.&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&lt;br /&gt;
    Use &amp;lt;tt&amp;gt;dvipdfmx&amp;lt;/tt&amp;gt; to convert &amp;lt;tt&amp;gt;example.dvi&amp;lt;/tt&amp;gt; into a PDF (&amp;lt;tt&amp;gt;dvipdf&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;dvipdfm&amp;lt;/tt&amp;gt; usually would work as well).&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;pre&amp;gt;&lt;br /&gt;
$ dvipdfmx example.dvi&lt;br /&gt;
example.dvi -&amp;gt; example.pdf&lt;br /&gt;
[1]&lt;br /&gt;
12211 bytes written&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
If your output PDF does not look quite right, you may need to use different conversion tools. Your workflow may necessarily vary depending on the contents of your document and how they are formatted and rendered.&lt;br /&gt;
&lt;br /&gt;
==Further Reading==&lt;br /&gt;
&lt;br /&gt;
* [http://latex-project.org/guides LaTeX project documentation page]&lt;br /&gt;
* [http://mintaka.sdsu.edu/GF/bibliog/latex/LaTeXtoPDF.html More LaTex to PDF options]&lt;/div&gt;</summary>
		<author><name>Seide</name></author>
	</entry>
</feed>