<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.uabgrid.uab.edu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Puri%40uab.edu</id>
	<title>Cheaha - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.uabgrid.uab.edu/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Puri%40uab.edu"/>
	<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/wiki/Special:Contributions/Puri@uab.edu"/>
	<updated>2026-04-12T12:51:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5648</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5648"/>
		<updated>2017-10-15T22:10:45Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers. Information about the history and future plans for Cheaha is available on the [[Cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes commodity compute hardware, totaling 2800 compute cores and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides an aggregate theoretical peak performance of 468 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 18 Compute Nodes with two 14 core processors (Intel Xeon E5-2680 v4 2.4GHz)with 256GB DDR4 RAM, four NVIDIA Tesla P100 16GB GPUs, EDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR and EDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to '''our queuing system ([[Slurm]])'''. A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier. Instructions of using SLURM and writing SLURM scripts for jobs submission on Cheaha can be found '''[[Slurm | here]]'''.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a GPFS high performance file system providing roughly 4.7PB of usable storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT. As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5647</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5647"/>
		<updated>2017-10-15T22:04:28Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Description of Cheaha for Grants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015 === &lt;br /&gt;
&lt;br /&gt;
UAB IT received $500,000 from the university’s Mission Support Fund for a compute cluster seed expansion of 48 teraflops.  This added 936 cores across 40 nodes with 2x12 core 2.5 GHz Intel Xeon E5-2680 v3 compute nodes and FDR InfiniBand interconnect.&lt;br /&gt;
&lt;br /&gt;
UAB received a $500,000 grant from the Alabama Innovation Fund for a three petabyte research storage array. This funding with additional matching from UAB provided a multi-petabyte [https://en.wikipedia.org/wiki/IBM_General_Parallel_File_System GPFS] parallel file system to the cluster which went live in 2016.&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
In 2016 UAB IT Research computing received additional funding from Deans of CAS, Engineering, and Public Heath to grow the compute capacity provided by the prior year's seed funding.  This added an additional compute nodes providing researchers at UAB with a 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].  &lt;br /&gt;
&lt;br /&gt;
In addition to the compute, the GPFS six petabyte file system came online. This file system, provided each user five terabyte of personal space, additional space for shared projects and a greatly expanded scratch storage all in a single file system.&lt;br /&gt;
&lt;br /&gt;
The 2015 and 2016 investments combined to provide a completely new core for the Cheaha cluster, allowing the retirement of earlier compute generations.&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2800 conventional CPU cores and 80 accelerators interconnected via InfiniBand network and provides 468 TFLOP/s of aggregate theoretical peak performance. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these compute nodes via the Infiniband fabric. An additional 20TB of traditional SAN storage is also available for home directories. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5646</id>
		<title>Template:CheahaTflops</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5646"/>
		<updated>2017-10-15T22:02:16Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-							&lt;br /&gt;
!Generation!!	Type!!	Nodes!!	CPUs per Node!!	Cores Per CPU!!	Total Cores!!Clock Speed (GHz)!!	Instructions Per Cycle	!!Hardware Reference&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||	Intel Xeon E5450||align=&amp;quot;right&amp;quot;|	24||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	4||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	3.00||align=&amp;quot;right&amp;quot;|	4||[http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-(12M-Cache-3_00-GHz-1333-MHz-FSB) Intel Xeon E5450]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||	Intel Xeon X5650||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	6||align=&amp;quot;right&amp;quot;|	576||align=&amp;quot;right&amp;quot;|	2.66||align=&amp;quot;right&amp;quot;|	4||	[http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-(12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI) Intel Xeon E6550]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||	Intel Xeon E5-2680||align=&amp;quot;right&amp;quot;|	3||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2.70||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64583 Intel Xeon E2680]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||	Intel Xeon E5-2650||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	2.00||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64590/Intel-Xeon-Processor-E5-2650-20M-Cache-2_00-GHz-8_00-GTs-Intel-QPI Intel Xeon E2650] (Nodes dedicated to [https://dev.uabgrid.uab.edu/wiki/OpenStackPlusCeph OpenStack+Ceph] with 10Gbs network)&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;||	Intel Xeon E5-2680 v3||align=&amp;quot;right&amp;quot;|	96||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2304||align=&amp;quot;right&amp;quot;|	2.50||align=&amp;quot;right&amp;quot;|	16||	[http://ark.intel.com/products/81908/Intel-Xeon-Processor-E5-2680-v3-30M-Cache-2_50-GHz Intel Xeon E5-2680 v3] &lt;br /&gt;
|-&lt;br /&gt;
|Gen 7&amp;lt;sup&amp;gt;††&amp;lt;/sup&amp;gt;||	Intel Xeon E5-2680 v4||align=&amp;quot;right&amp;quot;|	18||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	14||align=&amp;quot;right&amp;quot;|	504||align=&amp;quot;right&amp;quot;|	2.40||align=&amp;quot;right&amp;quot;|	16||	[https://ark.intel.com/products/91754/Intel-Xeon-Processor-E5-2680-v4-35M-Cache-2_40-GHz Intel Xeon E5-2680 v4] &lt;br /&gt;
&lt;br /&gt;
|}							&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+[http://en.wikipedia.org/wiki/FLOPS#Computing Theoretical Peak Flops] = (number of cores) * (clock speed) * (instructions per cycle)&lt;br /&gt;
|-&lt;br /&gt;
!Generation!!Theoretical Peak Tera-FLOPS						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||align=&amp;quot;right&amp;quot;|	2.304						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||align=&amp;quot;right&amp;quot;|	6.129&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||align=&amp;quot;right&amp;quot;|	1.036						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||align=&amp;quot;right&amp;quot;|	3.072					&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;||align=&amp;quot;right&amp;quot;|	110				&lt;br /&gt;
|-&lt;br /&gt;
|Gen 7&amp;lt;sup&amp;gt;††&amp;lt;/sup&amp;gt;||align=&amp;quot;right&amp;quot;|	358				&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Includes four Intel Xeon Phi 7210 accelerators and four NVIDIA K80 GPUs.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;sup&amp;gt;††&amp;lt;/sup&amp;gt; Includes 72 [https://images.nvidia.com/content/tesla/pdf/nvidia-tesla-p100-PCIe-datasheet.pdf NVIDIA Tesla P100 16GB] GPUs.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5645</id>
		<title>Template:CheahaTflops</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5645"/>
		<updated>2017-10-15T21:58:32Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-							&lt;br /&gt;
!Generation!!	Type!!	Nodes!!	CPUs per Node!!	Cores Per CPU!!	Total Cores!!Clock Speed (GHz)!!	Instructions Per Cycle	!!Hardware Reference&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||	Intel Xeon E5450||align=&amp;quot;right&amp;quot;|	24||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	4||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	3.00||align=&amp;quot;right&amp;quot;|	4||[http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-(12M-Cache-3_00-GHz-1333-MHz-FSB) Intel Xeon E5450]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||	Intel Xeon X5650||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	6||align=&amp;quot;right&amp;quot;|	576||align=&amp;quot;right&amp;quot;|	2.66||align=&amp;quot;right&amp;quot;|	4||	[http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-(12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI) Intel Xeon E6550]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||	Intel Xeon E5-2680||align=&amp;quot;right&amp;quot;|	3||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2.70||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64583 Intel Xeon E2680]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||	Intel Xeon E5-2650||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	2.00||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64590/Intel-Xeon-Processor-E5-2650-20M-Cache-2_00-GHz-8_00-GTs-Intel-QPI Intel Xeon E2650] (Nodes dedicated to [https://dev.uabgrid.uab.edu/wiki/OpenStackPlusCeph OpenStack+Ceph] with 10Gbs network)&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;||	Intel Xeon E5-2680 v3||align=&amp;quot;right&amp;quot;|	96||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2304||align=&amp;quot;right&amp;quot;|	2.50||align=&amp;quot;right&amp;quot;|	16||	[http://ark.intel.com/products/81908/Intel-Xeon-Processor-E5-2680-v3-30M-Cache-2_50-GHz Intel Xeon E5-2680 v3] &lt;br /&gt;
|-&lt;br /&gt;
|Gen 7&amp;lt;sup&amp;gt;††&amp;lt;/sup&amp;gt;||	Intel Xeon E5-2680 v4||align=&amp;quot;right&amp;quot;|	18||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	14||align=&amp;quot;right&amp;quot;|	504||align=&amp;quot;right&amp;quot;|	2.40||align=&amp;quot;right&amp;quot;|	16||	[https://ark.intel.com/products/91754/Intel-Xeon-Processor-E5-2680-v4-35M-Cache-2_40-GHz Intel Xeon E5-2680 v4] &lt;br /&gt;
&lt;br /&gt;
|}							&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+[http://en.wikipedia.org/wiki/FLOPS#Computing Theoretical Peak Flops] = (number of cores) * (clock speed) * (instructions per cycle)&lt;br /&gt;
|-&lt;br /&gt;
!Generation!!Theoretical Peak Tera-FLOPS						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||align=&amp;quot;right&amp;quot;|	2.304						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||align=&amp;quot;right&amp;quot;|	6.129&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||align=&amp;quot;right&amp;quot;|	1.036						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||align=&amp;quot;right&amp;quot;|	3.072					&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt;||align=&amp;quot;right&amp;quot;|	110				&lt;br /&gt;
|-&lt;br /&gt;
|Gen 7&amp;lt;sup&amp;gt;††&amp;lt;/sup&amp;gt;||align=&amp;quot;right&amp;quot;|	358				&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;†&amp;lt;/sup&amp;gt; Includes four Intel Xeon Phi 7210 accelerators and four NVIDIA K80 GPUs.&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;sup&amp;gt;††&amp;lt;/sup&amp;gt; Includes 72 NVIDIA Tesla P100 16GB GPUs.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5644</id>
		<title>Template:CheahaTflops</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5644"/>
		<updated>2017-10-15T21:57:20Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-							&lt;br /&gt;
!Generation!!	Type!!	Nodes!!	CPUs per Node!!	Cores Per CPU!!	Total Cores!!Clock Speed (GHz)!!	Instructions Per Cycle	!!Hardware Reference&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||	Intel Xeon E5450||align=&amp;quot;right&amp;quot;|	24||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	4||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	3.00||align=&amp;quot;right&amp;quot;|	4||[http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-(12M-Cache-3_00-GHz-1333-MHz-FSB) Intel Xeon E5450]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||	Intel Xeon X5650||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	6||align=&amp;quot;right&amp;quot;|	576||align=&amp;quot;right&amp;quot;|	2.66||align=&amp;quot;right&amp;quot;|	4||	[http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-(12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI) Intel Xeon E6550]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||	Intel Xeon E5-2680||align=&amp;quot;right&amp;quot;|	3||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2.70||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64583 Intel Xeon E2680]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||	Intel Xeon E5-2650||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	2.00||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64590/Intel-Xeon-Processor-E5-2650-20M-Cache-2_00-GHz-8_00-GTs-Intel-QPI Intel Xeon E2650] (Nodes dedicated to [https://dev.uabgrid.uab.edu/wiki/OpenStackPlusCeph OpenStack+Ceph] with 10Gbs network)&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6†||	Intel Xeon E5-2680 v3||align=&amp;quot;right&amp;quot;|	96||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2304||align=&amp;quot;right&amp;quot;|	2.50||align=&amp;quot;right&amp;quot;|	16||	[http://ark.intel.com/products/81908/Intel-Xeon-Processor-E5-2680-v3-30M-Cache-2_50-GHz Intel Xeon E5-2680 v3] &lt;br /&gt;
|-&lt;br /&gt;
|Gen 7††||	Intel Xeon E5-2680 v4||align=&amp;quot;right&amp;quot;|	18||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	14||align=&amp;quot;right&amp;quot;|	504||align=&amp;quot;right&amp;quot;|	2.40||align=&amp;quot;right&amp;quot;|	16||	[https://ark.intel.com/products/91754/Intel-Xeon-Processor-E5-2680-v4-35M-Cache-2_40-GHz Intel Xeon E5-2680 v4] &lt;br /&gt;
&lt;br /&gt;
|}							&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+[http://en.wikipedia.org/wiki/FLOPS#Computing Theoretical Peak Flops] = (number of cores) * (clock speed) * (instructions per cycle)&lt;br /&gt;
|-&lt;br /&gt;
!Generation!!Theoretical Peak Tera-FLOPS						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||align=&amp;quot;right&amp;quot;|	2.304						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||align=&amp;quot;right&amp;quot;|	6.129&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||align=&amp;quot;right&amp;quot;|	1.036						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||align=&amp;quot;right&amp;quot;|	3.072					&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6†||align=&amp;quot;right&amp;quot;|	110				&lt;br /&gt;
|-&lt;br /&gt;
|Gen 7††||align=&amp;quot;right&amp;quot;|	358				&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
† Includes four Intel Xeon Phi 7210 accelerators and four NVIDIA K80 GPUs.&amp;lt;br/&amp;gt;&lt;br /&gt;
†† Includes 72 NVIDIA Tesla P100 16GB GPUs.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5643</id>
		<title>Template:CheahaTflops</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Template:CheahaTflops&amp;diff=5643"/>
		<updated>2017-10-15T21:56:49Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-							&lt;br /&gt;
!Generation!!	Type!!	Nodes!!	CPUs per Node!!	Cores Per CPU!!	Total Cores!!Clock Speed (GHz)!!	Instructions Per Cycle	!!Hardware Reference&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||	Intel Xeon E5450||align=&amp;quot;right&amp;quot;|	24||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	4||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	3.00||align=&amp;quot;right&amp;quot;|	4||[http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-(12M-Cache-3_00-GHz-1333-MHz-FSB) Intel Xeon E5450]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||	Intel Xeon X5650||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	6||align=&amp;quot;right&amp;quot;|	576||align=&amp;quot;right&amp;quot;|	2.66||align=&amp;quot;right&amp;quot;|	4||	[http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-(12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI) Intel Xeon E6550]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||	Intel Xeon E5-2680||align=&amp;quot;right&amp;quot;|	3||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	48||align=&amp;quot;right&amp;quot;|	2.70||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64583 Intel Xeon E2680]&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||	Intel Xeon E5-2650||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	8||align=&amp;quot;right&amp;quot;|	192||align=&amp;quot;right&amp;quot;|	2.00||align=&amp;quot;right&amp;quot;|	8||	[http://ark.intel.com/products/64590/Intel-Xeon-Processor-E5-2650-20M-Cache-2_00-GHz-8_00-GTs-Intel-QPI Intel Xeon E2650] (Nodes dedicated to [https://dev.uabgrid.uab.edu/wiki/OpenStackPlusCeph OpenStack+Ceph] with 10Gbs network)&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6†||	Intel Xeon E5-2680 v3||align=&amp;quot;right&amp;quot;|	96||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	12||align=&amp;quot;right&amp;quot;|	2304||align=&amp;quot;right&amp;quot;|	2.50||align=&amp;quot;right&amp;quot;|	16||	[http://ark.intel.com/products/81908/Intel-Xeon-Processor-E5-2680-v3-30M-Cache-2_50-GHz Intel Xeon E5-2680 v3] &lt;br /&gt;
|-&lt;br /&gt;
|Gen 7††||	Intel Xeon E5-2680 v4||align=&amp;quot;right&amp;quot;|	18||align=&amp;quot;right&amp;quot;|	2||align=&amp;quot;right&amp;quot;|	14||align=&amp;quot;right&amp;quot;|	504||align=&amp;quot;right&amp;quot;|	2.40||align=&amp;quot;right&amp;quot;|	16||	[https://ark.intel.com/products/91754/Intel-Xeon-Processor-E5-2680-v4-35M-Cache-2_40-GHz Intel Xeon E5-2680 v4] &lt;br /&gt;
&lt;br /&gt;
|}							&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+[http://en.wikipedia.org/wiki/FLOPS#Computing Theoretical Peak Flops] = (number of cores) * (clock speed) * (instructions per cycle)&lt;br /&gt;
|-&lt;br /&gt;
!Generation!!Theoretical Peak Tera-FLOPS						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 2||align=&amp;quot;right&amp;quot;|	2.304						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 3||align=&amp;quot;right&amp;quot;|	6.129&lt;br /&gt;
|-&lt;br /&gt;
|Gen 4||align=&amp;quot;right&amp;quot;|	1.036						&lt;br /&gt;
|-&lt;br /&gt;
|Gen 5||align=&amp;quot;right&amp;quot;|	3.072					&lt;br /&gt;
|-&lt;br /&gt;
|Gen 6†||align=&amp;quot;right&amp;quot;|	110				&lt;br /&gt;
|-&lt;br /&gt;
|Gen 7††||align=&amp;quot;right&amp;quot;|	358				&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
† Includes four Intel Xeon Phi 7210 accelerators and four NVIDIA K80 GPUs.&lt;br /&gt;
†† Includes 72 NVIDIA Tesla P100 16GB GPUs.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5642</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5642"/>
		<updated>2017-10-15T21:49:55Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Compute Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The current compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with 2800 cores connected by low-latency Fourteen Data Rate (FDR) and Enhanced Data Rate (EDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
A historical description of the different hardware generations are summarized in the following table:&lt;br /&gt;
* Gen7: 18 2x14 core (504 cores total) 2.4GHz Intel Xeon E5-2680 v4 compute nodes with 256GB RAM, four NVIDIA Tesla P100 16GB GPUs, and EDR InfiniBand interconnect (supported by UAB, 2017).&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs (supported by UAB, 2015/2016).&lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph (supported by UAB IT, 2012).&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect (supported by Section on Statistical Genetics, School of Public Health, 2012).&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect (supported by NIH grant S10RR026723-01, 2010)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect (supported by UAB IT, 2008). &lt;br /&gt;
* Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes (supported by Alabama EPSCoR Research Infrastructure Initiative, NSF EPS-0091853, 2005).  &lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system. In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity by an additional 120TB of high performance Lustre storage on a DDN hardware. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers.&lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
'''UAB 10GigE Research Network''' The UAB Research Network is currently a dedicated 40GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
'''Campus High Speed Network Connectivity''' The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
'''Off-campus Network Connections''' UAB connects to the Internet2 high-speed research network via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center. UAB is also connected to other universities and schools through Alabama Research and Education Network (AREN). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5641</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5641"/>
		<updated>2017-10-15T21:43:52Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Description of Cheaha for Grants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
Welcome to the '''Research Computing System'''&lt;br /&gt;
&lt;br /&gt;
The Research Computing System (RCS) provides a framework for sharing data, accessing compute power, and collaborating with peers on campus and around the globe.  Our goal is to construct a dynamic &amp;quot;network of services&amp;quot; that you can use to organize your data, study it, and share outcomes.&lt;br /&gt;
&lt;br /&gt;
''''docs'''' (the service you are looking at while reading this text) is one of a set of core services, or libraries, available for you to organize information you gather. Docs is a wiki, an online editor to collaboratively write and share documentation. ([http://en.wikipedia.org/wiki/Wiki Wiki is a Hawaiian term] meaning fast.)  You can learn more about '''docs''' on the page [[UnderstandingDocs]].  The docs wiki is filled with pages that document the many different services and applications available on the Research Computing System.  If you see information that looks out of date please don't hesitate to [mailto:support@vo.uabgrid.uab.edu ask about it] or fix it.&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is designed to provide services to researchers in three core areas:&lt;br /&gt;
&lt;br /&gt;
* '''Data Analysis''' - using the High Performance Computing (HPC) fabric we call [[Cheaha]] for analyzing data and running simulations. Many [[Cheaha_Software|applications are already available]] or you can install your own &lt;br /&gt;
* '''Data Sharing''' - supporting the trusted exchange of information using virtual data containers to spark new ideas&lt;br /&gt;
* '''Application Development''' - providing virtual machines and web-hosted development tools empowering you to serve others with your research&lt;br /&gt;
&lt;br /&gt;
== Support and Development ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is developed and supported by UAB IT's Research Computing Group.  We are also developing a core set of applications to help you to easily incorporate our services into your research processes and this documentation collection to help you leverage the resources already available. We follow the best practices of the Open Source community and develop the RCS openly.  You can follow our progress via the [http://dev.uabgrid.uab.edu our development wiki].&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is an out growth of the UABgrid pilot, launched in September 2007 which has focused on demonstrating the utility of unlimited analysis, storage, and application for research.  RCS is being built on the same technology foundations used by major cloud vendors and decades of distributed systems computing research, technology that powered the last ten years of large scale systems serving prominent national and international initiatives like the [http://opensciencegrid.org/ Open Science Grid], [http://xsede.org XSEDE], [http://www.teragrid.org/ TeraGrid], the [http://lcg.web.cern.ch/LCG/ LHC Computing Grid], and [https://cabig.nci.nih.gov caBIG].&lt;br /&gt;
&lt;br /&gt;
== Outreach ==&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing Group has collaborated with a number of prominent research projects at UAB to identify use cases and develop the requirements for the RCS.  Our collaborators include the Center for Clinical and Translational Science (CCTS), Heflin Genomics Center, the Comprehensive Cancer Center (CCC), the Department of Computer and Information Sciences (CIS), the Department of Mechanical Engineering (ME), Lister Hill Library, the School of Optometry's Center for the Development of Functional Imaging, and Health System Information Services (HSIS). &lt;br /&gt;
&lt;br /&gt;
As part of the process of building this research computing platform, the UAB IT Research Computing Group has hosted an annual campus symposium on research computing and cyber-infrastructure (CI) developments and accomplishments. Starting as CyberInfrastructure (CI) Days in 2007, the name was changed to [http://docs.uabgrid.uab.edu/wiki/UAB_Research_Computing_Day '''UAB Research Computing Day'''] in 2011 to reflect the broader mission to support research.  IT Research Computing also participates in other campus wide symposiums including UAB Research Core Day.&lt;br /&gt;
&lt;br /&gt;
== Featured Research Applications ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing Group also helps support the campus MATLAB license with self-service installation documentation and supports using MATLAB on the HPC platform, providing a pathway to expand your computational power and freeing your laptop from serving as a compute platform.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
| UAB MATLAB Information |&lt;br /&gt;
In January 2011, UAB acquired a site license from Mathworks for MATLAB, SimuLink and 42 Toolboxes.  &lt;br /&gt;
* Learn more about [[MATLAB|MATLAB and how you can use it at UAB]]&lt;br /&gt;
* Learn more about the [[UAB TAH license|UAB Mathworks Site license]] and review [[Matlab site license FAQ|frequently asked questions about the license]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing group, the CCTS BMI, and [http://www.uab.edu/hcgs/bioinformatics Heflin Center for Genomic Science] have teamed up to help improve genomic research at UAB.  Researchers can work with the scientists and research experts to produce a research pipeline from sequencing, to analysis, to publication.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
|'''Galaxy'''|&lt;br /&gt;
A web front end to run analyses on the cluster fabric. Currently focused on NGS (Next Generation Sequencing; biology) analysis support. &lt;br /&gt;
* [[Galaxy|Galaxy Project Home]]&lt;br /&gt;
* [http://projects.uabgrid.uab.edu/galaxy Galaxy Development Wiki]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha. Any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  We also request that you send us a list of publications based on your use of Cheaha resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2800 conventional CPU cores and 80 accelerators interconnected via InfiniBand network and provides 468 TFLOP/s of aggregate theoretical peak performance. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these compute nodes via the Infiniband fabric. An additional 20TB of traditional SAN storage is also available for home directories. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5640</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5640"/>
		<updated>2017-10-15T21:39:43Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
Welcome to the '''Research Computing System'''&lt;br /&gt;
&lt;br /&gt;
The Research Computing System (RCS) provides a framework for sharing data, accessing compute power, and collaborating with peers on campus and around the globe.  Our goal is to construct a dynamic &amp;quot;network of services&amp;quot; that you can use to organize your data, study it, and share outcomes.&lt;br /&gt;
&lt;br /&gt;
''''docs'''' (the service you are looking at while reading this text) is one of a set of core services, or libraries, available for you to organize information you gather. Docs is a wiki, an online editor to collaboratively write and share documentation. ([http://en.wikipedia.org/wiki/Wiki Wiki is a Hawaiian term] meaning fast.)  You can learn more about '''docs''' on the page [[UnderstandingDocs]].  The docs wiki is filled with pages that document the many different services and applications available on the Research Computing System.  If you see information that looks out of date please don't hesitate to [mailto:support@vo.uabgrid.uab.edu ask about it] or fix it.&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is designed to provide services to researchers in three core areas:&lt;br /&gt;
&lt;br /&gt;
* '''Data Analysis''' - using the High Performance Computing (HPC) fabric we call [[Cheaha]] for analyzing data and running simulations. Many [[Cheaha_Software|applications are already available]] or you can install your own &lt;br /&gt;
* '''Data Sharing''' - supporting the trusted exchange of information using virtual data containers to spark new ideas&lt;br /&gt;
* '''Application Development''' - providing virtual machines and web-hosted development tools empowering you to serve others with your research&lt;br /&gt;
&lt;br /&gt;
== Support and Development ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is developed and supported by UAB IT's Research Computing Group.  We are also developing a core set of applications to help you to easily incorporate our services into your research processes and this documentation collection to help you leverage the resources already available. We follow the best practices of the Open Source community and develop the RCS openly.  You can follow our progress via the [http://dev.uabgrid.uab.edu our development wiki].&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is an out growth of the UABgrid pilot, launched in September 2007 which has focused on demonstrating the utility of unlimited analysis, storage, and application for research.  RCS is being built on the same technology foundations used by major cloud vendors and decades of distributed systems computing research, technology that powered the last ten years of large scale systems serving prominent national and international initiatives like the [http://opensciencegrid.org/ Open Science Grid], [http://xsede.org XSEDE], [http://www.teragrid.org/ TeraGrid], the [http://lcg.web.cern.ch/LCG/ LHC Computing Grid], and [https://cabig.nci.nih.gov caBIG].&lt;br /&gt;
&lt;br /&gt;
== Outreach ==&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing Group has collaborated with a number of prominent research projects at UAB to identify use cases and develop the requirements for the RCS.  Our collaborators include the Center for Clinical and Translational Science (CCTS), Heflin Genomics Center, the Comprehensive Cancer Center (CCC), the Department of Computer and Information Sciences (CIS), the Department of Mechanical Engineering (ME), Lister Hill Library, the School of Optometry's Center for the Development of Functional Imaging, and Health System Information Services (HSIS). &lt;br /&gt;
&lt;br /&gt;
As part of the process of building this research computing platform, the UAB IT Research Computing Group has hosted an annual campus symposium on research computing and cyber-infrastructure (CI) developments and accomplishments. Starting as CyberInfrastructure (CI) Days in 2007, the name was changed to [http://docs.uabgrid.uab.edu/wiki/UAB_Research_Computing_Day '''UAB Research Computing Day'''] in 2011 to reflect the broader mission to support research.  IT Research Computing also participates in other campus wide symposiums including UAB Research Core Day.&lt;br /&gt;
&lt;br /&gt;
== Featured Research Applications ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing Group also helps support the campus MATLAB license with self-service installation documentation and supports using MATLAB on the HPC platform, providing a pathway to expand your computational power and freeing your laptop from serving as a compute platform.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
| UAB MATLAB Information |&lt;br /&gt;
In January 2011, UAB acquired a site license from Mathworks for MATLAB, SimuLink and 42 Toolboxes.  &lt;br /&gt;
* Learn more about [[MATLAB|MATLAB and how you can use it at UAB]]&lt;br /&gt;
* Learn more about the [[UAB TAH license|UAB Mathworks Site license]] and review [[Matlab site license FAQ|frequently asked questions about the license]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing group, the CCTS BMI, and [http://www.uab.edu/hcgs/bioinformatics Heflin Center for Genomic Science] have teamed up to help improve genomic research at UAB.  Researchers can work with the scientists and research experts to produce a research pipeline from sequencing, to analysis, to publication.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
|'''Galaxy'''|&lt;br /&gt;
A web front end to run analyses on the cluster fabric. Currently focused on NGS (Next Generation Sequencing; biology) analysis support. &lt;br /&gt;
* [[Galaxy|Galaxy Project Home]]&lt;br /&gt;
* [http://projects.uabgrid.uab.edu/galaxy Galaxy Development Wiki]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha. Any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  We also request that you send us a list of publications based on your use of Cheaha resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2800 conventional CPU cores and 80 accelerators interconnected via InfiniBand network and provides 468 TFLOP/s of aggregate theoretical peak performance. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage is also available for home directories. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5637</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5637"/>
		<updated>2017-10-10T16:53:43Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015 === &lt;br /&gt;
&lt;br /&gt;
UAB IT received $500,000 from the university’s Mission Support Fund for a compute cluster seed expansion of 48 teraflops.  This added 936 cores across 40 nodes with 2x12 core 2.5 GHz Intel Xeon E5-2680 v3 compute nodes and FDR InfiniBand interconnect.&lt;br /&gt;
&lt;br /&gt;
UAB received a $500,000 grant from the Alabama Innovation Fund for a three petabyte research storage array. This funding with additional matching from UAB provided a multi-petabyte [https://en.wikipedia.org/wiki/IBM_General_Parallel_File_System GPFS] parallel file system to the cluster which went live in 2016.&lt;br /&gt;
&lt;br /&gt;
=== 2016 ===&lt;br /&gt;
&lt;br /&gt;
In 2016 UAB IT Research computing received additional funding from Deans of CAS, Engineering, and Public Heath to grow the compute capacity provided by the prior year's seed funding.  This added an additional compute nodes providing researchers at UAB with a 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].  &lt;br /&gt;
&lt;br /&gt;
In addition to the compute, the GPFS six petabyte file system came online. This file system, provided each user five terabyte of personal space, additional space for shared projects and a greatly expanded scratch storage all in a single file system.&lt;br /&gt;
&lt;br /&gt;
The 2015 and 2016 investments combined to provide a completely new core for the Cheaha cluster, allowing the retirement of earlier compute generations.&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5626</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5626"/>
		<updated>2017-10-06T19:58:58Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5625</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5625"/>
		<updated>2017-10-06T19:58:18Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5624</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5624"/>
		<updated>2017-10-06T19:56:39Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Regional Networks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The current compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with 2400 cores connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
A historical description of the different hardware generations are summarized in the following table:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs (supported by UAB, 2015/2016).&lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph (supported by UAB IT, 2012).&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect (supported by Section on Statistical Genetics, School of Public Health, 2012).&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect (supported by NIH grant S10RR026723-01, 2010)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect (supported by UAB IT, 2008). &lt;br /&gt;
* Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes (supported by Alabama EPSCoR Research Infrastructure Initiative, NSF EPS-0091853, 2005).  &lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system. In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity by an additional 120TB of high performance Lustre storage on a DDN hardware. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers.&lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
'''UAB 10GigE Research Network''' The UAB Research Network is currently a dedicated 40GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
'''Campus High Speed Network Connectivity''' The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
'''Off-campus Network Connections''' UAB connects to the Internet2 high-speed research network via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center. UAB is also connected to other universities and schools through Alabama Research and Education Network (AREN). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5623</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5623"/>
		<updated>2017-10-06T19:54:03Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Description of Cheaha for Grants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
Welcome to the '''Research Computing System'''&lt;br /&gt;
&lt;br /&gt;
The Research Computing System (RCS) provides a framework for sharing data, accessing compute power, and collaborating with peers on campus and around the globe.  Our goal is to construct a dynamic &amp;quot;network of services&amp;quot; that you can use to organize your data, study it, and share outcomes.&lt;br /&gt;
&lt;br /&gt;
''''docs'''' (the service you are looking at while reading this text) is one of a set of core services, or libraries, available for you to organize information you gather. Docs is a wiki, an online editor to collaboratively write and share documentation. ([http://en.wikipedia.org/wiki/Wiki Wiki is a Hawaiian term] meaning fast.)  You can learn more about '''docs''' on the page [[UnderstandingDocs]].  The docs wiki is filled with pages that document the many different services and applications available on the Research Computing System.  If you see information that looks out of date please don't hesitate to [mailto:support@vo.uabgrid.uab.edu ask about it] or fix it.&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is designed to provide services to researchers in three core areas:&lt;br /&gt;
&lt;br /&gt;
* '''Data Analysis''' - using the High Performance Computing (HPC) fabric we call [[Cheaha]] for analyzing data and running simulations. Many [[Cheaha_Software|applications are already available]] or you can install your own &lt;br /&gt;
* '''Data Sharing''' - supporting the trusted exchange of information using virtual data containers to spark new ideas&lt;br /&gt;
* '''Application Development''' - providing virtual machines and web-hosted development tools empowering you to serve others with your research&lt;br /&gt;
&lt;br /&gt;
== Support and Development ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is developed and supported by UAB IT's Research Computing Group.  We are also developing a core set of applications to help you to easily incorporate our services into your research processes and this documentation collection to help you leverage the resources already available. We follow the best practices of the Open Source community and develop the RCS openly.  You can follow our progress via the [http://dev.uabgrid.uab.edu our development wiki].&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is an out growth of the UABgrid pilot, launched in September 2007 which has focused on demonstrating the utility of unlimited analysis, storage, and application for research.  RCS is being built on the same technology foundations used by major cloud vendors and decades of distributed systems computing research, technology that powered the last ten years of large scale systems serving prominent national and international initiatives like the [http://opensciencegrid.org/ Open Science Grid], [http://xsede.org XSEDE], [http://www.teragrid.org/ TeraGrid], the [http://lcg.web.cern.ch/LCG/ LHC Computing Grid], and [https://cabig.nci.nih.gov caBIG].&lt;br /&gt;
&lt;br /&gt;
== Outreach ==&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing Group has collaborated with a number of prominent research projects at UAB to identify use cases and develop the requirements for the RCS.  Our collaborators include the Center for Clinical and Translational Science (CCTS), Heflin Genomics Center, the Comprehensive Cancer Center (CCC), the Department of Computer and Information Sciences (CIS), the Department of Mechanical Engineering (ME), Lister Hill Library, the School of Optometry's Center for the Development of Functional Imaging, and Health System Information Services (HSIS). &lt;br /&gt;
&lt;br /&gt;
As part of the process of building this research computing platform, the UAB IT Research Computing Group has hosted an annual campus symposium on research computing and cyber-infrastructure (CI) developments and accomplishments. Starting as CyberInfrastructure (CI) Days in 2007, the name was changed to [http://docs.uabgrid.uab.edu/wiki/UAB_Research_Computing_Day '''UAB Research Computing Day'''] in 2011 to reflect the broader mission to support research.  IT Research Computing also participates in other campus wide symposiums including UAB Research Core Day.&lt;br /&gt;
&lt;br /&gt;
== Featured Research Applications ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing Group also helps support the campus MATLAB license with self-service installation documentation and supports using MATLAB on the HPC platform, providing a pathway to expand your computational power and freeing your laptop from serving as a compute platform.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
| UAB MATLAB Information |&lt;br /&gt;
In January 2011, UAB acquired a site license from Mathworks for MATLAB, SimuLink and 42 Toolboxes.  &lt;br /&gt;
* Learn more about [[MATLAB|MATLAB and how you can use it at UAB]]&lt;br /&gt;
* Learn more about the [[UAB TAH license|UAB Mathworks Site license]] and review [[Matlab site license FAQ|frequently asked questions about the license]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing group, the CCTS BMI, and [http://www.uab.edu/hcgs/bioinformatics Heflin Center for Genomic Science] have teamed up to help improve genomic research at UAB.  Researchers can work with the scientists and research experts to produce a research pipeline from sequencing, to analysis, to publication.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
|'''Galaxy'''|&lt;br /&gt;
A web front end to run analyses on the cluster fabric. Currently focused on NGS (Next Generation Sequencing; biology) analysis support. &lt;br /&gt;
* [[Galaxy|Galaxy Project Home]]&lt;br /&gt;
* [http://projects.uabgrid.uab.edu/galaxy Galaxy Development Wiki]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha. Any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  We also request that you send us a list of publications based on your use of Cheaha resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage is also available for home directories. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_Software&amp;diff=5622</id>
		<title>Cheaha Software</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_Software&amp;diff=5622"/>
		<updated>2017-10-06T15:06:42Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows a list of installed modules on the [[Cheaha]] research computing system. If you don't find a particular package listed on this page, please send a request to [mailto:support@vo.uabgrid.uab.edu cheaha support] to request the software.&lt;br /&gt;
&lt;br /&gt;
This list is not exhaustive and may not reflect the accurate current versions of the different software installed on the system. Please see the output of the '''module avail''' command for the official list of software modules installed on Cheaha.&lt;br /&gt;
&lt;br /&gt;
==Software modules installed on Cheaha==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
! Software&lt;br /&gt;
! Latest Version&lt;br /&gt;
! Other Versions&lt;br /&gt;
! Remarks&lt;br /&gt;
|-&lt;br /&gt;
|'''[[AFNI]]'''&lt;br /&gt;
|AFNI_Jun_25_2013&lt;br /&gt;
|AFNI_2011_12_21_1014&lt;br /&gt;
|linux openmp 64, linux Xorg7 64&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Affymetrix]]'''&lt;br /&gt;
|1.14.3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Amber]]'''&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ANNOVAR]]'''&lt;br /&gt;
|2012Feb23&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts 2013.09.11/2013.04.03&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ANSYS]]'''&lt;br /&gt;
|14.5&lt;br /&gt;
|14.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[APBS]]'''&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Aspera]]'''&lt;br /&gt;
|2.4.7&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Atlas]]'''&lt;br /&gt;
|3.8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[AutoDock]]'''&lt;br /&gt;
|4.2.3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Birdsuite]]'''&lt;br /&gt;
|1.5.5&lt;br /&gt;
|1.5.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Bowtie]]'''&lt;br /&gt;
|0.9&lt;br /&gt;
|0.10,0.12&lt;br /&gt;
|ngs-ccts 2.1.0&lt;br /&gt;
|-&lt;br /&gt;
|'''[[bwa]]'''&lt;br /&gt;
|0.6.2&lt;br /&gt;
|0.5.10,0.5.9&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[cgatools]]'''&lt;br /&gt;
|1.8.0&lt;br /&gt;
|1.7.1,1.5.0&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[CHASE]]'''&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[cmake]]'''&lt;br /&gt;
|2.8.10.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[CUDA]]'''&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[COMSOL]]'''&lt;br /&gt;
|4.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Cufflinks]]'''&lt;br /&gt;
|0.9&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts 2.1.1&lt;br /&gt;
|-&lt;br /&gt;
|'''[[DSSP]]'''&lt;br /&gt;
|2.0.4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Eclipse]]'''&lt;br /&gt;
|4.3.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[eigenstrat]]'''&lt;br /&gt;
|2.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[EMAN2]]'''&lt;br /&gt;
|2.02&lt;br /&gt;
|&lt;br /&gt;
|??&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ENT]]'''&lt;br /&gt;
|1.0.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[fastPHASE]]'''&lt;br /&gt;
|1.4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[FFTW]]'''&lt;br /&gt;
|3.1.2&lt;br /&gt;
|&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[FreeSurfer]]'''&lt;br /&gt;
|5.3.0&lt;br /&gt;
|4.5,5.2.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[FREGENE]]'''&lt;br /&gt;
|2008&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Fsl]]'''&lt;br /&gt;
|5.0.6&lt;br /&gt;
|4.1.6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Galaxy]]'''&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gcc]]'''&lt;br /&gt;
|4.8.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[genn]]'''&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Gromacs]]'''&lt;br /&gt;
|4.6.1&lt;br /&gt;
|4,4.5&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[GTOOL]]'''&lt;br /&gt;
|0.6.7&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HAPGEN]]'''&lt;br /&gt;
|1.3.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Haskell/GHC]]'''&lt;br /&gt;
|6.10.4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HYPERWORKS]]'''&lt;br /&gt;
|12.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Illuminus]]'''&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[IMPUTE2]]'''&lt;br /&gt;
|2.3.0&lt;br /&gt;
|2.1.2,2.1.0, 2.0.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[JAGS]]'''&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|gnu&lt;br /&gt;
|-&lt;br /&gt;
|'''[[LAM-MPI]]'''&lt;br /&gt;
|7.1&lt;br /&gt;
|&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[LS-DYNA]]'''&lt;br /&gt;
|9.7.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MACH]]'''&lt;br /&gt;
|1.0.16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MACS]]'''&lt;br /&gt;
|1.3.6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Magma]]'''&lt;br /&gt;
|5.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Maq]]'''&lt;br /&gt;
|0.7.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MarthLab]]'''&lt;br /&gt;
|mosaik 0.9.891&lt;br /&gt;
|gigabayes, pyrobayes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MATLAB]]'''&lt;br /&gt;
|R2013a&lt;br /&gt;
|R2009(a,b),R2010(a,b),R2011(a,b),R2012a&lt;br /&gt;
|DCS-128&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MPICH]]'''&lt;br /&gt;
|2&lt;br /&gt;
|1.2&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[mplayer]]'''&lt;br /&gt;
|1.1.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MrBayes]]'''&lt;br /&gt;
|3.1.2&lt;br /&gt;
|&lt;br /&gt;
|intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MVAPICH]]'''&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|gnu&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Namd]]'''&lt;br /&gt;
|2.9&lt;br /&gt;
|2.8,2.7,2.6&lt;br /&gt;
|ibverbs&lt;br /&gt;
|-&lt;br /&gt;
|'''[[OpenMPI]]'''&lt;br /&gt;
|1.6.4&lt;br /&gt;
|1.2&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ParaView]]'''&lt;br /&gt;
|3.12&lt;br /&gt;
|3.4,3.6,3.8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PDT]]'''&lt;br /&gt;
|3.19&lt;br /&gt;
|3.14,3.17&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PennCNV]]'''&lt;br /&gt;
|2010May01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[petsc]]'''&lt;br /&gt;
|3.4.3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PHASE]]'''&lt;br /&gt;
|2.1.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PLINK]]'''&lt;br /&gt;
|1.07&lt;br /&gt;
|1.06,1.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Python]]'''&lt;br /&gt;
|2.7&lt;br /&gt;
|2.6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[R]]'''&lt;br /&gt;
|3.0.1&lt;br /&gt;
|2.6.2,2.7.2,2.8.1,2.9.0,2.9.2,2.11.1,2.12.2,2.14.2,2.15.0,2.15.3,3.0.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[RAxML]]'''&lt;br /&gt;
|7.2.6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[RNA pipeline]]'''&lt;br /&gt;
|0.5.0&lt;br /&gt;
|0.31&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[S.A.G.E.]]'''&lt;br /&gt;
|6.2&lt;br /&gt;
|6.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SAMtools]]'''&lt;br /&gt;
|0.1&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts 0.1.19&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ScaleMP]]'''&lt;br /&gt;
|3.2.2&lt;br /&gt;
|&lt;br /&gt;
|fftw optimized&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SHRiMP]]'''&lt;br /&gt;
|1.3&lt;br /&gt;
|1.2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SOLAR]]'''&lt;br /&gt;
|4.3.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SPPARKS]]'''&lt;br /&gt;
|30May11&lt;br /&gt;
|07Aug09&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Structure]]'''&lt;br /&gt;
|2.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[tabix]]'''&lt;br /&gt;
|0.2.6&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[TAU]]'''&lt;br /&gt;
|2.22.2&lt;br /&gt;
|2.21.1&lt;br /&gt;
|lam, open mpi&lt;br /&gt;
|-&lt;br /&gt;
|'''[[TopHat]]'''&lt;br /&gt;
|1.1&lt;br /&gt;
|1.0.8&lt;br /&gt;
|ngs-ccts 2.0.10&lt;br /&gt;
|-&lt;br /&gt;
|'''[[varianttools]]'''&lt;br /&gt;
|1.0.1&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[vcftools]]'''&lt;br /&gt;
|0.1.11&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[VEGAS]]'''&lt;br /&gt;
|0.8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[velvet]]'''&lt;br /&gt;
|1.2.10&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[VMD]]'''&lt;br /&gt;
|1.9.0&lt;br /&gt;
|1.8.6&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_Software&amp;diff=5621</id>
		<title>Cheaha Software</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_Software&amp;diff=5621"/>
		<updated>2017-10-06T15:06:13Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Software modules installed on Cheaha */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows a list of installed modules on the [[Cheaha]] research computing system. If you don't find a particular package listed on this page, please send a request to [mailto:support@vo.uabgrid.uab.edu cheaha support] to request the software.&lt;br /&gt;
&lt;br /&gt;
This list is not exhaustive and may not reflect the accurate current versions of the different software installed on the system. Please see the output of the '''module avail''' command for the official list of software modules installed on Cheaha.&lt;br /&gt;
&lt;br /&gt;
==Software modules installed on Cheaha==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
! Software&lt;br /&gt;
! Latest Version&lt;br /&gt;
! Other Versions&lt;br /&gt;
! Remarks&lt;br /&gt;
|-&lt;br /&gt;
|'''[[AFNI]]'''&lt;br /&gt;
|AFNI_Jun_25_2013&lt;br /&gt;
|AFNI_2011_12_21_1014&lt;br /&gt;
|linux openmp 64, linux Xorg7 64&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Affymetrix]]'''&lt;br /&gt;
|1.14.3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Amber]]'''&lt;br /&gt;
|10&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ANNOVAR]]'''&lt;br /&gt;
|2012Feb23&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts 2013.09.11/2013.04.03&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ANSYS]]'''&lt;br /&gt;
|14.5&lt;br /&gt;
|14.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[APBS]]'''&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Aspera]]'''&lt;br /&gt;
|2.4.7&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Atlas]]'''&lt;br /&gt;
|3.8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[AutoDock]]'''&lt;br /&gt;
|4.2.3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Birdsuite]]'''&lt;br /&gt;
|1.5.5&lt;br /&gt;
|1.5.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Bowtie]]'''&lt;br /&gt;
|0.9&lt;br /&gt;
|0.10,0.12&lt;br /&gt;
|ngs-ccts 2.1.0&lt;br /&gt;
|-&lt;br /&gt;
|'''[[bwa]]'''&lt;br /&gt;
|0.6.2&lt;br /&gt;
|0.5.10,0.5.9&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[cgatools]]'''&lt;br /&gt;
|1.8.0&lt;br /&gt;
|1.7.1,1.5.0&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[CHASE]]'''&lt;br /&gt;
|1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[cmake]]'''&lt;br /&gt;
|2.8.10.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[CUDA]]'''&lt;br /&gt;
|4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[COMSOL]]'''&lt;br /&gt;
|4.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Cufflinks]]'''&lt;br /&gt;
|0.9&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts 2.1.1&lt;br /&gt;
|-&lt;br /&gt;
|'''[[DSSP]]'''&lt;br /&gt;
|2.0.4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Eclipse]]'''&lt;br /&gt;
|4.3.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[eigenstrat]]'''&lt;br /&gt;
|2.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[EMAN2]]'''&lt;br /&gt;
|2.02&lt;br /&gt;
|&lt;br /&gt;
|??&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ENT]]'''&lt;br /&gt;
|1.0.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[fastPHASE]]'''&lt;br /&gt;
|1.4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[FFTW]]'''&lt;br /&gt;
|3.1.2&lt;br /&gt;
|&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[FreeSurfer]]'''&lt;br /&gt;
|5.3.0&lt;br /&gt;
|4.5,5.2.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[FREGENE]]'''&lt;br /&gt;
|2008&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Fsl]]'''&lt;br /&gt;
|5.0.6&lt;br /&gt;
|4.1.6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Galaxy]]'''&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[gcc]]'''&lt;br /&gt;
|4.8.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[genn]]'''&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Gromacs]]'''&lt;br /&gt;
|4.6.1&lt;br /&gt;
|4,4.5&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[GTOOL]]'''&lt;br /&gt;
|0.6.7&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HAPGEN]]'''&lt;br /&gt;
|1.3.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Haskell/GHC]]'''&lt;br /&gt;
|6.10.4&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[HYPERWORKS]]'''&lt;br /&gt;
|12.0&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Illuminus]]'''&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[IMPUTE2]]'''&lt;br /&gt;
|2.3.0&lt;br /&gt;
|2.1.2,2.1.0, 2.0.3&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[JAGS]]'''&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|gnu&lt;br /&gt;
|-&lt;br /&gt;
|'''[[LAM-MPI]]'''&lt;br /&gt;
|7.1&lt;br /&gt;
|&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[LS-DYNA]]'''&lt;br /&gt;
|9.7.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MACH]]'''&lt;br /&gt;
|1.0.16&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MACS]]'''&lt;br /&gt;
|1.3.6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Magma]]'''&lt;br /&gt;
|5.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Maq]]'''&lt;br /&gt;
|0.7.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MarthLab]]'''&lt;br /&gt;
|mosaik 0.9.891&lt;br /&gt;
|gigabayes, pyrobayes&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MATLAB]]'''&lt;br /&gt;
|R2013a&lt;br /&gt;
|R2009(a,b),R2010(a,b),R2011(a,b),R2012a&lt;br /&gt;
|DCS-128&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MPICH]]'''&lt;br /&gt;
|2&lt;br /&gt;
|1.2&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[mplayer]]'''&lt;br /&gt;
|1.1.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MrBayes]]'''&lt;br /&gt;
|3.1.2&lt;br /&gt;
|&lt;br /&gt;
|intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[MVAPICH]]'''&lt;br /&gt;
|2&lt;br /&gt;
|&lt;br /&gt;
|gnu&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Namd]]'''&lt;br /&gt;
|2.9&lt;br /&gt;
|2.8,2.7,2.6&lt;br /&gt;
|ibverbs&lt;br /&gt;
|-&lt;br /&gt;
|'''[[OpenMPI]]'''&lt;br /&gt;
|1.6.4&lt;br /&gt;
|1.2&lt;br /&gt;
|gnu/intel&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ParaView]]'''&lt;br /&gt;
|3.12&lt;br /&gt;
|3.4,3.6,3.8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PDT]]'''&lt;br /&gt;
|3.19&lt;br /&gt;
|3.14,3.17&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PennCNV]]'''&lt;br /&gt;
|2010May01&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[petsc]]'''&lt;br /&gt;
|3.4.3&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PHASE]]'''&lt;br /&gt;
|2.1.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[PLINK]]'''&lt;br /&gt;
|1.07&lt;br /&gt;
|1.06,1.05&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Python]]'''&lt;br /&gt;
|2.7&lt;br /&gt;
|2.6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[R]]'''&lt;br /&gt;
|3.0.1&lt;br /&gt;
|2.6.2,2.7.2,2.8.1,2.9.0,2.9.2,2.11.1,2.12.2,2.14.2,2.15.0,2.15.3,3.0.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[RAxML]]'''&lt;br /&gt;
|7.2.6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[RNA pipeline]]'''&lt;br /&gt;
|0.5.0&lt;br /&gt;
|0.31&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[S.A.G.E.]]'''&lt;br /&gt;
|6.2&lt;br /&gt;
|6.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SAMtools]]'''&lt;br /&gt;
|0.1&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts 0.1.19&lt;br /&gt;
|-&lt;br /&gt;
|'''[[ScaleMP]]'''&lt;br /&gt;
|3.2.2&lt;br /&gt;
|&lt;br /&gt;
|fftw optimized&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SHRiMP]]'''&lt;br /&gt;
|1.3&lt;br /&gt;
|1.2&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SOLAR]]'''&lt;br /&gt;
|4.3.1&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[SPPARKS]]'''&lt;br /&gt;
|30May11&lt;br /&gt;
|07Aug09&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[Structure]]'''&lt;br /&gt;
|2.2&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[tabix]]'''&lt;br /&gt;
|0.2.6&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[TAU]]'''&lt;br /&gt;
|2.22.2&lt;br /&gt;
|2.21.1&lt;br /&gt;
|lam, open mpi&lt;br /&gt;
|-&lt;br /&gt;
|'''[[TopHat]]'''&lt;br /&gt;
|1.1&lt;br /&gt;
|1.0.8&lt;br /&gt;
|ngs-ccts 2.0.10&lt;br /&gt;
|-&lt;br /&gt;
|'''[[varianttools]]'''&lt;br /&gt;
|1.0.1&lt;br /&gt;
|1.0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[vcftools]]'''&lt;br /&gt;
|0.1.11&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[VEGAS]]'''&lt;br /&gt;
|0.8&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|'''[[velvet]]'''&lt;br /&gt;
|1.2.10&lt;br /&gt;
|&lt;br /&gt;
|ngs-ccts &lt;br /&gt;
|-&lt;br /&gt;
|'''[[VMD]]'''&lt;br /&gt;
|1.9.0&lt;br /&gt;
|1.8.6&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Help:Contents&amp;diff=5620</id>
		<title>Help:Contents</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Help:Contents&amp;diff=5620"/>
		<updated>2017-10-06T15:04:14Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The documentation on this site will continue to be updated and will evolve as answers to questions are defined.  Feel free to contribute to the documentation.&lt;br /&gt;
&lt;br /&gt;
The best way help is to engage and ask questions (see the mailing list Information below).&lt;br /&gt;
&lt;br /&gt;
Detailed documentation covering the construction of UABgrid is available via the [http://dev.uabgrid.uab.edu development portal].&lt;br /&gt;
&lt;br /&gt;
== Mailing Lists ==&lt;br /&gt;
&lt;br /&gt;
* UABgrid Developers - This list is for people working on the design and development of UABgrid.&lt;br /&gt;
** [http://vo.uabgrid.uab.edu/sympa/arc/uabgrid-dev archive]&lt;br /&gt;
** [http://vo.uabgrid.uab.edu/sympa/subscribe/uabgrid-dev subscribe]&lt;br /&gt;
** [http://vo.uabgrid.uab.edu/sympa/signoff/uabgrid-dev unsubscribe]&lt;br /&gt;
&lt;br /&gt;
* UABgrid Users - This list is for people using UABgrid.  This is the best place to ask questions and to get involved.&lt;br /&gt;
** [http://vo.uabgrid.uab.edu/sympa/arc/uabgrid-user archive]&lt;br /&gt;
** [http://vo.uabgrid.uab.edu/sympa/subscribe/uabgrid-user subscribe]&lt;br /&gt;
** [http://vo.uabgrid.uab.edu/sympa/signoff/uabgrid-user unsubscribe]&lt;br /&gt;
&lt;br /&gt;
== Wiki Help ==&lt;br /&gt;
&lt;br /&gt;
For help on how to edit entries on this site please see [[Help:Editing]]. Additional information that is useful:&lt;br /&gt;
&lt;br /&gt;
* [[Help:FAQ|FAQ]] for common tasks carried out in the wiki (e.g. adding images).&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Help:Formatting Help Formatting]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Help:Footnotes Help with Footnotes]&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Wikipedia:Cheatsheet Wikipedia Editing Cheat-Sheet]&lt;br /&gt;
* [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Help:Configuration_settings Configuration settings list]&lt;br /&gt;
* [http://www.mediawiki.org/wiki/Help:FAQ MediaWiki FAQ]&lt;br /&gt;
* [http://mail.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5619</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5619"/>
		<updated>2017-10-06T15:03:07Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Compute Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The current compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with 2400 cores connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
A historical description of the different hardware generations are summarized in the following table:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs (supported by UAB, 2015/2016).&lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph (supported by UAB IT, 2012).&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect (supported by Section on Statistical Genetics, School of Public Health, 2012).&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect (supported by NIH grant S10RR026723-01, 2010)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect (supported by UAB IT, 2008). &lt;br /&gt;
* Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes (supported by Alabama EPSCoR Research Infrastructure Initiative, NSF EPS-0091853, 2005).  &lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system. In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity by an additional 120TB of high performance Lustre storage on a DDN hardware. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers.&lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
'''UAB 10GigE Research Network''' The UAB Research Network is currently a dedicated 40GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
'''Campus High Speed Network Connectivity''' The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
Off-campus Network Connections UAB connects to the Internet2 and National LambdaRail (NLR) high-speed research networks via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center utilizing Gigabit Ethernet speeds. UAB is also connected to other universities and schools through AREN (Alabama Research and Education Network). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5618</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5618"/>
		<updated>2017-10-06T15:00:48Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Network Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The current compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with 2400 cores connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
A historical description of the different hardware generations are summarized in the following table:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. (Supported by UAB, 2015/2016)&lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph. (Sponsored by UAB IT, 2012)&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect. (Sponsored by Section on Statistical Genetics, School of Public Health, 2012)&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect. (Supported by NIH grant S10RR026723-01, 2010)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect. (Sponsored by UAB IT, 2008) &lt;br /&gt;
* Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes (Alabama EPSCoR Research Infrastructure Initiative, NSF EPS-0091853, 2005).  &lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system. In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity by an additional 120TB of high performance Lustre storage on a DDN hardware. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers.&lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
'''UAB 10GigE Research Network''' The UAB Research Network is currently a dedicated 40GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
'''Campus High Speed Network Connectivity''' The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
Off-campus Network Connections UAB connects to the Internet2 and National LambdaRail (NLR) high-speed research networks via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center utilizing Gigabit Ethernet speeds. UAB is also connected to other universities and schools through AREN (Alabama Research and Education Network). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5617</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5617"/>
		<updated>2017-10-06T14:59:10Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Storage Resources */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The current compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with 2400 cores connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
A historical description of the different hardware generations are summarized in the following table:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. (Supported by UAB, 2015/2016)&lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph. (Sponsored by UAB IT, 2012)&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect. (Sponsored by Section on Statistical Genetics, School of Public Health, 2012)&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect. (Supported by NIH grant S10RR026723-01, 2010)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect. (Sponsored by UAB IT, 2008) &lt;br /&gt;
* Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes (Alabama EPSCoR Research Infrastructure Initiative, NSF EPS-0091853, 2005).  &lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system. In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity by an additional 120TB of high performance Lustre storage on a DDN hardware. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers.&lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
UAB 10GigE Research Network The UAB Research Network is currently a dedicated 10GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
Campus High Speed Network Connectivity The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
Off-campus Network Connections UAB connects to the Internet2 and National LambdaRail (NLR) high-speed research networks via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center utilizing Gigabit Ethernet speeds. UAB is also connected to other universities and schools through AREN (Alabama Research and Education Network). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5616</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5616"/>
		<updated>2017-10-06T14:56:54Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* UAB High Performance Computing (HPC) Clusters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The current compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with 2400 cores connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
A historical description of the different hardware generations are summarized in the following table:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. (Supported by UAB, 2015/2016)&lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph. (Sponsored by UAB IT, 2012)&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect. (Sponsored by Section on Statistical Genetics, School of Public Health, 2012)&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect. (Supported by NIH grant S10RR026723-01, 2010)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect. (Sponsored by UAB IT, 2008) &lt;br /&gt;
* Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes (Alabama EPSCoR Research Infrastructure Initiative, NSF EPS-0091853, 2005).  &lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
The compute nodes are backed by 180TB of high performance Lustre storage on a DDN hardware and an additional 20TB available for home directories on a traditional Hitachi SAN and other ancillary services. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers. &lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
UAB 10GigE Research Network The UAB Research Network is currently a dedicated 10GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
Campus High Speed Network Connectivity The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
Off-campus Network Connections UAB connects to the Internet2 and National LambdaRail (NLR) high-speed research networks via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center utilizing Gigabit Ethernet speeds. UAB is also connected to other universities and schools through AREN (Alabama Research and Education Network). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=About&amp;diff=5615</id>
		<title>About</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=About&amp;diff=5615"/>
		<updated>2017-10-06T14:42:26Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;UABgrid started as a pilot project of UAB IT to develop a research computing system that provides researchers access to analysis and data resources.  UABgrid leverages the federated systems model to harness on- and off-campus tools and services into a common framework for collaboration.  Our current efforts are focused on expanding compute capacity and supporting data sharing.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
Development of UABgrid has gone through several stages since its inception. A brief time-line provides an overview of this history:&lt;br /&gt;
&lt;br /&gt;
* '''2002-2003''' - Concept for campus grid infrastructure emerges from participation in NMI Testbed&lt;br /&gt;
* '''2003-2006''' - NSF funded project to explore construction of federated systems environments using NMI tools and open source software leads to development of [http://www.myVocs.org myVocs] and [http://openidp.org openidp.org]&lt;br /&gt;
* '''2007''' - Launch of UABgrid Pilot to explore production use of federated systems environment&lt;br /&gt;
* '''2008''' - Testing migration large-scale HPC work flows to the grid; expanding pilot users&lt;br /&gt;
* '''2009''' - Development expands to support key UAB campus initiatives of caBIG and CTSA&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
Gemmmill, Robinson, Scavo, Bangalore [http://portal.acm.org/citation.cfm?id=1527115 Cross-domain authorization for federated virtual organizations using the myVocs collaboration environment] (2009)&lt;br /&gt;
&lt;br /&gt;
Robinson, Gemmill, Joshi, Bangalore, et. al. [http://portal.acm.org/citation.cfm?id=1253517 Web-Enabled Grid Authentication in a Non-Kerberos Environment] (2005)&lt;br /&gt;
&lt;br /&gt;
== Presentations ==&lt;br /&gt;
&lt;br /&gt;
Much of the work related to and leading to the development of UABgrid has been documented at campus, regional, national and international venues.  A time-line of related presentations follows:&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
* September 2012 [[Research_Computing_Day_2012|UAB Research Compting Day 2012]] -- [[Media:Rcday2012-itrc-update_1010_13Sept2012.pdf|Update on UAB Research Computing]]&lt;br /&gt;
* May 2012 [http://research.cs.wisc.edu/condor/CondorWeek2012/wednesday.html Condor Week] -- [[Media:condor-at-uab.pdf|Report on Condor Pilot at UAB]]&lt;br /&gt;
&lt;br /&gt;
=== 2011 ===&lt;br /&gt;
&lt;br /&gt;
* September 2011 [[UAB_Research_Computing_Day_2011|UAB Research Computing Day]] -- [[Media:Rcday2011-uabitrc-update.pdf|UAB IT Research Computing Services Update (presentation)]]&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
* December 2010 UAB Research Core Day [[Media:Uab-research-core-day-2010-horz-final.pdf‎|UAB IT Research Computing Support (poster)]]&lt;br /&gt;
&lt;br /&gt;
* September 2010 [[Media:CI_agenda_16Sept2010_FINAL.pdf|UAB Cyberinfrastructure Day (agenda)]] [[Media:Developing-uab-cloud.pdf‎|Developing the UAB Cloud (presentation)]]&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
* October 2009 UAB National Cyber-security Awareness Day (no link available)&lt;br /&gt;
&lt;br /&gt;
* October 2009 [http://www.soph.uab.edu/ssg/hcpbootcamp/2009bootcamp UAB HPC Bootcamp] Scaling HPC Applications using the Grid (no link yet)&lt;br /&gt;
&lt;br /&gt;
* May 2009 Spring Internet2 Meeting [http://www.internet2.edu/presentations/spring09/20090428-cyberi-robinson.pdf Building A Sustainable Cyberinfrastructure In the Campus and Across the Region]&lt;br /&gt;
&lt;br /&gt;
* March 2009 [[Media:uasiamfed-v4.pdf|UA System Identity Federation]] (proposal)&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
* August 2008 [http://main.uab.edu/Sites/it/internal/researchers/62971/  UAB CIDay] [http://main.uab.edu/Sites/it/documents/62982.ppt Cyberinfrastructure for Researchers]&lt;br /&gt;
&lt;br /&gt;
* June 2008 Educause Southeast Conference [http://net.educause.edu/ir/library/powerpoint/SER08063B.pps UABgrid Identity Infrastructure]&lt;br /&gt;
&lt;br /&gt;
* April 2008 Internet2 Spring Member Meeting [http://events.internet2.edu/2008/springmm/sessionDetails.cfm?session=3774&amp;amp;event=280 UABgrid: Down the Road A Piece]&lt;br /&gt;
&lt;br /&gt;
=== 2007 ===&lt;br /&gt;
&lt;br /&gt;
* September 2007 UAB HPC Bootcamp [http://www.soph.uab.edu/SSG/hcpbootcamp/2007bootcamp Introduction to Grid Computing]&lt;br /&gt;
&lt;br /&gt;
* April 2007 Internet2 Spring Member Meeting [http://www.internet2.edu/presentations/fall06/20061204-myvocs-robinson.pdf Constructing Campus Grids Experiences adapting myVocs to UABgrid]&lt;br /&gt;
&lt;br /&gt;
=== 2006 ===&lt;br /&gt;
&lt;br /&gt;
* September 2006 [http://stonesoup.org Common Solutions Group] Invited Presentation [http://www.stonesoup.org/Meetings/0609/vo.pres/robinson.pdf myVocs]&lt;br /&gt;
&lt;br /&gt;
* May 2006 TERENA [http://www.internet2.edu/presentations/fall06/20061204-myvocs-robinson.pdf Building Systems with Shibboleth: Integrated VO Management with myVocs and GridShib]&lt;br /&gt;
&lt;br /&gt;
* April 2006, Spring Internet2 Member Meeting [http://grid.ncsa.uiuc.edu/presentations/i2mm-myvocs-gridshib-april06.ppt myVocs and GridShib: Integrated VO Management]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
* Nov 2005, IEEE Workshop on Grid Computing [http://portal.acm.org/citation.cfm?id=1253517 Web-Enabled Grid Authentication in a Non-Kerberos Environment]&lt;br /&gt;
&lt;br /&gt;
* May 2005 Internet2 Spring Member Meeting [http://www.internet2.edu/presentations/spring05/20050503-MyVOCS-Robinson.ppt My Virtual Organization Collaboration System]&lt;br /&gt;
&lt;br /&gt;
== Funding ==&lt;br /&gt;
&lt;br /&gt;
The development of the research computing system has been funded primarily by the UAB's Office of the Vice President for Information Technology. Initial funding to explore the development of federated systems was provided by a 3-year NSF grant [http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=0330543 NMI Enabled Open Source Collaboration Tools for Virtual Organizations] (2003-2006). &lt;br /&gt;
&lt;br /&gt;
We welcome participation in this project and engagement for new funding opportunities.&lt;br /&gt;
&lt;br /&gt;
Thank you to all supporters of this project.&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
&lt;br /&gt;
Development of the UABgrid research computing system has benefited from our engagement in a number external projects:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Campus participation in [https://cabig.nci.nih.gov/overview/ caBIG] and [http://www.ctsaweb.org/ CTSA] were major drivers in the development of the campus research computing system pilot. The requirements identified by these projects influenced feature development.&lt;br /&gt;
&lt;br /&gt;
* [http://www.suragrid.org SURAgrid] - UAB is a founding member of the SURAgrid collaboration.  SURAgrid is a collaborative effort to expand the availability of high-performance computing resources at member campuses across the Southeastern United States and beyond. SURAgrid has developed a governance structure and 4-year strategic plan (2008-2012) for HPC Cyberinfrastructure development at member campuses and originated as voluntary continuation of the campus grid dialogs begun during the NMI Testbed. Participation in SURAgrid has been key to developing understanding of research requirements, gathering requirements for system development, and expanding our engagement across the region.&lt;br /&gt;
&lt;br /&gt;
* [http://www.opensciencegrid.org Open Science Grid] - OSG is an operational grid infrastructure that supports the exchange of high-throughput computing cycles across a large pool of computational resources.  Engagement with the OSG Engage project is leading the expansion of compute resources available the campus research computing system environment UABgrid.&lt;br /&gt;
&lt;br /&gt;
* [http://www.internet2.edu Internet2] - Internet2 is a national organization that provides high-performance networks to institutions and has lead the development of web-based components for federated systems, most notably [http://www.shibboleth.org Shibboleth] and [http://www.incommon.org InCommon]. The projects that helped develop the software used in the core of UABgrid was a leading adopter of Shibboleth-based authentication and a helped pioneer integration with grid resources in the context of [http://myVocs.org myVocs] and [http://gridshib.globus.org/ GridShib] integration.&lt;br /&gt;
&lt;br /&gt;
* The D-Grid Interoperability and Integration of VO-Management ([http://www.d-grid.de/index.php?id=314&amp;amp;L=1 IOVM]) Technologies effort evaluated several international VO management technologies in as part of their effort to redesign the VO management solution of D-Grid. Their June 2007 [http://www.d-grid.de/fileadmin/user_upload/documents/DGI-FG1-IVOM/AP1-Report-v1.2.pdf Work Package 1: Evaluation of international Shibboleth-based VO Management Projects] is a comparative analysis of key technologies including myVocs, VOMS, MAMS, Switch, and PERMIS.  This analysis provided helpful feedback on the benefits and limitations of myVocs and plan improvements to our research computing system.&lt;br /&gt;
&lt;br /&gt;
* [http://www.openidp.org openidp.org] an open registration provider to facilitate participation in collaborations using Shibboleth was developed as part of the initial federated systems environment and is still used today for testing and light-weight identity needs.&lt;br /&gt;
&lt;br /&gt;
* [http://www.myvocs.org myVocs] is the core of the federated systems framework developed as part of the research into building campus grids and collaboration environments.  This software packaged as [http://myvocs-box.myvocs.org myVocs-box] forms the core of today's UABgrid Pilot environment.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=RCDay2017&amp;diff=5614</id>
		<title>RCDay2017</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=RCDay2017&amp;diff=5614"/>
		<updated>2017-10-06T14:41:06Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Fall 2017 Research Computing Day -- GPU Computing &lt;br /&gt;
&lt;br /&gt;
Date: October 13, 2017&lt;br /&gt;
&lt;br /&gt;
Venue: Hill Student Center, Alumni Theater&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open to all UAB faculty, staff, and students. Registration is free but seating is limited, so please register '''[https://www.eventbrite.com/e/research-computing-day-2017-gpu-computing-tickets-38557527603 here]''' to attend. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Agenda&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|10:30 am – 11:15 am 	||'''Research Computing Vision'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Dr. Curtis A. Carver Jr.&amp;lt;br/&amp;gt;&lt;br /&gt;
Vice President and Chief Information Officer&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|- &lt;br /&gt;
|11:15 am – 12:15 pm 	||'''GPU usage for Personalized Medicine and Medical Research'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Andrea De Souza&amp;lt;br/&amp;gt;&lt;br /&gt;
Global Business Development Lead Healthcare and Pharma&amp;lt;br/&amp;gt;&lt;br /&gt;
Nvidia&lt;br /&gt;
|-&lt;br /&gt;
|12:15 pm – 1:15 pm 	||'''Lunch'''&lt;br /&gt;
|-&lt;br /&gt;
|1:15 pm – 1:45 pm 	||'''GPU-based HPC Applications'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Richard Adkins&amp;lt;br/&amp;gt;&lt;br /&gt;
Senior Enterprise Sales Engineer&amp;lt;br/&amp;gt;&lt;br /&gt;
Dell EMC&lt;br /&gt;
|-&lt;br /&gt;
|1:45 pm – 2:45 pm 	||'''GPU Programming''' &amp;lt;br/&amp;gt;&lt;br /&gt;
Dr. Jeff Layton&amp;lt;br/&amp;gt;&lt;br /&gt;
Senior Solutions Architect&amp;lt;br/&amp;gt;&lt;br /&gt;
Nvidia&lt;br /&gt;
|-&lt;br /&gt;
|2:45 pm – 3:00 pm 	||'''Break'''&lt;br /&gt;
|-&lt;br /&gt;
|3:00 pm – 3:30 pm 	||'''GPU Programming with Matlab'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Thomas Anthony&amp;lt;br/&amp;gt;&lt;br /&gt;
Scientist, Research Computing&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|-&lt;br /&gt;
|3:30 pm – 4:00 pm 	||'''Analyzing the Human Connectome Project (HCP) Datasets using GPUs''' &amp;lt;br/&amp;gt;&lt;br /&gt;
John-Paul Robinson&amp;lt;br/&amp;gt;&lt;br /&gt;
System Architect, Research Computing&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5613</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5613"/>
		<updated>2017-10-06T14:40:07Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
Welcome to the '''Research Computing System'''&lt;br /&gt;
&lt;br /&gt;
The Research Computing System (RCS) provides a framework for sharing data, accessing compute power, and collaborating with peers on campus and around the globe.  Our goal is to construct a dynamic &amp;quot;network of services&amp;quot; that you can use to organize your data, study it, and share outcomes.&lt;br /&gt;
&lt;br /&gt;
''''docs'''' (the service you are looking at while reading this text) is one of a set of core services, or libraries, available for you to organize information you gather. Docs is a wiki, an online editor to collaboratively write and share documentation. ([http://en.wikipedia.org/wiki/Wiki Wiki is a Hawaiian term] meaning fast.)  You can learn more about '''docs''' on the page [[UnderstandingDocs]].  The docs wiki is filled with pages that document the many different services and applications available on the Research Computing System.  If you see information that looks out of date please don't hesitate to [mailto:support@vo.uabgrid.uab.edu ask about it] or fix it.&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is designed to provide services to researchers in three core areas:&lt;br /&gt;
&lt;br /&gt;
* '''Data Analysis''' - using the High Performance Computing (HPC) fabric we call [[Cheaha]] for analyzing data and running simulations. Many [[Cheaha_Software|applications are already available]] or you can install your own &lt;br /&gt;
* '''Data Sharing''' - supporting the trusted exchange of information using virtual data containers to spark new ideas&lt;br /&gt;
* '''Application Development''' - providing virtual machines and web-hosted development tools empowering you to serve others with your research&lt;br /&gt;
&lt;br /&gt;
== Support and Development ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is developed and supported by UAB IT's Research Computing Group.  We are also developing a core set of applications to help you to easily incorporate our services into your research processes and this documentation collection to help you leverage the resources already available. We follow the best practices of the Open Source community and develop the RCS openly.  You can follow our progress via the [http://dev.uabgrid.uab.edu our development wiki].&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is an out growth of the UABgrid pilot, launched in September 2007 which has focused on demonstrating the utility of unlimited analysis, storage, and application for research.  RCS is being built on the same technology foundations used by major cloud vendors and decades of distributed systems computing research, technology that powered the last ten years of large scale systems serving prominent national and international initiatives like the [http://opensciencegrid.org/ Open Science Grid], [http://xsede.org XSEDE], [http://www.teragrid.org/ TeraGrid], the [http://lcg.web.cern.ch/LCG/ LHC Computing Grid], and [https://cabig.nci.nih.gov caBIG].&lt;br /&gt;
&lt;br /&gt;
== Outreach ==&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing Group has collaborated with a number of prominent research projects at UAB to identify use cases and develop the requirements for the RCS.  Our collaborators include the Center for Clinical and Translational Science (CCTS), Heflin Genomics Center, the Comprehensive Cancer Center (CCC), the Department of Computer and Information Sciences (CIS), the Department of Mechanical Engineering (ME), Lister Hill Library, the School of Optometry's Center for the Development of Functional Imaging, and Health System Information Services (HSIS). &lt;br /&gt;
&lt;br /&gt;
As part of the process of building this research computing platform, the UAB IT Research Computing Group has hosted an annual campus symposium on research computing and cyber-infrastructure (CI) developments and accomplishments. Starting as CyberInfrastructure (CI) Days in 2007, the name was changed to [http://docs.uabgrid.uab.edu/wiki/UAB_Research_Computing_Day '''UAB Research Computing Day'''] in 2011 to reflect the broader mission to support research.  IT Research Computing also participates in other campus wide symposiums including UAB Research Core Day.&lt;br /&gt;
&lt;br /&gt;
== Featured Research Applications ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing Group also helps support the campus MATLAB license with self-service installation documentation and supports using MATLAB on the HPC platform, providing a pathway to expand your computational power and freeing your laptop from serving as a compute platform.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
| UAB MATLAB Information |&lt;br /&gt;
In January 2011, UAB acquired a site license from Mathworks for MATLAB, SimuLink and 42 Toolboxes.  &lt;br /&gt;
* Learn more about [[MATLAB|MATLAB and how you can use it at UAB]]&lt;br /&gt;
* Learn more about the [[UAB TAH license|UAB Mathworks Site license]] and review [[Matlab site license FAQ|frequently asked questions about the license]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing group, the CCTS BMI, and [http://www.uab.edu/hcgs/bioinformatics Heflin Center for Genomic Science] have teamed up to help improve genomic research at UAB.  Researchers can work with the scientists and research experts to produce a research pipeline from sequencing, to analysis, to publication.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
|'''Galaxy'''|&lt;br /&gt;
A web front end to run analyses on the cluster fabric. Currently focused on NGS (Next Generation Sequencing; biology) analysis support. &lt;br /&gt;
* [[Galaxy|Galaxy Project Home]]&lt;br /&gt;
* [http://projects.uabgrid.uab.edu/galaxy Galaxy Development Wiki]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha. Any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  We also request that you send us a list of publications based on your use of Cheaha resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5612</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5612"/>
		<updated>2017-10-06T14:36:21Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers. Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to '''our queuing system ([[Slurm]])'''. A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier. Instructions of using SLURM and writing SLURM scripts for jobs submission on Cheaha can be found '''[[Slurm | here]]'''.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a GPFS high performance file system providing roughly 4.7PB of usable storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT. As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5611</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5611"/>
		<updated>2017-10-06T14:33:46Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Acknowledgment in Publications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the National Science Foundation under Grants Nos. OAC-1541310, the University of Alabama at Birmingham, and the Alabama Innovation Fund. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation or the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5610</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5610"/>
		<updated>2017-10-06T14:29:31Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Description of Cheaha for Grants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 2400 conventional CPU cores that provide over 110 TFLOP/s of peak computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the research computing resources acquired and managed by UAB IT Research Computing. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded researchers using the cluster for genomics or proteomics analyses should include the following statement regarding the NIH funded gen3 (SIG) compute resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Computational portions of this research were supported by NIH S10RR026723.  Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Institutes of Health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5609</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5609"/>
		<updated>2017-10-06T14:27:18Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* 2013 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to [http://dev.uabgrid.uab.edu extend cloud computing solutions] to the researchers at UAB and enhance the interfacing capabilities for HPC.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 3120 conventional CPU cores across five generations of hardware that provide over 120 TFLOP/s of combined computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware and 180TB Lustre parallel file system built on a Direct Data Network (DDN) hardware platform is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage and 432TB of OpenStack+Ceph storage is available via a 10+ GigE network fabric. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded investigators are granted priority access to the NIH SIG award acquired compute and storage pool that includes an additional 576 2.66GHz Intel-based compute cores, 2.3TB RAM and 180TB in the high-performance Lustre parallel file system all interconnected via a QDR Infiniband network fabric.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the research computing resources acquired and managed by UAB IT Research Computing. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded researchers using the cluster for genomics or proteomics analyses should include the following statement regarding the NIH funded gen3 (SIG) compute resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Computational portions of this research were supported by NIH S10RR026723.  Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Institutes of Health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5608</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5608"/>
		<updated>2017-10-06T14:24:28Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with approximately 2400 cores]] connected by low-latency Fourteen Data Rate (FDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, an additional 20TB available for home directories on a traditional Hitachi SAN, and other ancillary services. The compute nodes combine to provide over 110TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to extend cloud computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC.  This fabric is under [http://dev.uabgrid.uab.edu active development] and will see feature releases in the coming months.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 3120 conventional CPU cores across five generations of hardware that provide over 120 TFLOP/s of combined computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware and 180TB Lustre parallel file system built on a Direct Data Network (DDN) hardware platform is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage and 432TB of OpenStack+Ceph storage is available via a 10+ GigE network fabric. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded investigators are granted priority access to the NIH SIG award acquired compute and storage pool that includes an additional 576 2.66GHz Intel-based compute cores, 2.3TB RAM and 180TB in the high-performance Lustre parallel file system all interconnected via a QDR Infiniband network fabric.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the research computing resources acquired and managed by UAB IT Research Computing. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded researchers using the cluster for genomics or proteomics analyses should include the following statement regarding the NIH funded gen3 (SIG) compute resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Computational portions of this research were supported by NIH S10RR026723.  Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Institutes of Health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5607</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5607"/>
		<updated>2017-10-06T14:21:00Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Project Storage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to '''our queuing system ([[Slurm]])'''. A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier. Instructions of using SLURM and writing SLURM scripts for jobs submission on Cheaha can be found '''[[Slurm | here]]'''.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a GPFS high performance file system providing roughly 4.7PB of usable storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT. As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5606</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5606"/>
		<updated>2017-10-06T14:20:09Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Scratch */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to '''our queuing system ([[Slurm]])'''. A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier. Instructions of using SLURM and writing SLURM scripts for jobs submission on Cheaha can be found '''[[Slurm | here]]'''.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a GPFS high performance file system providing roughly 4.7PB of usable storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5605</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5605"/>
		<updated>2017-10-06T14:17:58Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* What is a queuing system? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to '''our queuing system ([[Slurm]])'''. A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier. Instructions of using SLURM and writing SLURM scripts for jobs submission on Cheaha can be found '''[[Slurm | here]]'''.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5604</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5604"/>
		<updated>2017-10-06T14:17:33Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Queuing System */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to '''our queuing system ([[Slurm]])'''. A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier. Instructions of using SLURM and writing SLURM scripts for jobs submission on Cheaha can be found [[Slurm | here]].&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5603</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5603"/>
		<updated>2017-10-06T14:13:06Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queuing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5602</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5602"/>
		<updated>2017-10-06T14:12:23Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queuing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5601</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5601"/>
		<updated>2017-10-06T14:11:06Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the current hardware profile that provides a peak theoretical performance of 110 teraflops.&lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queuing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5600</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5600"/>
		<updated>2017-10-06T14:09:39Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the hardware profile. &lt;br /&gt;
&lt;br /&gt;
* Compute &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage -- DDN SFA12KX with GPFS) &lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management &lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queuing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5599</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5599"/>
		<updated>2017-10-06T14:09:08Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the hardware profile. &lt;br /&gt;
&lt;br /&gt;
* Compute -- &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking --&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage (DDN SFA12KX with GPFS) --&lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management --&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queuing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5598</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5598"/>
		<updated>2017-10-06T14:08:28Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please {{CheahaAccountRequest}}.  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of usable storage (6.6PB raw capacity). The following descriptions highlight the hardware profile. &lt;br /&gt;
&lt;br /&gt;
* Compute -- &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
&lt;br /&gt;
* Networking --&lt;br /&gt;
**FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
&lt;br /&gt;
* Storage (DDN SFA12KX with GPFS) --&lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Management --&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| ?? || 36 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| ?? || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| ?? || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||openstack(?)|| ? || ? || ?G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3.1||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queuing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queuing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--cpus-per-task) for a single task (--ntasks) with each cpu requesting size 4GB of RAM (--mem-per-cpu) for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sinteractive --ntasks=1 --cpus-per-task=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Please note, sinteractive starts your shell in a screen session.  Screen is a terminal emulator that is designed to make it possible to detach and reattach a session.  This feature can mostly be ignored.  If you application uses `ctrl-a` as a special command sequence (e.g. Emacs), however, you may find the application doesn't receive this special character.  When using screen, you need to type `ctrl-a a` (ctrl-a followed by a single &amp;quot;a&amp;quot; key press) to send a ctrl-a to your application.  Screen uses ctrl-a as it's own command character, so this special sequence issues the command to screen to &amp;quot;send ctrl-a to my app&amp;quot;.   Learn more about [https://www.gnu.org/software/screen/manual/html_node/Overview.html#Overview screen from it's documentation].&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory as a location to store job scripts, custom code, and libraries. You are responsible for keeping your home directory under 10GB in size!&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets and $USER_DATA for storage of non scratch data.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_PROJECT . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_PROJECT.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_PROJECT rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5597</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5597"/>
		<updated>2017-10-06T14:01:48Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
Welcome to the '''Research Computing System'''&lt;br /&gt;
&lt;br /&gt;
The Research Computing System (RCS) provides a framework for sharing data, accessing compute power, and collaborating with peers on campus and around the globe.  Our goal is to construct a dynamic &amp;quot;network of services&amp;quot; that you can use to organize your data, study it, and share outcomes.&lt;br /&gt;
&lt;br /&gt;
''''docs'''' (the service you are looking at while reading this text) is one of a set of core services, or libraries, available for you to organize information you gather. Docs is a wiki, an online editor to collaboratively write and share documentation. ([http://en.wikipedia.org/wiki/Wiki Wiki is a Hawaiian term] meaning fast.)  You can learn more about '''docs''' on the page [[UnderstandingDocs]].  The docs wiki is filled with pages that document the many different services and applications available on the Research Computing System.  If you see information that looks out of date please don't hesitate to [mailto:support@vo.uabgrid.uab.edu ask about it] or fix it.&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is designed to provide services to researchers in three core areas:&lt;br /&gt;
&lt;br /&gt;
* '''Data Analysis''' - using the High Performance Computing (HPC) fabric we call [[Cheaha]] for analyzing data and running simulations. Many [[Cheaha_Software|applications are already available]] or you can install your own &lt;br /&gt;
* '''Data Sharing''' - supporting the trusted exchange of information using virtual data containers to spark new ideas&lt;br /&gt;
* '''Application Development''' - providing virtual machines and web-hosted development tools empowering you to serve others with your research&lt;br /&gt;
&lt;br /&gt;
== Support and Development ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is developed and supported by UAB IT's Research Computing Group.  We are also developing a core set of applications to help you to easily incorporate our services into your research processes and this documentation collection to help you leverage the resources already available. We follow the best practices of the Open Source community and develop the RCS openly.  You can follow our progress via the [http://dev.uabgrid.uab.edu our development wiki].&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is an out growth of the UABgrid pilot, launched in September 2007 which has focused on demonstrating the utility of unlimited analysis, storage, and application for research.  RCS is being built on the same technology foundations used by major cloud vendors and decades of distributed systems computing research, technology that powered the last ten years of large scale systems serving prominent national and international initiatives like the [http://opensciencegrid.org/ Open Science Grid], [http://xsede.org XSEDE], [http://www.teragrid.org/ TeraGrid], the [http://lcg.web.cern.ch/LCG/ LHC Computing Grid], and [https://cabig.nci.nih.gov caBIG].&lt;br /&gt;
&lt;br /&gt;
== Outreach ==&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing Group has collaborated with a number of prominent research projects at UAB to identify use cases and develop the requirements for the RCS.  Our collaborators include the Center for Clinical and Translational Science (CCTS), Heflin Genomics Center, the Comprehensive Cancer Center (CCC), the Department of Computer and Information Sciences (CIS), the Department of Mechanical Engineering (ME), Lister Hill Library, the School of Optometry's Center for the Development of Functional Imaging, and Health System Information Services (HSIS). &lt;br /&gt;
&lt;br /&gt;
As part of the process of building this research computing platform, the UAB IT Research Computing Group has hosted an annual campus symposium on research computing and cyber-infrastructure (CI) developments and accomplishments. Starting as CyberInfrastructure (CI) Days in 2007, the name was changed to [http://docs.uabgrid.uab.edu/wiki/UAB_Research_Computing_Day '''UAB Research Computing Day'''] in 2011 to reflect the broader mission to support research.  IT Research Computing also participates in other campus wide symposiums including UAB Research Core Day.&lt;br /&gt;
&lt;br /&gt;
== Featured Research Applications ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing Group also helps support the campus MATLAB license with self-service installation documentation and supports using MATLAB on the HPC platform, providing a pathway to expand your computational power and freeing your laptop from serving as a compute platform.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
| UAB MATLAB Information |&lt;br /&gt;
In January 2011, UAB acquired a site license from Mathworks for MATLAB, SimuLink and 42 Toolboxes.  &lt;br /&gt;
* Learn more about [[MATLAB|MATLAB and how you can use it at UAB]]&lt;br /&gt;
* Learn more about the [[UAB TAH license|UAB Mathworks Site license]] and review [[Matlab site license FAQ|frequently asked questions about the license]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing group, the CCTS BMI, and [http://www.uab.edu/hcgs/bioinformatics Heflin Center for Genomic Science] have teamed up to help improve genomic research at UAB.  Researchers can work with the scientists and research experts to produce a research pipeline from sequencing, to analysis, to publication.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
|'''Galaxy'''|&lt;br /&gt;
A web front end to run analyses on the cluster fabric. Currently focused on NGS (Next Generation Sequencing; biology) analysis support. &lt;br /&gt;
* [[Galaxy|Galaxy Project Home]]&lt;br /&gt;
* [http://projects.uabgrid.uab.edu/galaxy Galaxy Development Wiki]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5596</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Welcome&amp;diff=5596"/>
		<updated>2017-10-06T14:01:10Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
Welcome to the '''Research Computing System'''&lt;br /&gt;
&lt;br /&gt;
The Research Computing System provides a framework for sharing data, accessing compute power, and collaborating with peers on campus and around the globe.  Our goal is to construct a dynamic &amp;quot;network of services&amp;quot; that you can use to organize your data, study it, and share outcomes.&lt;br /&gt;
&lt;br /&gt;
''''docs'''' (the service you are looking at while reading this text) is one of a set of core services, or libraries, available for you to organize information you gather. Docs is a wiki, an online editor to collaboratively write and share documentation. ([http://en.wikipedia.org/wiki/Wiki Wiki is a Hawaiian term] meaning fast.)  You can learn more about '''docs''' on the page [[UnderstandingDocs]].  The docs wiki is filled with pages that document the many different services and applications available on the Research Computing System.  If you see information that looks out of date please don't hesitate to [mailto:support@vo.uabgrid.uab.edu ask about it] or fix it.&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is designed to provide services to researchers in three core areas:&lt;br /&gt;
&lt;br /&gt;
* '''Data Analysis''' - using the High Performance Computing (HPC) fabric we call [[Cheaha]] for analyzing data and running simulations. Many [[Cheaha_Software|applications are already available]] or you can install your own &lt;br /&gt;
* '''Data Sharing''' - supporting the trusted exchange of information using virtual data containers to spark new ideas&lt;br /&gt;
* '''Application Development''' - providing virtual machines and web-hosted development tools empowering you to serve others with your research&lt;br /&gt;
&lt;br /&gt;
== Support and Development ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is developed and supported by UAB IT's Research Computing Group.  We are also developing a core set of applications to help you to easily incorporate our services into your research processes and this documentation collection to help you leverage the resources already available. We follow the best practices of the Open Source community and develop the RCS openly.  You can follow our progress via the [http://dev.uabgrid.uab.edu our development wiki].&lt;br /&gt;
&lt;br /&gt;
The Research Computing System is an out growth of the UABgrid pilot, launched in September 2007 which has focused on demonstrating the utility of unlimited analysis, storage, and application for research.  RCS is being built on the same technology foundations used by major cloud vendors and decades of distributed systems computing research, technology that powered the last ten years of large scale systems serving prominent national and international initiatives like the [http://opensciencegrid.org/ Open Science Grid], [http://xsede.org XSEDE], [http://www.teragrid.org/ TeraGrid], the [http://lcg.web.cern.ch/LCG/ LHC Computing Grid], and [https://cabig.nci.nih.gov caBIG].&lt;br /&gt;
&lt;br /&gt;
== Outreach ==&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing Group has collaborated with a number of prominent research projects at UAB to identify use cases and develop the requirements for the RCS.  Our collaborators include the Center for Clinical and Translational Science (CCTS), Heflin Genomics Center, the Comprehensive Cancer Center (CCC), the Department of Computer and Information Sciences (CIS), the Department of Mechanical Engineering (ME), Lister Hill Library, the School of Optometry's Center for the Development of Functional Imaging, and Health System Information Services (HSIS). &lt;br /&gt;
&lt;br /&gt;
As part of the process of building this research computing platform, the UAB IT Research Computing Group has hosted an annual campus symposium on research computing and cyber-infrastructure (CI) developments and accomplishments. Starting as CyberInfrastructure (CI) Days in 2007, the name was changed to [http://docs.uabgrid.uab.edu/wiki/UAB_Research_Computing_Day '''UAB Research Computing Day'''] in 2011 to reflect the broader mission to support research.  IT Research Computing also participates in other campus wide symposiums including UAB Research Core Day.&lt;br /&gt;
&lt;br /&gt;
== Featured Research Applications ==&lt;br /&gt;
&lt;br /&gt;
The Research Computing Group also helps support the campus MATLAB license with self-service installation documentation and supports using MATLAB on the HPC platform, providing a pathway to expand your computational power and freeing your laptop from serving as a compute platform.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
| UAB MATLAB Information |&lt;br /&gt;
In January 2011, UAB acquired a site license from Mathworks for MATLAB, SimuLink and 42 Toolboxes.  &lt;br /&gt;
* Learn more about [[MATLAB|MATLAB and how you can use it at UAB]]&lt;br /&gt;
* Learn more about the [[UAB TAH license|UAB Mathworks Site license]] and review [[Matlab site license FAQ|frequently asked questions about the license]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The UAB IT Research Computing group, the CCTS BMI, and [http://www.uab.edu/hcgs/bioinformatics Heflin Center for Genomic Science] have teamed up to help improve genomic research at UAB.  Researchers can work with the scientists and research experts to produce a research pipeline from sequencing, to analysis, to publication.&lt;br /&gt;
&lt;br /&gt;
{{abox&lt;br /&gt;
|'''Galaxy'''|&lt;br /&gt;
A web front end to run analyses on the cluster fabric. Currently focused on NGS (Next Generation Sequencing; biology) analysis support. &lt;br /&gt;
* [[Galaxy|Galaxy Project Home]]&lt;br /&gt;
* [http://projects.uabgrid.uab.edu/galaxy Galaxy Development Wiki]&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5595</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5595"/>
		<updated>2017-10-06T13:47:41Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Regional Networks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The compute resources are organized into a unified Research Computing System. The compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with several generations of hardware with approximately 3000 cores connected by low-latency Fourteen Data Rate (FDR) and Quad Data Rate (QDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
The different hardware generations are summarized in the following table and include:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. &lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph. (Sponsored by UAB IT)&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect. (Sponsored by Section on Statistical Genetics, School of Public Health )&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect. (Supported by NIH grant S10RR026723-01)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect. (Sponsored by UAB IT) [set to be decommissioned by December 2016] &lt;br /&gt;
* &amp;lt;strike&amp;gt;Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes&amp;lt;/strike&amp;gt;. Gen1 decomissioned June 2013.&lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
The compute nodes are backed by 180TB of high performance Lustre storage on a DDN hardware and an additional 20TB available for home directories on a traditional Hitachi SAN and other ancillary services. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers. &lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
UAB 10GigE Research Network The UAB Research Network is currently a dedicated 10GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
Campus High Speed Network Connectivity The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
Off-campus Network Connections UAB connects to the Internet2 and National LambdaRail (NLR) high-speed research networks via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 100Gbps Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center utilizing Gigabit Ethernet speeds. UAB is also connected to other universities and schools through AREN (Alabama Research and Education Network). &lt;br /&gt;
&lt;br /&gt;
UAB was awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) in Fall 2016 to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility.&lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5594</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Resources&amp;diff=5594"/>
		<updated>2017-10-06T13:46:25Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Campus Network */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[wikipedia:Cyberinfrastructure|Cyberinfrastructure]] supporting UAB investigators includes high performance computing clusters, high-speed storage systems, campus, state-wide and regionally connected high-bandwidth networks, and conditioned space for hosting and operating HPC systems, research applications and network equipment. &lt;br /&gt;
&lt;br /&gt;
[[Cheaha]] is a campus HPC resource dedicated to enhancing research computing productivity at UAB. Cheaha is managed by UAB Information Technology's Research Computing Services group (UAB ITRCS) and is available to members of the UAB community in need of increased computational capacity. Cheaha supports high-performance computing (HPC) and high throughput computing (HTC) paradigms. Cheaha is composed of resources that span data centers located in the UAB IT Data Centers in the 936 Building and the RUST Computer Center. UAB ITRCS in open collaboration with community members is leading the design and development of these resources. UAB IT’s Infrastructure Services group provides operational support and maintenance of these resources.&lt;br /&gt;
&lt;br /&gt;
A description of the facilities available to UAB researchers are described below.  If you would like an account on the HPC system, please {{CheahaAccountRequest}} and provide a short statement on your intended use of the resources and your affiliation with the university. &lt;br /&gt;
&lt;br /&gt;
== UAB High Performance Computing (HPC) Clusters ==&lt;br /&gt;
&lt;br /&gt;
=== Compute Resources ===&lt;br /&gt;
&lt;br /&gt;
The compute resources are organized into a unified Research Computing System. The compute fabric for this system is anchored by the [[Cheaha]] cluster, a commodity cluster with several generations of hardware with approximately 3000 cores connected by low-latency Fourteen Data Rate (FDR) and Quad Data Rate (QDR) InfiniBand networks. &lt;br /&gt;
&lt;br /&gt;
The different hardware generations are summarized in the following table and include:&lt;br /&gt;
* Gen6: 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. &lt;br /&gt;
* Gen5: 12 2x8 core (192 cores total) 2.0 GHz Intel Xeon E2650 nodes with 96GB RAM per node and 10 Gbps interconnect dedicated to OpenStack and Ceph. (Sponsored by UAB IT)&lt;br /&gt;
* Gen4: 3 2x8 core (48 cores total) 2.70 GHz Intel Xeon compute nodes with 384GB RAM per node (24GB per core), QDR InfiniBand interconnect. (Sponsored by Section on Statistical Genetics, School of Public Health )&lt;br /&gt;
* Gen3: 48 2x6 core (576 cores total) 2.66 GHz Intel Xeon compute nodes with 48GB RAM per node (4GB per core), QDR InfiniBand interconnect. (Supported by NIH grant S10RR026723-01)&lt;br /&gt;
* Gen2: 24 2x4 (192 cores total) Intel 3.0 GHz Intel Xeon compute nodes with 16GB RAM per node (2GB per core), DDR InfiniBand interconnect. (Sponsored by UAB IT) [set to be decommissioned by December 2016] &lt;br /&gt;
* &amp;lt;strike&amp;gt;Gen1: 60 2-core (120 cores total) AMD 1.6GHz Opteron 64-bit compute nodes with 2GB RAM per node (1GB per core), and Gigabit Ethernet connectivity between the nodes&amp;lt;/strike&amp;gt;. Gen1 decomissioned June 2013.&lt;br /&gt;
&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Storage Resources ===&lt;br /&gt;
&lt;br /&gt;
The compute nodes are backed by 180TB of high performance Lustre storage on a DDN hardware and an additional 20TB available for home directories on a traditional Hitachi SAN and other ancillary services. In Fall 2013, UAB IT Research Computing acquired an OpenStack cloud and Ceph storage software fabric through a partnership between Dell and Inktank in order to extend cloud-computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC. This storage system provides an aggregate of half-petabytes of raw storage that is distributed across 12 compute nodes each with node having 16 cores, 96GB RAM, and 36TB of storage and connected together with a 10Gigabit Ethernet networking. During 2016, as part of the Alabama Innovation Fund grant working in partnership with numerous departments, 6.6PB raw GPFS storage on DDN SFA12KX hardware was added to meet the growing data needs of UAB researchers. &lt;br /&gt;
&lt;br /&gt;
=== Network Resources ===&lt;br /&gt;
&lt;br /&gt;
==== Research Network ====&lt;br /&gt;
UAB 10GigE Research Network The UAB Research Network is currently a dedicated 10GE optical connection between the UAB Shared HPC Facility and the RUST Campus Data Center to create a multi-site facility housing the Research Computing System, which leverage the network for connecting storage and compute hosting resources. The network supports direct connection to high-bandwidth regional networks and the capability to connect data intensive research facilities directly with the high performance computing services of the Research Computing System. This network can support very high speed secure connectivity between nodes connected to it for high speed file transfer of very large data sets without the concerns of interfering with other traffic on the campus backbone ensures predictable latencies.&lt;br /&gt;
&lt;br /&gt;
==== Campus Network ====&lt;br /&gt;
Campus High Speed Network Connectivity The campus network backbone is based on a 40 gigabit redundant Ethernet network with 480 gigabit/second backplanes on the core L2/L3 Switch/Routers. For efficient management, a collapsed backbone design is used. Each campus building is connected using gigabit Ethernet links over single mode optical fiber. Within multi-floor buildings, a gigabit Ethernet building backbone over multimode optical fiber is used and Category 5 or better, unshielded twisted pair wiring connects desktops to the network. Computer server clusters are connected to the building entrance using Gigabit Ethernet. Desktops are connected at 1 gigabits/second speed. The campus wireless network blankets classrooms, common areas and most academic office buildings.&lt;br /&gt;
&lt;br /&gt;
==== Regional Networks ====&lt;br /&gt;
Off-campus Network Connections UAB connects to the Internet2 and National LambdaRail (NLR) high-speed research networks via the University of Alabama System Regional Optical Network (UASRON), a University of Alabama System owned and operated DWDM Network offering 10G Ethernet to the Southern Light Rail (SLR)/Southern Crossroads (SoX) in Atlanta, Ga. The UASRON also connects UAB to UA, and UAH, the other two University of Alabama System institutions, and the Alabama Supercomputer Center utilizing Gigabit Ethernet speeds. The UASRON is currently being upgraded to support 100Gbps connections. UAB is also connected to other universities and schools through AREN (Alabama Research and Education Network). Connection to the commodity Internet is via Gigabit Ethernet, of which UAB currently uses approximately 1.2 Giga-bits-per-second (Gbps).&lt;br /&gt;
&lt;br /&gt;
UAB was recently awarded the NSF CC*DNI Networking Infrastructure grant ([http://www.nsf.gov/awardsearch/showAward?AWD_ID=1541310 CC-NIE-1541310]) to establish a dedicated high-speed research network (UAB Science DMZ) that establishes a 40Gbps networking core and provides researchers at UAB with 10Gbps connections from selected computers to the shared computational facility. &lt;br /&gt;
&lt;br /&gt;
== Regional and National Resources  ==&lt;br /&gt;
&lt;br /&gt;
=== Alabama Supercomputing Center (ASC) ===&lt;br /&gt;
&lt;br /&gt;
Alabama Supercomputer Center (ASC) (http://www.asc.edu) is a State-wide resource located in Hunstville, Alabama. The ASC provides UAB investigators with access to a variety of high performance computing resources. These resources include:&lt;br /&gt;
* The SGI UV (ULTRAVIOLET) has 256 Xeon E5-4640 CPU cores operating at 2.4 GHz and 4 TB of shared memory, and 182 terabytes in the GPFS storage cluster.&lt;br /&gt;
* A Dense Memory Cluster (DMC) HPC system has 2216 CPU cores and 16 terabytes of distributed memory. Each compute node has a local disk (up to 1.9 terabytes of which are accessible as /tmp). Also attached to the DMC is a high performance GPFS storage cluster, which has 45 terabytes of high performance storage accessible as /scratch from each node. Home directories as well as third party applications use a separate GPFS volume and share 137 terabytes of storage. The machine is physically configured as a cluster of 8, 16, or 20 CPU core SMP boards. Ninety-six nodes have 2.26 GHz Intel quad-core Nehalem processors and 24 gigabytes of memory. Forty nodes have 2.3 GHz AMD 8-core Opteron Magny-Cours processors and 128 gigabytes of memory. Forty nodes have 2.5 GHz Intel 10-core Xeon Ivy Bridge processors and 128 gigabytes of memory.&lt;br /&gt;
* A large number of software packages are installed supporting a variety of analyses including programs for Computational Structural Analysis, Design Analysis, Quantum Chemistry, Molecular Mechanics/Dynamics, Crystallography, Fluid Dynamics, Statistics, Visualization, and Bioinformatics.&lt;br /&gt;
&lt;br /&gt;
=== Open Science Grid ===&lt;br /&gt;
&lt;br /&gt;
UAB is a member of the SURAgrid Virtual Organization (SGVO)_ on the Open Science Grid (OSG) (http://opensciencegrid.org)&lt;br /&gt;
This is a national compute network consists of nearly 80,000 compute cores aggregated across national facilities and contributing member sites. The OSG provides operational support for the interconnection middleware and facilities research and operational engagement between members.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=RCDay2017&amp;diff=5593</id>
		<title>RCDay2017</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=RCDay2017&amp;diff=5593"/>
		<updated>2017-10-05T19:58:11Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Fall 2017 Research Computing Day -- GPU Computing &lt;br /&gt;
&lt;br /&gt;
Date: October 13, 2017&lt;br /&gt;
&lt;br /&gt;
Venue: Hill Student Center, Alumni Theater&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open to all UAB faculty, staff, and students. Registration is free but seating is limited, so please register '''[https://www.eventbrite.com/e/research-computing-day-2017-gpu-computing-tickets-38557527603 here]''' to attend. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Agenda&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|10:30 am – 11:15 am 	||'''Research Computing Update'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Dr. Curtis A. Carver Jr.&amp;lt;br/&amp;gt;&lt;br /&gt;
Vice President and Chief Information Officer&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|- &lt;br /&gt;
|11:15 am – 12:15 pm 	||'''GPU usage for Personalized Medicine and Medical Research'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Andrea De Souza&amp;lt;br/&amp;gt;&lt;br /&gt;
Global Business Development Lead Healthcare and Pharma&amp;lt;br/&amp;gt;&lt;br /&gt;
Nvidia&lt;br /&gt;
|-&lt;br /&gt;
|12:15 pm – 1:15 pm 	||'''Lunch'''&lt;br /&gt;
|-&lt;br /&gt;
|1:15 pm – 1:45 pm 	||'''GPU-based HPC Applications'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Richard Adkins&amp;lt;br/&amp;gt;&lt;br /&gt;
Senior Enterprise Sales Engineer&amp;lt;br/&amp;gt;&lt;br /&gt;
Dell EMC&lt;br /&gt;
|-&lt;br /&gt;
|1:45 pm – 2:45 pm 	||'''GPU Programming''' &amp;lt;br/&amp;gt;&lt;br /&gt;
Dr. Jeff Layton&amp;lt;br/&amp;gt;&lt;br /&gt;
Senior Solutions Architect&amp;lt;br/&amp;gt;&lt;br /&gt;
Nvidia&lt;br /&gt;
|-&lt;br /&gt;
|2:45 pm – 3:00 pm 	||'''Break'''&lt;br /&gt;
|-&lt;br /&gt;
|3:00 pm – 3:30 pm 	||'''GPU Programming with Matlab'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Thomas Anthony&amp;lt;br/&amp;gt;&lt;br /&gt;
Scientist, Research Computing&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|-&lt;br /&gt;
|3:30 pm – 4:00 pm 	||'''Analyzing the Human Connectome Project (HCP) Datasets using GPUs''' &amp;lt;br/&amp;gt;&lt;br /&gt;
John-Paul Robinson&amp;lt;br/&amp;gt;&lt;br /&gt;
System Architect, Research Computing&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=RCDay2017&amp;diff=5590</id>
		<title>RCDay2017</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=RCDay2017&amp;diff=5590"/>
		<updated>2017-10-03T20:54:11Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: Created page with &amp;quot;&amp;lt;big&amp;gt;Fall 2017 Research Computing Day -- GPU Computing   Date: October 13, 2017  Venue: Hill Student Center, Alumni Theater&amp;lt;/big&amp;gt;  Open to all UAB faculty, staff, and students...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;Fall 2017 Research Computing Day -- GPU Computing &lt;br /&gt;
&lt;br /&gt;
Date: October 13, 2017&lt;br /&gt;
&lt;br /&gt;
Venue: Hill Student Center, Alumni Theater&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Open to all UAB faculty, staff, and students. Registration is free but seating is limited, so please register '''[https://www.eventbrite.com/e/research-computing-day-2017-gpu-computing-tickets-38557527603 here]''' to attend. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Agenda&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|10:30 am – 11:15 am 	||'''Research Computing Update'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Dr. Curtis A. Carver Jr.&amp;lt;br/&amp;gt;&lt;br /&gt;
Vice President and Chief Information Officer&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|- &lt;br /&gt;
|11:15 am – 12:15 pm 	||'''GPU usage for Personalized Medicine and Medical Research'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Andrea De Souza&amp;lt;br/&amp;gt;&lt;br /&gt;
Global Business Development Lead Healthcare and Pharma&amp;lt;br/&amp;gt;&lt;br /&gt;
Nvidia&lt;br /&gt;
|-&lt;br /&gt;
|12:15 pm – 1:15 pm 	||'''Lunch'''&lt;br /&gt;
|-&lt;br /&gt;
|1:15 pm – 1:45 pm 	||'''GPU-based HPC Applications'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Brian Marquis&amp;lt;br/&amp;gt;&lt;br /&gt;
HPC Systems Architect&amp;lt;br/&amp;gt;&lt;br /&gt;
Dell EMC&lt;br /&gt;
|-&lt;br /&gt;
|1:45 pm – 2:45 pm 	||'''GPU Programming''' &amp;lt;br/&amp;gt;&lt;br /&gt;
Dr. Jeff Layton&amp;lt;br/&amp;gt;&lt;br /&gt;
Senior Solutions Architect&amp;lt;br/&amp;gt;&lt;br /&gt;
Nvidia&lt;br /&gt;
|-&lt;br /&gt;
|2:45 pm – 3:00 pm 	||'''Break'''&lt;br /&gt;
|-&lt;br /&gt;
|3:00 pm – 3:30 pm 	||'''GPU Programming with Matlab'''&amp;lt;br/&amp;gt;&lt;br /&gt;
Thomas Anthony&amp;lt;br/&amp;gt;&lt;br /&gt;
Scientist, Research Computing&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|-&lt;br /&gt;
|3:30 pm – 4:00 pm 	||'''Analyzing the Human Connectome Project (HCP) Datasets using GPUs''' &amp;lt;br/&amp;gt;&lt;br /&gt;
John-Paul Robinson&amp;lt;br/&amp;gt;&lt;br /&gt;
System Architect, Research Computing&amp;lt;br/&amp;gt;&lt;br /&gt;
University of Alabama at Birmingham&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=UAB_Research_Computing_Day&amp;diff=5589</id>
		<title>UAB Research Computing Day</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=UAB_Research_Computing_Day&amp;diff=5589"/>
		<updated>2017-10-03T20:31:04Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Research Computing Day is a dialog within the UAB research community about leveraging the power of computers to grow the depth of our investigation into the nature of the world that surrounds us. The annual event welcomes discussions on science, engineering, the arts and humanities focused on the drive to open new research frontiers with advances in technology.&lt;br /&gt;
&lt;br /&gt;
Whether computers are used to increase the accuracy of a model, interpret the ever-growing stream of data from new image collections and instruments, or engage with peers around the globe, UAB’s status as a leading research community depends on the ability to incorporate these capabilities into the research process.  By participating in the dialog of Research Computing Day at UAB, researchers can share how they are using these methods to enhance their research, gain new insights from peers, and contribute their voices to the growth of research at UAB.&lt;br /&gt;
&lt;br /&gt;
== Research Computing Day 2017 ==&lt;br /&gt;
&lt;br /&gt;
[[RCDay2017|Research Computing Day 2017]] will be held October 13, 2017 from 10:30am to 4:00pm at the Hill Student Center, Alumni Theater.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
Since 2007, The [http://www.uab.edu/it Office of the Vice President for Information Technology] has sponsored an annual dialog on the role of technology in research.  These events joined UAB with [https://wiki.internet2.edu/confluence/display/cidays national dialogs on the role of Cyberinfrastructure in research] held at campuses across the country.&lt;br /&gt;
&lt;br /&gt;
== Previous UAB Research Computing Days ==&lt;br /&gt;
&lt;br /&gt;
* 2007 -- Co-hosted along with the [http://asc.edu ASA] site visit, providing an overview of new services and upcoming launce of the UABgrid pilot. (No web record)&lt;br /&gt;
* 2008 -- Focus on grid computing and collaboration technologies, in particular the caBIG program with guest speakers from Booz Allen Hamilton who managed the NCI caBIG program and SURA (agenda currently offline) &lt;br /&gt;
* 2010 -- Featured introduction to Galaxy platform for genetic sequencing by Dell staff scientist (agenda currently offline)&lt;br /&gt;
* [[2011]] -- Understanding growth of research computing support at peer institutions UNC and Emory &lt;br /&gt;
* [[2012]] -- Growing data sciences at UAB&lt;br /&gt;
* [[2013]] -- OpenStack at UAB&lt;br /&gt;
* [[RCDay2016]] -- HPC Expansion&lt;br /&gt;
&lt;br /&gt;
[[Category:RCDay]]&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5492</id>
		<title>Cheaha GettingStarted</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha_GettingStarted&amp;diff=5492"/>
		<updated>2017-01-25T23:03:44Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Hello World (parallel with MPI) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cheaha is a cluster computing environment for UAB researchers.Information about the history and future plans for Cheaha is available on the [[cheaha]] page.&lt;br /&gt;
&lt;br /&gt;
== Access (Cluster Account Request) ==&lt;br /&gt;
&lt;br /&gt;
To request an account on [[Cheaha]], please [mailto:support@vo.uabgrid.uab.edu submit an authorization request to the IT Research Computing staff].  Please include some background information about the work you plan on doing on the cluster and the group you work with, ie. your lab or affiliation.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources. &lt;br /&gt;
&lt;br /&gt;
The official DNS name of Cheaha's frontend machine is ''cheaha.rc.uab.edu''. If you want to refer to the machine as ''cheaha'', you'll have to either add the &amp;quot;rc.uab.edu&amp;quot; to you computer's DNS search path.  On Unix-derived systems (Linux, Mac) you can edit your computers /etc/resolv.conf as follows (you'll need administrator access to edit this file)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
search rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or you can customize your SSH configuration to use the short name &amp;quot;cheaha&amp;quot; as a connection name. On systems using OpenSSH you can add the following to your  ~/.ssh/config file&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Host cheaha&lt;br /&gt;
 Hostname cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Login ==&lt;br /&gt;
===Overview===&lt;br /&gt;
Once your account has been created, you'll receive an email containing your user ID, generally your Blazer ID. Logging into Cheaha requires an SSH client. Most UAB Windows workstations already have an SSH client installed, possibly named '''SSH Secure Shell Client''' or [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]. Linux and Mac OS X systems should have an SSH client installed by default.&lt;br /&gt;
&lt;br /&gt;
Usage of Cheaha is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.&lt;br /&gt;
&lt;br /&gt;
===Client Configuration===&lt;br /&gt;
This section will cover steps to configure Windows, Linux and Mac OS X clients to connect to Cheaha.&lt;br /&gt;
====Linux====&lt;br /&gt;
Linux systems, regardless of the flavor (RedHat, SuSE, Ubuntu, etc...), should already have an SSH client on the system as part of the default install.&lt;br /&gt;
# Start a terminal (on RedHat click Applications -&amp;gt; Accessories -&amp;gt; Terminal, on Ubuntu Ctrl+Alt+T)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Mac OS X====&lt;br /&gt;
Mac OS X is a Unix operating system (BSD) and has a built in ssh client.&lt;br /&gt;
# Start a terminal (click Finder, type Terminal and double click on Terminal under the Applications category)&lt;br /&gt;
# At the prompt, enter the following command to connect to Cheaha ('''Replace blazerid with your Cheaha userid''')&lt;br /&gt;
 ssh '''blazerid'''@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
There are many SSH clients available for Windows, some commercial and some that are free (GPL). This section will cover two clients that are commonly found on UAB Windows systems.&lt;br /&gt;
=====MobaXterm=====&lt;br /&gt;
[http://mobaxterm.mobatek.net/ MobaXterm] is a free (also available for a price in a Profession version) suite of SSH tools. Of the Windows clients we've used, MobaXterm is the easiest to use and feature complete. [http://mobaxterm.mobatek.net/features.html Features] include (but not limited to):&lt;br /&gt;
* SSH client (in a handy web browser like tabbed interface)&lt;br /&gt;
* Embedded Cygwin (which allows Windows users to run many Linux commands like grep, rsync, sed)&lt;br /&gt;
* Remote file system browser (graphical SFTP)&lt;br /&gt;
* X11 forwarding for remotely displaying graphical content from Cheaha&lt;br /&gt;
* Installs without requiring Windows Administrator rights&lt;br /&gt;
&lt;br /&gt;
Start MobaXterm and click the Session toolbar button (top left). Click SSH for the session type, enter the following information and click OK. Once finished, double click cheaha.rc.uab.edu in the list of Saved sessions under PuTTY sessions:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Remote host'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====PuTTY=====&lt;br /&gt;
[http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] is a free suite of SSH and telnet tools written and maintained by [http://www.pobox.com/~anakin/ Simon Tatham]. PuTTY supports SSH, secure FTP (SFTP), and X forwarding (XTERM) among other tools.&lt;br /&gt;
&lt;br /&gt;
* Start PuTTY (Click START -&amp;gt; All Programs -&amp;gt; PuTTY -&amp;gt; PuTTY). The 'PuTTY Configuration' window will open&lt;br /&gt;
* Use these settings for each of the clusters that you would like to configure&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host Name (or IP address)'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Saved Sessions'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Click '''Save''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start PuTTY, simply double click on the cluster name under the 'Saved Sessions' list&lt;br /&gt;
&lt;br /&gt;
=====SSH Secure Shell Client=====&lt;br /&gt;
SSH Secure Shell is a commercial application that is installed on many Windows workstations on campus and can be configured as follows:&lt;br /&gt;
* Start the program (Click START -&amp;gt; All Programs -&amp;gt; SSH Secure Shell -&amp;gt; Secure Shell Client). The 'default - SSH Secure Shell' window will open&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Add Profile to open the 'Add Profile' window&lt;br /&gt;
* Type in the name of the cluster (for example: cheaha) in the field and click 'Add to Profiles'&lt;br /&gt;
* Click File -&amp;gt; Profiles -&amp;gt; Edit Profiles to open the 'Profiles' window&lt;br /&gt;
* Single click on your new profile name&lt;br /&gt;
* Use these settings for the clusters&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Cheaha Settings&lt;br /&gt;
|-&lt;br /&gt;
|'''Host name'''&lt;br /&gt;
|cheaha.rc.uab.edu&lt;br /&gt;
|-&lt;br /&gt;
|'''User name'''&lt;br /&gt;
|blazerid (insert your blazerid here)&lt;br /&gt;
|-&lt;br /&gt;
|'''Port'''&lt;br /&gt;
|22&lt;br /&gt;
|-&lt;br /&gt;
|'''Protocol'''&lt;br /&gt;
|SSH&lt;br /&gt;
|-&lt;br /&gt;
|'''Encryption algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''MAC algorithm'''&lt;br /&gt;
|&amp;lt;Default&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Compression'''&lt;br /&gt;
|&amp;lt;None&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|'''Terminal answerback'''&lt;br /&gt;
|vt100&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
* Leave 'Connect through firewall' and 'Request tunnels only' unchecked&lt;br /&gt;
* Click '''OK''' to save the configuration, repeat the previous steps for the other clusters&lt;br /&gt;
* The next time you start SSH Secure Shell, click 'Profiles' and click the cluster name&lt;br /&gt;
&lt;br /&gt;
=== Logging in to Cheaha ===&lt;br /&gt;
No matter which client you use to connect to the Cheaha, the first time you connect, the SSH client should display a message asking if you would like to import the hosts public key. Answer '''Yes''' to this question.&lt;br /&gt;
&lt;br /&gt;
* Connect to Cheaha using one of the methods listed above&lt;br /&gt;
* Answer '''Yes''' to import the cluster's public key&lt;br /&gt;
** Enter your BlazerID password&lt;br /&gt;
&lt;br /&gt;
* After successfully logging in for the first time, You may see the following message '''just press ENTER for the next three prompts, don't type any passphrases!'''&lt;br /&gt;
 &lt;br /&gt;
 It doesn't appear that you have set up your ssh key.&lt;br /&gt;
 This process will make the files:&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa.pub&lt;br /&gt;
      /home/joeuser/.ssh/id_rsa&lt;br /&gt;
      /home/joeuser/.ssh/authorized_keys&lt;br /&gt;
 &lt;br /&gt;
 Generating public/private rsa key pair.&lt;br /&gt;
 Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):&lt;br /&gt;
** Enter file in which to save the key (/home/joeuser/.ssh/id_rsa):'''Press Enter'''&lt;br /&gt;
** Enter passphrase (empty for no passphrase):'''Press Enter'''&lt;br /&gt;
** Enter same passphrase again:'''Press Enter'''&lt;br /&gt;
 Your identification has been saved in /home/joeuser/.ssh/id_rsa.&lt;br /&gt;
 Your public key has been saved in /home/joeuser/.ssh/id_rsa.pub.&lt;br /&gt;
 The key fingerprint is:&lt;br /&gt;
 f6:xx:xx:xx:xx:dd:9a:79:7b:83:xx:f9:d7:a7:d6:27 joeuser@cheaha.rc.uab.edu&lt;br /&gt;
&lt;br /&gt;
==== Users without a blazerid (collaborators from other universities) ====&lt;br /&gt;
** If you were issued a temporary password, enter it (Passwords are CaSE SensitivE!!!) You should see a message similar to this&lt;br /&gt;
 You are required to change your password immediately (password aged)&lt;br /&gt;
&lt;br /&gt;
 WARNING: Your password has expired.&lt;br /&gt;
 You must change your password now and login again!&lt;br /&gt;
 Changing password for user joeuser.&lt;br /&gt;
 Changing password for joeuser&lt;br /&gt;
 (current) UNIX password:&lt;br /&gt;
*** (current) UNIX password: '''Enter your temporary password at this prompt and press enter'''&lt;br /&gt;
*** New UNIX password: '''Enter your new strong password and press enter'''&lt;br /&gt;
*** Retype new UNIX password: '''Enter your new strong password again and press enter'''&lt;br /&gt;
*** After you enter your new password for the second time and press enter, the shell may exit automatically. If it doesn't, type exit and press enter&lt;br /&gt;
*** Log in again, this time use your new password&lt;br /&gt;
&lt;br /&gt;
Congratulations, you should now have a command prompt and be ready to start [[Cheaha_GettingStarted#Example_Batch_Job_Script | submitting jobs]]!!!&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
[[Image:Chehah2_2016.png|center|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 2340 compute cores, 20 TB of RAM, and over 4.7PB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen3, gen4, gen5 and gen6(oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node.&lt;br /&gt;
&lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention.&lt;br /&gt;
&lt;br /&gt;
* DDN GPFS storage cluster&lt;br /&gt;
** 2 x 12KX40D-56IB controllers&lt;br /&gt;
** 10 x SS8460 disk enclosures&lt;br /&gt;
** 825 x 4K SAS drives&lt;br /&gt;
&lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 36 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Nvidia Tesla K80 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 4 Compute Nodes with Intel Phi coprocessor SE10/7120 and two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3.1 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
*  gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| ?? || 36 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| ?? || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| ?? || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||openstack(?)|| ? || ? || ?G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3.1||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
== Cluster Software ==&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
== Queing System ==&lt;br /&gt;
All work on Cheaha must be submitted to our queing system ([[Slurm]]). A common mistake made by new users is to run 'jobs' on the login node. This section gives a basic overview of what a queuing system is and why we use it.&lt;br /&gt;
=== What is a queuing system? ===&lt;br /&gt;
* Software that gives users fair allocation of the cluster's resources&lt;br /&gt;
* Schedules jobs based using resource requests (the following are commonly requested resources, there are many more that are available)&lt;br /&gt;
** Number of processors (often referred to as &amp;quot;slots&amp;quot;)&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum run time&lt;br /&gt;
* Common queuing systems:&lt;br /&gt;
** '''[[Slurm]]'''&lt;br /&gt;
** Sun Grid Engine (Also know as SGE, OGE, GE)&lt;br /&gt;
** OpenPBS&lt;br /&gt;
** Torque&lt;br /&gt;
** LSF (load sharing facility)&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine ([[https://docs.uabgrid.uab.edu/wiki/Cheaha_GettingStarted_deprecated SGE]]) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
=== Typical Workflow ===&lt;br /&gt;
* Stage data to $USER_SCRATCH (your scratch directory)&lt;br /&gt;
* Research how to run your code in &amp;quot;batch&amp;quot; mode. Batch mode typically means the ability to run it from the command line without requiring any interaction from the user.&lt;br /&gt;
* Identify the appropriate resources needed to run the job. The following are mandatory resource requests for all jobs on Cheaha&lt;br /&gt;
** Maximum memory (RAM) required per slot&lt;br /&gt;
** Maximum runtime&lt;br /&gt;
* Write a job script specifying queuing system parameters, resource requests and commands to run program&lt;br /&gt;
* Submit script to queuing system (sbatch script.job)&lt;br /&gt;
* Monitor job (squeue)&lt;br /&gt;
* Review the results and resubmit as necessary&lt;br /&gt;
* Clean up the scratch directory by moving or deleting the data off of the cluster&lt;br /&gt;
&lt;br /&gt;
=== Resource Requests ===&lt;br /&gt;
Accurate resource requests are extremely important to the health of the over all cluster. In order for Cheaha to operate properly, the queing system must know how much runtime and RAM each job will need.&lt;br /&gt;
&lt;br /&gt;
==== Mandatory Resource Requests ====&lt;br /&gt;
&lt;br /&gt;
* -t, --time=&amp;lt;time&amp;gt;&lt;br /&gt;
Set a limit on the total run time of the job allocation. If the requested time limit exceeds the partition's time limit, the job will be left in a PENDING state (possibly indefinitely).&lt;br /&gt;
* For Array jobs, this represents the maximum run time for each task&lt;br /&gt;
** For serial or parallel jobs, this represents the maximum run time for the entire job&lt;br /&gt;
&lt;br /&gt;
* --mem-per-cpu=&amp;lt;MB&amp;gt;&lt;br /&gt;
Mimimum memory required per allocated CPU in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
==== Other Common Resource Requests ====&lt;br /&gt;
* -N, --nodes=&amp;lt;minnodes[-maxnodes]&amp;gt;&lt;br /&gt;
Request that a minimum of minnodes nodes be allocated to this job. A maximum node count may also be specified with maxnodes. If only one number is specified, this is used as both the minimum and maximum node count.&lt;br /&gt;
&lt;br /&gt;
* -n, --ntasks=&amp;lt;number&amp;gt;&lt;br /&gt;
sbatch does not launch tasks, it requests an allocation of resources and submits a batch script. This option advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for   sufficient resources. The default is one task per node&lt;br /&gt;
&lt;br /&gt;
* --mem=&amp;lt;MB&amp;gt;&lt;br /&gt;
Specify the real memory required per node in MegaBytes.&lt;br /&gt;
&lt;br /&gt;
* -c, --cpus-per-task=&amp;lt;ncpus&amp;gt;&lt;br /&gt;
Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task. Without this option, the controller will just try to allocate one processor per task.&lt;br /&gt;
&lt;br /&gt;
* -p, --partition=&amp;lt;partition_names&amp;gt;&lt;br /&gt;
Request a specific partition for the resource allocation. Available partitions are: express(max 2 hrs), short(max 12 hrs), medium(max 50 hrs), long(max 150 hrs), sinteractive(0-2 hrs)&lt;br /&gt;
&lt;br /&gt;
=== Submitting Jobs ===&lt;br /&gt;
Batch Jobs are submitted on Cheaha by using the &amp;quot;sbatch&amp;quot; command. The full manual for sbtach is available by running the following command&lt;br /&gt;
 man sbatch&lt;br /&gt;
&lt;br /&gt;
==== Job Script File Format ====&lt;br /&gt;
To submit a job to the queuing systems, you will first define your job in a script (a text file) and then submit that script to the queuing system.&lt;br /&gt;
&lt;br /&gt;
The script file needs to be '''formatted as a UNIX file''', not a Windows or Mac text file. In geek speak, this means that the end of line (EOL) character should be a line feed (LF) rather than a carriage return line feed (CRLF) for Windows or carriage return (CR) for Mac.&lt;br /&gt;
&lt;br /&gt;
If you submit a job script formatted as a Windows or Mac text file, your job will likely fail with misleading messages, for example that the path specified does not exist.&lt;br /&gt;
&lt;br /&gt;
Windows '''Notepad''' does not have the ability to save files using the UNIX file format. Do NOT use Notepad to create files intended for use on the clusters. Instead use one of the alternative text editors listed in the following section.&lt;br /&gt;
&lt;br /&gt;
===== Converting Files to UNIX Format =====&lt;br /&gt;
====== Dos2Unix Method ======&lt;br /&gt;
The lines below that begin with $ are commands, the $ represents the command prompt and should not be typed!&lt;br /&gt;
&lt;br /&gt;
The dos2unix program can be used to convert Windows text files to UNIX files with a simple command. After you have copied the file to your home directory on the cluster, you can identify that the file is a Windows file by executing the following (Windows uses CR LF as the line terminator, where UNIX uses only LF and Mac uses only CR):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text, with CRLF line terminators&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, convert the file to UNIX&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ dos2unix testfile.txt&lt;br /&gt;
 &lt;br /&gt;
dos2unix: converting file testfile.txt to UNIX format ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Verify the conversion using the file command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ file testfile.txt&lt;br /&gt;
 &lt;br /&gt;
testfile.txt: ASCII text&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====== Alternative Windows Text Editors ======&lt;br /&gt;
There are many good text editors available for Windows that have the capability to save files using the UNIX file format. Here are a few:&lt;br /&gt;
* [[http://www.geany.org/ Geany]] is an excellent free text editor for Windows and Linux that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Document''' click '''Set Line Endings''' and then '''Convert and Set to LF (Unix)'''&lt;br /&gt;
* [[http://notepad-plus.sourceforge.net/uk/site.htm Notepad++]] is a great free Windows text editor that supports Windows, UNIX and Mac file formats, syntax highlighting and many programming features. To convert from Windows to UNIX click '''Format''' and then click '''Convert to UNIX Format'''&lt;br /&gt;
* [[http://www.textpad.com/ TextPad]] is another excellent Windows text editor. TextPad is not free, however.&lt;br /&gt;
&lt;br /&gt;
==== Example Batch Job Script ====&lt;br /&gt;
A shared cluster environment like Cheaha uses a job scheduler to run tasks on the cluster to provide optimal resource sharing among users. Cheaha uses a job scheduling system call Slurm to schedule and manage jobs. A user needs to tell Slurm about resource requirements (e.g. CPU, memory) so that it can schedule jobs effectively. These resource requirements along with actual application code can be specified in a single file commonly referred as 'Job Script/File'. Following is a simple job script that prints job number and hostname.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''Jobs '''must request''' the appropriate partition (ex: ''--partition=short'') to satisfy the jobs resource request (maximum runtime, number of compute nodes, etc...)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test&lt;br /&gt;
#SBATCH --output=res.txt&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#SBATCH --time=10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=100&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
srun hostname&lt;br /&gt;
srun sleep 60&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lines starting with '#SBATCH' have a special meaning in the Slurm world. Slurm specific configuration options are specified after the '#SBATCH' characters. Above configuration options are useful for most job scripts and for additional configuration options refer to Slurm commands manual. A job script is submitted to the cluster using Slurm specific commands. There are many commands available, but following three commands are the most common:&lt;br /&gt;
* sbatch - to submit job&lt;br /&gt;
* scancel - to delete job&lt;br /&gt;
* squeue - to view job status&lt;br /&gt;
&lt;br /&gt;
We can submit above job script using sbatch command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch HelloCheaha.sh&lt;br /&gt;
Submitted batch job 52707&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When the job script is submitted, Slurm  queues it up and assigns it a job number (e.g. 52707 in above example). The job number is available inside job script using environment variable $JOB_ID. This variable can be used inside job script to create job related directory structure or file names.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Resources ===&lt;br /&gt;
Login Node (the host that you connected to when you setup the SSH connection to Cheaha) is supposed to be used for submitting jobs and/or lighter prep work required for the job scripts. '''Do not run heavy computations on the login node'''. If you have a heavier workload to prepare for a batch job (eg. compiling code or other manipulations of data) or your compute application requires interactive control, you should request a dedicated interactive node for this work.&lt;br /&gt;
&lt;br /&gt;
Interactive resources are requested by submitting an &amp;quot;interactive&amp;quot; job to the scheduler. Interactive jobs will provide you a command line on a compute resource that you can use just like you would the command line on the login node. The difference is that the scheduler has dedicated the requested resources to your job and you can run your interactive commands without having to worry about impacting other users on the login node.&lt;br /&gt;
&lt;br /&gt;
Interactive jobs, that can be run on command line,  are requested with the '''srun''' command. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
srun --ntasks=4 --mem-per-cpu=4096 --time=08:00:00 --partition=medium --job-name=JOB_NAME --pty /bin/bash&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This command requests for 4 cores (--ntasks) with each task requesting size 4GB of RAM for 8 hrs (--time).&lt;br /&gt;
&lt;br /&gt;
More advanced interactive scenarios to support graphical applications are available using [https://docs.uabgrid.uab.edu/wiki/Setting_Up_VNC_Session VNC] or X11 tunneling [http://www.uab.edu/it/software X-Win32 2014 for Windows]&lt;br /&gt;
&lt;br /&gt;
Interactive jobs that requires running a graphical application, are requested with the '''sinteractive''' command, via '''Terminal''' on your VNC window.&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
=== No Automatic Backups ===&lt;br /&gt;
&lt;br /&gt;
There is no automatic back up of any data on the cluster (home, scratch, or whatever).  All data back up is managed by you.  If you aren't managing a data back up process, then you have no backup data.&lt;br /&gt;
&lt;br /&gt;
=== Home directories ===&lt;br /&gt;
&lt;br /&gt;
Your home directory on Cheaha is NFS-mounted to the compute nodes as /home/$USER or $HOME. It is acceptable to use your home directory a location to store job scripts, custom code, libraries, job scripts.&lt;br /&gt;
&lt;br /&gt;
'''The home directory must not be used to store large amounts of data.''' Please use $USER_SCRATCH &lt;br /&gt;
for actively used data sets or request shared scratch space for shared data sets.&lt;br /&gt;
&lt;br /&gt;
=== Scratch ===&lt;br /&gt;
Research Computing policy requires that all bulky input and output must be located on the scratch space. The home directory is intended to store your job scripts, log files, libraries and other supporting files.&lt;br /&gt;
&lt;br /&gt;
'''Important Information:'''&lt;br /&gt;
* Scratch space (network and local) '''is not backed up'''.&lt;br /&gt;
* Research Computing expects each user to keep their scratch areas clean. The cluster scratch area are not to be used for archiving data.&lt;br /&gt;
&lt;br /&gt;
Cheaha has two types of scratch space, network mounted and local.&lt;br /&gt;
* Network scratch ($USER_SCRATCH) is available on the login node and each compute node. This storage is a Lustre high performance file system providing roughly 240TB of storage. This should be your jobs primary working directory, unless the job would benefit from local scratch (see below).&lt;br /&gt;
* Local scratch is physically located on each compute node and is not accessible to the other nodes (including the login node). This space is useful if the job performs a lot of file I/O. Most of the jobs that run on our clusters do not fall into this category. Because the local scratch is inaccessible outside the job, it is important to note that you must move any data between local scratch to your network accessible scratch within your job. For example, step 1 in the job could be to copy the input from $USER_SCRATCH to ${USER_SCRATCH}, step 2 code execution, step 3 move the data back to $USER_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
==== Network Scratch ====&lt;br /&gt;
Network scratch is available using the environment variable $USER_SCRATCH or directly by /data/scratch/$USER&lt;br /&gt;
&lt;br /&gt;
It is advisable to use the environment variable whenever possible rather than the hard coded path.&lt;br /&gt;
&lt;br /&gt;
==== Local Scratch ====&lt;br /&gt;
Each compute node has a local scratch directory that is accessible via the variable '''$LOCAL_SCRATCH'''. If your job performs a lot of file I/O, the job should use $LOCAL_SCRATCH rather than  $USER_SCRATCH to prevent bogging down the network scratch file system. The amount of scratch space available is approximately 800GB.&lt;br /&gt;
&lt;br /&gt;
The $LOCAL_SCRATCH is a special temporary directory and it's important to note that this directory is deleted when the job completes, so the job script has to move the results to $USER_SCRATCH or other location prior to the job exiting.&lt;br /&gt;
&lt;br /&gt;
Note that $LOCAL_SCRATCH is only useful for jobs in which all processes run on the same compute node, so MPI jobs are not candidates for this solution.&lt;br /&gt;
&lt;br /&gt;
The following is an array job example that uses $LOCAL_SCRATCH by transferring the inputs into $LOCAL_SCRATCH at the beginning of the script and the result out of $LOCAL_SCRATCH at the end of the script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes and the appropriate partition&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;TMPDIR: $LOCAL_SCRATCH&amp;quot;&lt;br /&gt;
&lt;br /&gt;
cd $LOCAL_SCRATCH&lt;br /&gt;
# Create a working directory under the special scheduler local scratch directory&lt;br /&gt;
# using the array job's taskID&lt;br /&gt;
mdkir $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cd $SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Next copy the input data to the local scratch&lt;br /&gt;
echo &amp;quot;Copying input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
# The input data in this case has a numerical file extension that&lt;br /&gt;
# matches $SLURM_ARRAY_TASK_ID&lt;br /&gt;
cp -a $USER_SCRATCH/GeneData/INP*.$SLURM_ARRAY_TASK_ID ./&lt;br /&gt;
echo &amp;quot;copied input data from network scratch to $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID - $(date)&lt;br /&gt;
&lt;br /&gt;
someapp -S 1 -D 10 -i INP*.$SLURM_ARRAY_TASK_ID -o geneapp.out.$SLURM_ARRAY_TASK_ID&lt;br /&gt;
&lt;br /&gt;
# Lastly copy the results back to network scratch&lt;br /&gt;
echo &amp;quot;Copying results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
cp -a geneapp.out.$SLURM_ARRAY_TASK_ID $USER_SCRATCH/GeneData/&lt;br /&gt;
echo &amp;quot;Copied results from local $LOCAL_SCRATCH/$SLURM_ARRAY_TASK_ID to network - $(date)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Project Storage ===&lt;br /&gt;
Cheaha has a location where shared data can be stored called $SHARE_SCRATCH . As with user scratch, this area '''is not backed up'''!&lt;br /&gt;
&lt;br /&gt;
This is helpful if a team of researchers must access the same data. Please open a help desk ticket to request a project directory under $SHARE_SCRATCH.&lt;br /&gt;
&lt;br /&gt;
=== Uploading Data ===&lt;br /&gt;
&lt;br /&gt;
Data can be moved onto the cluster (pushed) from a remote client (ie. you desktop) via SCP or SFTP.  Data can also be downloaded to the cluster (pulled) by issuing transfer commands once you are logged into the cluster. Common transfer methods are `wget &amp;lt;URL&amp;gt;`, FTP, or SCP, and depend on how the data is made available from the data provider.&lt;br /&gt;
&lt;br /&gt;
Large data sets should be staged directly to your $USER_SCRATCH directory so as not to fill up $HOME.  If you are working on a data set shared with multiple users, it's preferable to request space in $SHARE_SCRATCH rather than duplicating the data for each user.&lt;br /&gt;
&lt;br /&gt;
== Environment Modules ==&lt;br /&gt;
[http://modules.sourceforge.net/ Environment Modules] is installed on Cheaha and should be used when constructing your job scripts if an applicable module file exists. Using the module command you can easily configure your environment for specific software packages without having to know the specific environment variables and values to set. Modules allows you to dynamically configure your environment without having to logout / login for the changes to take affect.&lt;br /&gt;
&lt;br /&gt;
If you find that specific software does not have a module, please submit a [http://etlab.eng.uab.edu/ helpdesk ticket] to request the module.&lt;br /&gt;
&lt;br /&gt;
* Cheaha supports bash completion for the module command. For example, type 'module' and press the TAB key twice to see a list of options:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module TAB TAB&lt;br /&gt;
&lt;br /&gt;
add          display      initlist     keyword      refresh      switch       use          &lt;br /&gt;
apropos      help         initprepend  list         rm           unload       whatis       &lt;br /&gt;
avail        initadd      initrm       load         show         unuse        &lt;br /&gt;
clear        initclear    initswitch   purge        swap         update&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see the list of available modulefiles on the cluster, run the '''module avail''' command (note the example list below may not be complete!) or '''module load ''' followed by two tab key presses:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module avail&lt;br /&gt;
 &lt;br /&gt;
----------------------------------------------------------------------------------------- /cm/shared/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
acml/gcc/64/5.3.1                    acml/open64-int64/mp/fma4/5.3.1      fftw2/openmpi/gcc/64/float/2.1.5     intel-cluster-runtime/ia32/3.8       netcdf/gcc/64/4.3.3.1&lt;br /&gt;
acml/gcc/fma4/5.3.1                  blacs/openmpi/gcc/64/1.1patch03      fftw2/openmpi/open64/64/double/2.1.5 intel-cluster-runtime/intel64/3.8    netcdf/open64/64/4.3.3.1&lt;br /&gt;
acml/gcc/mp/64/5.3.1                 blacs/openmpi/open64/64/1.1patch03   fftw2/openmpi/open64/64/float/2.1.5  intel-cluster-runtime/mic/3.8        netperf/2.7.0&lt;br /&gt;
acml/gcc/mp/fma4/5.3.1               blas/gcc/64/3.6.0                    fftw3/openmpi/gcc/64/3.3.4           intel-tbb-oss/ia32/44_20160526oss    open64/4.5.2.1&lt;br /&gt;
acml/gcc-int64/64/5.3.1              blas/open64/64/3.6.0                 fftw3/openmpi/open64/64/3.3.4        intel-tbb-oss/intel64/44_20160526oss openblas/dynamic/0.2.15&lt;br /&gt;
acml/gcc-int64/fma4/5.3.1            bonnie++/1.97.1                      gdb/7.9                              iozone/3_434                         openmpi/gcc/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/64/5.3.1           cmgui/7.2                            globalarrays/openmpi/gcc/64/5.4      lapack/gcc/64/3.6.0                  openmpi/open64/64/1.10.1&lt;br /&gt;
acml/gcc-int64/mp/fma4/5.3.1         cuda75/blas/7.5.18                   globalarrays/openmpi/open64/64/5.4   lapack/open64/64/3.6.0               pbspro/13.0.2.153173&lt;br /&gt;
acml/open64/64/5.3.1                 cuda75/fft/7.5.18                    hdf5/1.6.10                          mpich/ge/gcc/64/3.2                  puppet/3.8.4&lt;br /&gt;
acml/open64/fma4/5.3.1               cuda75/gdk/352.79                    hdf5_18/1.8.16                       mpich/ge/open64/64/3.2               rc-base&lt;br /&gt;
acml/open64/mp/64/5.3.1              cuda75/nsight/7.5.18                 hpl/2.1                              mpiexec/0.84_432                     scalapack/mvapich2/gcc/64/2.0.2&lt;br /&gt;
acml/open64/mp/fma4/5.3.1            cuda75/profiler/7.5.18               hwloc/1.10.1                         mvapich/gcc/64/1.2rc1                scalapack/openmpi/gcc/64/2.0.2&lt;br /&gt;
acml/open64-int64/64/5.3.1           cuda75/toolkit/7.5.18                intel/compiler/32/15.0/2015.5.223    mvapich/open64/64/1.2rc1             sge/2011.11p1&lt;br /&gt;
acml/open64-int64/fma4/5.3.1         default-environment                  intel/compiler/64/15.0/2015.5.223    mvapich2/gcc/64/2.2b                 slurm/15.08.6&lt;br /&gt;
acml/open64-int64/mp/64/5.3.1        fftw2/openmpi/gcc/64/double/2.1.5    intel-cluster-checker/2.2.2          mvapich2/open64/64/2.2b              torque/6.0.0.1&lt;br /&gt;
&lt;br /&gt;
---------------------------------------------------------------------------------------- /share/apps/modulefiles -----------------------------------------------------------------------------------------&lt;br /&gt;
rc/BrainSuite/15b                       rc/freesurfer/freesurfer-5.3.0          rc/intel/compiler/64/ps_2016/2016.0.047 rc/matlab/R2015a                        rc/SAS/v9.4&lt;br /&gt;
rc/cmg/2012.116.G                       rc/gromacs-intel/5.1.1                  rc/Mathematica/10.3                     rc/matlab/R2015b&lt;br /&gt;
rc/dsistudio/dsistudio-20151020         rc/gtool/0.7.5                          rc/matlab/R2012a                        rc/MRIConvert/2.0.8&lt;br /&gt;
&lt;br /&gt;
--------------------------------------------------------------------------------------- /share/apps/rc/modules/all ---------------------------------------------------------------------------------------&lt;br /&gt;
AFNI/linux_openmp_64-goolf-1.7.20-20160616                gperf/3.0.4-intel-2016a                                   MVAPICH2/2.2b-GCC-4.9.3-2.25&lt;br /&gt;
Amber/14-intel-2016a-AmberTools-15-patchlevel-13-13       grep/2.15-goolf-1.4.10                                    NASM/2.11.06-goolf-1.7.20&lt;br /&gt;
annovar/2016Feb01-foss-2015b-Perl-5.22.1                  GROMACS/5.0.5-intel-2015b-hybrid                          NASM/2.11.08-foss-2015b&lt;br /&gt;
ant/1.9.6-Java-1.7.0_80                                   GSL/1.16-goolf-1.7.20                                     NASM/2.11.08-intel-2016a&lt;br /&gt;
APBS/1.4-linux-static-x86_64                              GSL/1.16-intel-2015b                                      NASM/2.12.02-foss-2016a&lt;br /&gt;
ASHS/rev103_20140612                                      GSL/2.1-foss-2015b                                        NASM/2.12.02-intel-2015b&lt;br /&gt;
Aspera-Connect/3.6.1                                      gtool/0.7.5_linux_x86_64                                  NASM/2.12.02-intel-2016a&lt;br /&gt;
ATLAS/3.10.1-gompi-1.5.12-LAPACK-3.4.2                    guile/1.8.8-GNU-4.9.3-2.25                                ncurses/5.9-foss-2015b&lt;br /&gt;
Autoconf/2.69-foss-2016a                                  HAPGEN2/2.2.0                                             ncurses/5.9-GCC-4.8.4&lt;br /&gt;
Autoconf/2.69-GCC-4.8.4                                   HarfBuzz/1.2.7-intel-2016a                                ncurses/5.9-GNU-4.9.3-2.25&lt;br /&gt;
Autoconf/2.69-GNU-4.9.3-2.25                              HDF5/1.8.15-patch1-intel-2015b                            ncurses/5.9-goolf-1.4.10&lt;br /&gt;
 . &lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some software packages have multiple module files, for example:&lt;br /&gt;
* GCC/4.7.2                            &lt;br /&gt;
* GCC/4.8.1                                                &lt;br /&gt;
* GCC/4.8.2                                                &lt;br /&gt;
* GCC/4.8.4                                                &lt;br /&gt;
* GCC/4.9.2                               &lt;br /&gt;
* GCC/4.9.3                                                &lt;br /&gt;
* GCC/4.9.3-2.25                &lt;br /&gt;
&lt;br /&gt;
In this case, the GCC module will always load the latest version, so loading this module is equivalent to loading GCC/4.9.3-2.25. If you always want to use the latest version, use this approach. If you want use a specific version, use the module file containing the appropriate version number.&lt;br /&gt;
&lt;br /&gt;
Some modules, when loaded, will actually load other modules. For example, the ''GROMACS/5.0.5-intel-2015b-hybrid '' module will also load ''intel/2015b'' and other related tools.&lt;br /&gt;
&lt;br /&gt;
* To load a module, ex: for a GROMACS job, use the following '''module load''' command in your job script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load  GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To see a list of the modules that you currently have loaded use the '''module list''' command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module list&lt;br /&gt;
 &lt;br /&gt;
Currently Loaded Modulefiles:&lt;br /&gt;
  1) slurm/15.08.6                                       9) impi/5.0.3.048-iccifort-2015.3.187-GNU-4.9.3-2.25  17) Tcl/8.6.3-intel-2015b&lt;br /&gt;
  2) rc-base                                            10) iimpi/7.3.5-GNU-4.9.3-2.25                         18) SQLite/3.8.8.1-intel-2015b&lt;br /&gt;
  3) GCC/4.9.3-binutils-2.25                            11) imkl/11.2.3.187-iimpi-7.3.5-GNU-4.9.3-2.25         19) Tk/8.6.3-intel-2015b-no-X11&lt;br /&gt;
  4) binutils/2.25-GCC-4.9.3-binutils-2.25              12) intel/2015b                                        20) Python/2.7.9-intel-2015b&lt;br /&gt;
  5) GNU/4.9.3-2.25                                     13) bzip2/1.0.6-intel-2015b                            21) Boost/1.58.0-intel-2015b-Python-2.7.9&lt;br /&gt;
  6) icc/2015.3.187-GNU-4.9.3-2.25                      14) zlib/1.2.8-intel-2015b                             22) GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
  7) ifort/2015.3.187-GNU-4.9.3-2.25                    15) ncurses/5.9-intel-2015b&lt;br /&gt;
  8) iccifort/2015.3.187-GNU-4.9.3-2.25                 16) libreadline/6.3-intel-2015b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* A module can be removed from your environment by using the '''module unload''' command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module unload GROMACS/5.0.5-intel-2015b-hybrid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The definition of a module can also be viewed using the '''module show''' command, revealing what a specific module will do to your environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module show GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
/share/apps/rc/modules/all/GROMACS/5.0.5-intel-2015b-hybrid:&lt;br /&gt;
&lt;br /&gt;
module-whatis  GROMACS is a versatile package to perform molecular dynamics,&lt;br /&gt;
 i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. - Homepage: http://www.gromacs.org &lt;br /&gt;
conflict   GROMACS &lt;br /&gt;
prepend-path   CPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/include &lt;br /&gt;
prepend-path   LD_LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   LIBRARY_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64 &lt;br /&gt;
prepend-path   MANPATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/share/man &lt;br /&gt;
prepend-path   PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/bin &lt;br /&gt;
prepend-path   PKG_CONFIG_PATH /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/lib64/pkgconfig &lt;br /&gt;
setenv     EBROOTGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
setenv     EBVERSIONGROMACS 5.0.5 &lt;br /&gt;
setenv     EBDEVELGROMACS /share/apps/rc/software/GROMACS/5.0.5-intel-2015b-hybrid/easybuild/GROMACS-5.0.5-intel-2015b-hybrid-easybuild-devel &lt;br /&gt;
-------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Error Using Modules from a Job Script ===&lt;br /&gt;
&lt;br /&gt;
If you are using modules and the command your job executes runs fine from the command line but fails when you run it from the job, you may be having an issue with the script initialization.   If you see this error in your job error output file&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-bash: module: line 1: syntax error: unexpected end of file&lt;br /&gt;
-bash: error importing function definition for `BASH_FUNC_module'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add the command `unset module` before calling your module files.  The -V job argument will cause a conflict with the module function used in your script.&lt;br /&gt;
&lt;br /&gt;
== Sample Job Scripts ==&lt;br /&gt;
The following are sample job scripts, please be careful to edit these for your environment (i.e. replace &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;YOUR_EMAIL_ADDRESS&amp;lt;/font&amp;gt; with your real email address), set the h_rt to an appropriate runtime limit and modify the job name and any other parameters.&lt;br /&gt;
&lt;br /&gt;
'''Hello World''' is the classic example used throughout programming. We don't want to buck the system, so we'll use it as well to demonstrate jobs submission with one minor variation: our hello world will send us a greeting using the name of whatever machine it runs on. For example, when run on the Cheaha login node, it would print &amp;quot;Hello from login001&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) ===&lt;br /&gt;
&lt;br /&gt;
A serial job is one that can run independently of other commands, ie. it doesn't depend on the data from other jobs running simultaneously. You can run many serial jobs in any order. This is a common solution to processing lots of data when each command works on a single piece of data. For example, running the same conversion on 100s of images.&lt;br /&gt;
&lt;br /&gt;
Here we show how to create job script for one simple command. Running more than one command just requires submitting more jobs.&lt;br /&gt;
&lt;br /&gt;
* Create your hello world application. Run this command to create a script, turn it into to a command, and run the command (just copy and past the following on to the command line).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat &amp;gt; helloworld.sh &amp;lt;&amp;lt; EOF&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
echo Hello from `hostname`&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x helloworld.sh&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Create the Slurm job script that will request 256 MB RAM and a maximum runtime of 10 minutes.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld.err&lt;br /&gt;
#SBATCH --output=helloworld.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=$USER@uab.edu&lt;br /&gt;
&lt;br /&gt;
./helloworld.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
Submitted batch job 52888&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld.out and helloworld.err &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (parallel with MPI) ===&lt;br /&gt;
&lt;br /&gt;
MPI is used to coordinate the activity of many computations occurring in parallel.  It is commonly used in simulation software for molecular dynamics, fluid dynamics, and similar domains where there is significant communication (data) exchanged between cooperating process.&lt;br /&gt;
&lt;br /&gt;
Here is a simple parallel Slurm job script for running commands the rely on MPI. This example also includes the example of compiling the code and submitting the job script to the Slurm scheduler.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory for the Hello World jobs&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/helloworld&lt;br /&gt;
$ cd ~/jobs/helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Hello World code written in C (this example of MPI enabled Hello World includes a 3 minute sleep to ensure the job runs for several minutes, a normal hello world example would run in a matter of seconds).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld-mpi.c&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mpi.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
   int rank, size;&lt;br /&gt;
&lt;br /&gt;
   int i, j;&lt;br /&gt;
   float f;&lt;br /&gt;
&lt;br /&gt;
   MPI_Init(&amp;amp;argc,&amp;amp;argv);&lt;br /&gt;
   MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;br /&gt;
   MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;br /&gt;
&lt;br /&gt;
   printf(&amp;quot;Hello World from process %d of %d.\n&amp;quot;, rank, size);&lt;br /&gt;
   sleep(180);&lt;br /&gt;
   for (j=0; j&amp;lt;=100000; j++)&lt;br /&gt;
      for(i=0; i&amp;lt;=100000; i++)&lt;br /&gt;
          f=i*2.718281828*i+i+i*3.141592654;&lt;br /&gt;
&lt;br /&gt;
   MPI_Finalize();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Compile the code, first purging any modules you may have loaded followed by loading the module for OpenMPI GNU. The mpicc command will compile the code and produce a binary named helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
$ mpicc helloworld-mpi.c -o helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Create the Slurm job script that will request 8 cpu slots and a maximum runtime of 10 minutes&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ vi helloworld.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=helloworld_mpi&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=helloworld_mpi.err&lt;br /&gt;
#SBATCH --output=helloworld_mpi.out&lt;br /&gt;
#SBATCH --ntasks=8&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
mpirun -np $SLURM_NTASKS helloworld_gnu_openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Submit the job to Slurm scheduler and check the status using squeue -u $USER&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld.job&lt;br /&gt;
&lt;br /&gt;
Submitted batch job 52893&lt;br /&gt;
&lt;br /&gt;
$ squeue -u BLAZERID&lt;br /&gt;
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)&lt;br /&gt;
             52893   express hellowor   BLAZERID  R       2:07      2 c[0005-0006]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* When the job completes, you should have output files named helloworld_mpi.out and helloworld_mpi.err&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cat helloworld_mpi.out&lt;br /&gt;
&lt;br /&gt;
Hello World from process 1 of 8.&lt;br /&gt;
Hello World from process 3 of 8.&lt;br /&gt;
Hello World from process 4 of 8.&lt;br /&gt;
Hello World from process 7 of 8.&lt;br /&gt;
Hello World from process 5 of 8.&lt;br /&gt;
Hello World from process 6 of 8.&lt;br /&gt;
Hello World from process 0 of 8.&lt;br /&gt;
Hello World from process 2 of 8.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hello World (serial) -- revisited ===&lt;br /&gt;
&lt;br /&gt;
The job submit scripts (sbatch scripts) are actually bash shell scripts in their own right.  The reason for using the funky #SBATCH prefix in the scripts is so that bash interprets any such line as a comment and won't execute it. Because the # character starts a comment in bash, we can weave the  Slurm scheduler directives (the #SBATCH lines) into standard bash scripts.  This lets us build scripts that we can execute locally and then easily run the same script to on a cluster node by calling it with sbatch. This can be used to our advantage to create a more fluid experience in moving between development and production job runs. &lt;br /&gt;
&lt;br /&gt;
The following example is a simple variation on the serial job above.  All we will do is convert our Slurm job script into a command called helloworld that calls the helloworld.sh command.&lt;br /&gt;
&lt;br /&gt;
If the first line of a file is #!/bin/bash and that file is executable, the shell will automatically run the command as if were any other system command, eg. ls.   That is, the &amp;quot;.sh&amp;quot; extension on our HelloWorld.sh script is completely optional and is only meaningful to the user.&lt;br /&gt;
&lt;br /&gt;
Copy the serial helloworld.job script to a new file, add a the special #!/bin/bash as the first line, and make it executable with the following command (note: those are single quotes in the echo command): &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo '#!/bin/bash' | cat helloworld.job &amp;gt; helloworld ; chmod +x helloworld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sbatch script has now become a regular command. We can now execute the command with the simple prefix &amp;quot;./helloworld&amp;quot;, which means &amp;quot;execute this file in the current directory&amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./helloworld&lt;br /&gt;
Hello from login001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or if we want to run the command on a compute node, replace the &amp;quot;./&amp;quot; prefix with &amp;quot;sbatch &amp;quot;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch helloworld&lt;br /&gt;
Submitted batch job 53001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And when the cluster run is complete you can look at the content of the output:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ $ cat helloworld.out &lt;br /&gt;
Hello from c0003&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can use this approach of treating you sbatch files as command wrappers to build a collection of commands that can be executed locally or via sbatch.  The other examples can be restructured similarly.&lt;br /&gt;
&lt;br /&gt;
To avoid having to use the &amp;quot;./&amp;quot; prefix, just add the current directory to your PATH. Also, if you plan to do heavy development using this feature on the cluster, please be sure to run [https://docs.uabgrid.uab.edu/wiki/Slurm#Interactive_Session sinteractive] first so you don't load the login node with your development work.&lt;br /&gt;
&lt;br /&gt;
=== Gromacs ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=test_gromacs&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=test_gromacs.err&lt;br /&gt;
#SBATCH --output=test_gromacs.out&lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=4&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:01:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load OpenMPI/1.8.8-GNU-4.9.3-2.25&lt;br /&gt;
&lt;br /&gt;
module load GROMACS/5.0.5-intel-2015b-hybrid &lt;br /&gt;
&lt;br /&gt;
# Change directory to the job working directory if not already there&lt;br /&gt;
cd ${USER_SCRATCH}/jobs/gromacs&lt;br /&gt;
&lt;br /&gt;
# Single precision&lt;br /&gt;
MDRUN=mdrun_mpi&lt;br /&gt;
&lt;br /&gt;
# Enter your tpr file over here&lt;br /&gt;
export MYFILE=example.tpr&lt;br /&gt;
&lt;br /&gt;
srun mpirun $MDRUN -v -s $MYFILE -o $MYFILE -c $MYFILE -x $MYFILE -e $MYFILE -g ${MYFILE}.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== R ===&lt;br /&gt;
&lt;br /&gt;
The following is an example job script that will use an array of 10 tasks (--array=1-10), each task has a max runtime of 2 hours and will use no more than 256 MB of RAM per task.&lt;br /&gt;
&lt;br /&gt;
Create a working directory and the job submission script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mkdir -p ~/jobs/ArrayExample&lt;br /&gt;
$ cd ~/jobs/ArrayExample&lt;br /&gt;
$ vi R-example-array.job&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --array=1-10&lt;br /&gt;
#SBATCH --share&lt;br /&gt;
#SBATCH --partition=express&lt;br /&gt;
#&lt;br /&gt;
# Name your job to make it easier for you to track&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --job-name=R_array_job&lt;br /&gt;
#&lt;br /&gt;
# Set your error and output files&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --error=R_array_job.err&lt;br /&gt;
#SBATCH --output=R_array_job.out&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#&lt;br /&gt;
# Tell the scheduler only need 10 minutes&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --time=00:10:00&lt;br /&gt;
#SBATCH --mem-per-cpu=256&lt;br /&gt;
#&lt;br /&gt;
# Set your email address and request notification when you job is complete or if it fails&lt;br /&gt;
#&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
#SBATCH --mail-user=YOUR_EMAIL_ADDRESS&lt;br /&gt;
&lt;br /&gt;
module load R/3.2.0-goolf-1.7.20 &lt;br /&gt;
cd ~/jobs/ArrayExample/rep$SLURM_ARRAY_TASK_ID&lt;br /&gt;
srun R CMD BATCH rscript.R&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Submit the job to the Slurm scheduler and check the status of the job using the squeue command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sbatch R-example-array.job&lt;br /&gt;
$ squeue -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Installed Software ==&lt;br /&gt;
&lt;br /&gt;
A partial list of installed software with additional instructions for their use is available on the [[Cheaha Software]] page.&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5435</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5435"/>
		<updated>2016-10-26T20:21:26Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Performance Statistics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to three generations of compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with several generations of hardware with approximately 3000 cores]] connected by low-latency Fourteen Data Rate (FDR) and Quad Data Rate (QDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, a 180TB of high performance Lustre storage on a DDN hardware and an additional 20TB available for home directories on a traditional Hitachi SAN and other ancillary services. The compute nodes combine to provide over 120TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility  UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to extend cloud computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC.  This fabric is under [http://dev.uabgrid.uab.edu active development] and will see feature releases in the coming months.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 3120 conventional CPU cores across five generations of hardware that provide over 120 TFLOP/s of combined computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware and 180TB Lustre parallel file system built on a Direct Data Network (DDN) hardware platform is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage and 432TB of OpenStack+Ceph storage is available via a 10+ GigE network fabric. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded investigators are granted priority access to the NIH SIG award acquired compute and storage pool that includes an additional 576 2.66GHz Intel-based compute cores, 2.3TB RAM and 180TB in the high-performance Lustre parallel file system all interconnected via a QDR Infiniband network fabric.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the research computing resources acquired and managed by UAB IT Research Computing. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded researchers using the cluster for genomics or proteomics analyses should include the following statement regarding the NIH funded gen3 (SIG) compute resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Computational portions of this research were supported by NIH S10RR026723.  Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Institutes of Health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Cluster Usage Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Bright Cluster Manager to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the status monitoring page [https://cheaha-master01.rc.uab.edu/userportal/ here] (accessible only on the UAB network or through VPN).&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5434</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5434"/>
		<updated>2016-10-26T20:19:12Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to three generations of compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with several generations of hardware with approximately 3000 cores]] connected by low-latency Fourteen Data Rate (FDR) and Quad Data Rate (QDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, a 180TB of high performance Lustre storage on a DDN hardware and an additional 20TB available for home directories on a traditional Hitachi SAN and other ancillary services. The compute nodes combine to provide over 120TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility  UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to extend cloud computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC.  This fabric is under [http://dev.uabgrid.uab.edu active development] and will see feature releases in the coming months.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 3120 conventional CPU cores across five generations of hardware that provide over 120 TFLOP/s of combined computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware and 180TB Lustre parallel file system built on a Direct Data Network (DDN) hardware platform is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage and 432TB of OpenStack+Ceph storage is available via a 10+ GigE network fabric. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded investigators are granted priority access to the NIH SIG award acquired compute and storage pool that includes an additional 576 2.66GHz Intel-based compute cores, 2.3TB RAM and 180TB in the high-performance Lustre parallel file system all interconnected via a QDR Infiniband network fabric.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the research computing resources acquired and managed by UAB IT Research Computing. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded researchers using the cluster for genomics or proteomics analyses should include the following statement regarding the NIH funded gen3 (SIG) compute resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Computational portions of this research were supported by NIH S10RR026723.  Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Institutes of Health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [http://www.brightcomputing.com Bright Cluster Manager]. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Performance Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Ganglia to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the Ganglia monitoring page [https://cheaha.uabgrid.uab.edu/ganglia/ here].&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
	<entry>
		<id>https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5433</id>
		<title>Cheaha</title>
		<link rel="alternate" type="text/html" href="https://docs.uabgrid.uab.edu/w/index.php?title=Cheaha&amp;diff=5433"/>
		<updated>2016-10-26T20:17:48Z</updated>

		<summary type="html">&lt;p&gt;Puri@uab.edu: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main_Banner}}&lt;br /&gt;
'''Cheaha''' is a campus resource dedicated to enhancing research computing productivity at UAB. [http://cheaha.uabgrid.uab.edu Cheaha] is managed by [http://www.uab.edu/it UAB Information Technology's Research Computing group (UAB ITRC)] and is available to members of the UAB community in need of increased computational capacity.  Cheaha supports [http://en.wikipedia.org/wiki/High-performance_computing high-performance computing (HPC)] and [http://en.wikipedia.org/wiki/High-throughput_computing high throughput computing (HTC)] paradigms.&lt;br /&gt;
&lt;br /&gt;
Cheaha provides users with a traditional command-line interactive environment with access to many scientific tools that can leverage its dedicated pool of local compute resources.  Alternately, users of graphical applications can start a [[Setting_Up_VNC_Session|cluster desktop]]. The local compute pool provides access to three generations of compute hardware based on the [http://en.wikipedia.org/wiki/X86_64 x86-64 64-bit architecture].  The compute resources are organized into a unified Research Computing System.  The compute fabric for this system is anchored by the Cheaha cluster, [[ Resources |a commodity cluster with several generations of hardware with approximately 3000 cores]] connected by low-latency Fourteen Data Rate (FDR) and Quad Data Rate (QDR) InfiniBand networks.  The compute nodes are backed by 6.6PB raw GPFS storage on DDN SFA12KX hardware, a 180TB of high performance Lustre storage on a DDN hardware and an additional 20TB available for home directories on a traditional Hitachi SAN and other ancillary services. The compute nodes combine to provide over 120TFlops of dedicated computing power.   &lt;br /&gt;
&lt;br /&gt;
Cheaha is composed of resources that span data centers located in the UAB Shared Computing facility  UAB 936 Building and the RUST Computer Center. Resource design and development is lead by UAB IT Research Computing in open collaboration with community members. Operational [mailto:support@vo.uabgrid.uab.edu support] is provided by UAB IT's Research Computing group.&lt;br /&gt;
&lt;br /&gt;
Cheaha is named in honor of [http://en.wikipedia.org/wiki/Cheaha_Mountain Cheaha Mountain], the highest peak in the state of Alabama.  Cheaha is a popular destination whose summit offers clear vistas of the surrounding landscape. (Cheaha Mountain photo-streams on [http://www.flickr.com/search/?q=cheaha  Flikr] and [http://picasaweb.google.com/lh/view?q=cheaha&amp;amp;psc=G&amp;amp;filter=1# Picasa]).&lt;br /&gt;
&lt;br /&gt;
== Using ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
&lt;br /&gt;
For information on getting an account, logging in, and running a job, please see [[Cheaha2_GettingStarted|Getting Started]].&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
[[Image:Research-computing-platform.png|right|thumb|450px|Logical Diagram of Cheaha Configuration]]&lt;br /&gt;
&lt;br /&gt;
=== 2005 ===&lt;br /&gt;
&lt;br /&gt;
In 2002 UAB was awarded an infrastructure development grant through the NSF EPsCoR program.  This led to the 2005 acquisition of a 64 node compute cluster with two AMD Opteron 242 1.6Ghz CPUs per node (128 total cores).  This cluster was named Cheaha.  Cheaha expanded the compute capacity available at UAB and was the first general-access resource for the community. It lead to expanded roles for UAB IT in research computing support through the development of the UAB Shared HPC Facility in BEC and provided further engagement in Globus-based grid computing resource development on campus via UABgrid and regionally via [http://www.suragrid.org SURAgrid].&lt;br /&gt;
&lt;br /&gt;
=== 2008 ===&lt;br /&gt;
&lt;br /&gt;
In 2008, money was allocated by UAB IT for hardware upgrades which lead to the acquisition of an additional 192 cores based on a Dell clustering solution with Intel Quad-Core E5450 3.0Ghz CPU in August of 2008. This uprade migrated Cheaha's core infrastructure to the Dell blade clustering solution. It provided a 3 fold increase in processor density over the original hardware and enables more computing power to be located in the same physical space with room for expansion, an important consideration in light of the continued growth in processing demand.  This hardware represented a major technology upgrade that included space for additional expansion to address over-all capacity demand and enable resource reservation.  &lt;br /&gt;
&lt;br /&gt;
The 2008 upgrade began a continuous resource improvement plan that includes a phased development approach for Cheaha with on-going increases in capacity and feature enhancements being brought into production via an [http://projects.uabgrid.uab.edu/cheaha open community process].&lt;br /&gt;
&lt;br /&gt;
Software improvements rolled into the 2008 upgrade included grid computing services to access distributed compute resources and orchestrate jobs using the [http://www.gridway.org GridWay] meta-scheduler. An initial 10Gigabit Ethernet link establishing the UABgrid Research Network was designed to supports high speed data transfers between clusters connected to this network.&lt;br /&gt;
&lt;br /&gt;
=== 2009 ===&lt;br /&gt;
&lt;br /&gt;
In 2009, annual investment funds were directed toward establishing a fully connected dual data rate Infiniband network between the compute nodes added in 2008 and laying the foundation for a research storage system with a 60TB DDN storage system accessed via the Lustre distributed file system.  The Infiniband and storage fabrics were designed to support significant increases in research data sets and their associate analytical demand.&lt;br /&gt;
&lt;br /&gt;
=== 2010 ===&lt;br /&gt;
&lt;br /&gt;
In 2010, UAB was awarded an NIH Small Instrumentation Grant (SIG) to further increase analytical and storage capacity.  The grant funds were combined with the annual investment funds adding 576 cores (48 nodes) based on the Intel Westmere 2.66 GHz CPU, a quad data rate Infiniband fabric with 32 uplinks, an additional 120 TB of storage for the DDN fabric, and additional hardware to improve reliability. Additional improvements to the research compute platform involved extending the UAB Research Network to link the BEC and RUST data centers, adding 20TB of user and ancillary services storage&lt;br /&gt;
&lt;br /&gt;
=== 2012 ===&lt;br /&gt;
&lt;br /&gt;
In 2012, UAB IT Research Computing invested in the foundation hardware to expand long term storage and virtual machine capabilities with aqcuisition of 12 Dell 720xd system, each containing 16 cores, 96GB RAM, and 36TB of storage, creating a 192 core and 432TB virtual compute and storage fabric.&lt;br /&gt;
&lt;br /&gt;
Additionaly hardware investment by the School of Public Health's Section on Statistical Genetics added three 384GB large memory nodes and an additional 48 cores to the QDR Infiniband fabric.&lt;br /&gt;
&lt;br /&gt;
=== 2013 ===&lt;br /&gt;
&lt;br /&gt;
In 2013, UAB IT Research Computing acquired an [http://blogs.uabgrid.uab.edu/jpr/2013/03/were-going-with-openstack/ OpenStack cloud and Ceph storage software fabric] through a partnership between Dell and Inktank in order to extend cloud computing solutions to the researchers at UAB and enhance the interfacing capabilities for HPC.  This fabric is under [http://dev.uabgrid.uab.edu active development] and will see feature releases in the coming months.&lt;br /&gt;
&lt;br /&gt;
=== 2015/2016 === &lt;br /&gt;
&lt;br /&gt;
In 2015/2016 UAB IT Research computing acquired 96 2x12 core (2304 cores total) 2.5 GHz Intel Xeon E5-2680 v3 compute nodes with FDR InfiniBand interconnect. Out of the 96 compute nodes, 36 nodes have 128 GB RAM, 38 nodes have 256 GB RAM, and 14 nodes have 384 GB RAM. There are also four compute nodes with the Intel Xeon Phi 7210 accelerator cards and four compute nodes with the NVIDIA K80 GPUs. More information can be found at [[Resources]].&lt;br /&gt;
&lt;br /&gt;
== Grant and Publication Resources ==&lt;br /&gt;
&lt;br /&gt;
The following description may prove useful in summarizing the services available via Cheaha.  If you are using Cheaha for grant funded research please send information about your grant (funding source and grant number), a statement of intent for the research project and a list of the applications you are using to UAB IT Research Computing.  If you are using Cheaha for exploratory research, please send a similar note on your research interest.  Finally, any publications that rely on computations performed on Cheaha should include a statement acknowledging the use of UAB Research Computing facilities in your research, see the suggested example below.  Please note, your acknowledgment may also need to include an addition statement acknowledging grant-funded hardware.  We also ask that you send any references to publications based on your use of Cheaha compute resources.&lt;br /&gt;
&lt;br /&gt;
=== Description of Cheaha for Grants ===&lt;br /&gt;
&lt;br /&gt;
UAB IT Research Computing maintains high performance compute and storage resources for investigators. The Cheaha compute cluster provides 3120 conventional CPU cores across five generations of hardware that provide over 120 TFLOP/s of combined computational performance, and 20 TB of system memory interconnected via an Infiniband network. A high-performance, 6.6PB raw GPFS storage on DDN SFA12KX hardware and 180TB Lustre parallel file system built on a Direct Data Network (DDN) hardware platform is also connected to these cores via the Infiniband fabric. An additional 20TB of traditional SAN storage and 432TB of OpenStack+Ceph storage is available via a 10+ GigE network fabric. This general access compute fabric is available to all UAB investigators.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded investigators are granted priority access to the NIH SIG award acquired compute and storage pool that includes an additional 576 2.66GHz Intel-based compute cores, 2.3TB RAM and 180TB in the high-performance Lustre parallel file system all interconnected via a QDR Infiniband network fabric.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgment in Publications ===&lt;br /&gt;
&lt;br /&gt;
This work was supported in part by the research computing resources acquired and managed by UAB IT Research Computing. Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the University of Alabama at Birmingham.&lt;br /&gt;
&lt;br /&gt;
Additionally, NIH funded researchers using the cluster for genomics or proteomics analyses should include the following statement regarding the NIH funded gen3 (SIG) compute resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Computational portions of this research were supported by NIH S10RR026723.  Any opinions, findings and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Institutes of Health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== System Profile ==&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
{{CheahaTflops}}&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
The Cheaha Compute Platform includes three generations of commodity compute hardware, totaling 868 compute cores, 2.8TB of RAM, and over 200TB of storage.&lt;br /&gt;
&lt;br /&gt;
The hardware is grouped into generations designated gen1, gen2, and gen3 (oldest to newest). The following descriptions highlight the hardware profile for each generation. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;strike&amp;gt; Generation 1 (gen1) -- 64 2-CPU AMD 1.6 GHz compute nodes with Gigabit interconnect. This is the original hardware collection purchased with NSF EPSCoR funds in 2005, approx $150K. These nodes are sometimes called the &amp;quot;Verari&amp;quot; nodes. These nodes are tagged as &amp;quot;verari-compute-#-#&amp;quot; in the ROCKS naming convention.&amp;lt;/strike&amp;gt; (gen1 was decommissioned in June 2013) &lt;br /&gt;
* Generation 2 (gen2) -- 24 2x4 core (196 cores total) Intel 3.0 GHz Intel compute nodes with dual data rate Infiniband interconnect and the initial high-perf storage implementation using 60TB DDN. This is the hardware collection purchased exclusively with the annual VPIT funds allocation, approx $150K/yr for the 2008 and 2009 fiscal years.  These nodes are sometimes confusingly called &amp;quot;cheaha2&amp;quot; or &amp;quot;cheaha&amp;quot; nodes. These nodes are tagged as &amp;quot;cheaha-compute-#-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 3 (gen3) -- 48 2x6 core (576 cores total) 2.66 GHz Intel compute nodes with quad data rate Infiniband, ScaleMP, and the high-perf storage build-out for capacity and redundancy with 120TB DDN. This is the hardware collection purchased with a combination of the NIH SIG funds and some of the 2010 annual VPIT investment. These nodes were given the code name &amp;quot;sipsey&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;sipsey-compute-#-#&amp;quot; in the ROCKS naming convention. 16 of the gen3 nodes (sipsey-compute-0-1 thru sipsey-compute-0-16) were upgraded in 2014 from 48GB to 96GB of memory per node. &lt;br /&gt;
* Generation 4 (gen4) -- 3 16 core (48 cores total) compute nodes. This hardware collection purchase by [http://www.soph.uab.edu/ssg/people/tiwari Dr. Hemant Tiwari of SSG]. These nodes were given the code name &amp;quot;ssg&amp;quot; and tagged as such in the node naming for the queue system. These nodes are tagged as &amp;quot;ssg-compute-0-#&amp;quot; in the ROCKS naming convention. &lt;br /&gt;
* Generation 6 (gen6) -- &lt;br /&gt;
** 44 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 128GB DDR4 RAM, FDR InfiniBand and 10GigE network cards (4 nodes with NVIDIA K80 GPUs and 4 nodes with Intel Xeon Phi 7120P accelerators)&lt;br /&gt;
** 38 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 256GB DDR4 RAM, FDR InfiniBand and 10GigE network cards&lt;br /&gt;
** 14 Compute Nodes with two 12 core processors (Intel Xeon E5-2680 v3 2.5GHz) with 384GB DDR4 RAM, FDR InfiniBand and 10GigE network card&lt;br /&gt;
** FDR InfiniBand Switch&lt;br /&gt;
** 10Gigabit Ethernet Switch&lt;br /&gt;
** Management node and gigabit switch for cluster management&lt;br /&gt;
** Bright Advanced Cluster Management software licenses &lt;br /&gt;
&lt;br /&gt;
Summarized, Cheaha's compute pool includes:&lt;br /&gt;
* gen4 is 48 cores of [http://ark.intel.com/products/64583/Intel-Xeon-Processor-E5-2680-20M-Cache-2_70-GHz-8_00-GTs-Intel-QPI 2.70GHz eight-core Intel Xeon E5-2680 processors] with 24G of RAM per core or 384GB total&lt;br /&gt;
* gen3 is 192 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 8Gb RAM per core or 96GB total&lt;br /&gt;
* gen3 is 384 cores of [http://ark.intel.com/products/47922/Intel-Xeon-Processor-X5650-12M-Cache-2_66-GHz-6_40-GTs-Intel-QPI?q=x5650 2.67GHz six-core Intel Xeon X5650 processors] with 4Gb RAM per core or 48GB total&lt;br /&gt;
* gen2 is 192 cores of [http://ark.intel.com/products/33083/Intel-Xeon-Processor-E5450-12M-Cache-3_00-GHz-1333-MHz-FSB 3.0GHz quad-core Intel Xeon E5450 processors] with 2Gb RAM per core&lt;br /&gt;
* &amp;lt;strike&amp;gt; gen1 is 100 cores of 1.6GhZ AMD Opteron 242 processors with 1Gb RAM per core &amp;lt;/strike&amp;gt; (decomissioned June 2013)&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ Physical Nodes&lt;br /&gt;
|- bgcolor=grey&lt;br /&gt;
!gen!!queue!!#nodes!!cores/node!!RAM/node&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 44 || 24 || 128G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 38 || 24 || 256G&lt;br /&gt;
|-&lt;br /&gt;
|gen6|| default || 14 || 24 || 384G&lt;br /&gt;
|-&lt;br /&gt;
|gen5||Ceph/OpenStack|| 12 || 20 || 96G&lt;br /&gt;
|-&lt;br /&gt;
|gen4||ssg||3||16||385G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||16||12||96G&lt;br /&gt;
|-&lt;br /&gt;
|gen3||sipsey||32||12||48G&lt;br /&gt;
|-&lt;br /&gt;
|gen2||cheaha||24||8||16G&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
Details of the software available on Cheaha can be found on the [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Installed_software Cheaha cluster configuration page], an overview follows.&lt;br /&gt;
&lt;br /&gt;
Cheaha uses [http://modules.sourceforge.net/ Environment Modules] to support account configuration. Please follow these [http://me.eng.uab.edu/wiki/index.php?title=Cheaha#Environment_Modules specific steps for using environment modules].&lt;br /&gt;
&lt;br /&gt;
Cheaha's software stack is built with the [[Slurm]] cluster manager and job scheduling system. Cheaha's operating system is CentOS with the following major cluster components:&lt;br /&gt;
* BrightCM 7.2&lt;br /&gt;
* CentOS 7.2 x86_64&lt;br /&gt;
* [[Slurm]] 15.08&lt;br /&gt;
&lt;br /&gt;
A brief summary of the some of the available computational software and tools available includes:&lt;br /&gt;
* Amber&lt;br /&gt;
* FFTW&lt;br /&gt;
* Gromacs&lt;br /&gt;
* GSL&lt;br /&gt;
* NAMD&lt;br /&gt;
* VMD&lt;br /&gt;
* Intel Compilers&lt;br /&gt;
* GNU Compilers&lt;br /&gt;
* Java&lt;br /&gt;
* R&lt;br /&gt;
* OpenMPI&lt;br /&gt;
* MATLAB&lt;br /&gt;
&lt;br /&gt;
=== Network ===&lt;br /&gt;
&lt;br /&gt;
Cheaha is connected to the UAB Research Network which provides a dedicated 10Gbs networking backplane between clusters located in the 936 data center and the campus network core.  Data transfers rates of almost 8Gbps between these hosts have been demonstrated using Grid FTP, a multi-channel file transfer service that is used to move data between clusters as part of the job management operations.  This performance promises very efficient job management and the seamless integration of other clusters as connectivity to the research network is expanded.&lt;br /&gt;
&lt;br /&gt;
=== Benchmarks ===&lt;br /&gt;
&lt;br /&gt;
The continuous resource improvement process involves collecting benchmarks of the system.  One of the measures of greatest interest to users of the system are benchmarks of specific application codes.  The following benchmarks have been performed on the system and will be further expanded as additional benchmarks are performed.&lt;br /&gt;
&lt;br /&gt;
* [[Cheaha-BGL_Comparison|Cheaha-BGL Comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[Gromacs_Benchmark|Gromacs]]&lt;br /&gt;
&lt;br /&gt;
* [[NAMD_Benchmarks|NAMD]]&lt;br /&gt;
&lt;br /&gt;
=== Performance Statistics ===&lt;br /&gt;
&lt;br /&gt;
Cheaha uses Ganglia to report cluster performance data. This information provides a helpful overview of the current and historical operating stats for Cheaha.  You can access the Ganglia monitoring page [https://cheaha.uabgrid.uab.edu/ganglia/ here].&lt;br /&gt;
&lt;br /&gt;
== Availability ==&lt;br /&gt;
&lt;br /&gt;
Cheaha is a general-purpose computer resource made available to the UAB community by UAB IT.  As such, it is available for legitimate research and educational needs and is governed by [http://www.uabgrid.uab.edu/aup UAB's Acceptable Use Policy (AUP)] for computer resources.  &lt;br /&gt;
&lt;br /&gt;
Many software packages commonly used across UAB are available via Cheaha.&lt;br /&gt;
&lt;br /&gt;
To request access to Cheaha, please send a request to [mailto:support@vo.uabgrid.uab.edu send a request] to the cluster support group.&lt;br /&gt;
&lt;br /&gt;
Cheaha's intended use implies broad access to the community, however, no guarantees are made that specific computational resources will be available to all users.  Availability guarantees can only be made for reserved resources.&lt;br /&gt;
&lt;br /&gt;
=== Secure Shell Access ===&lt;br /&gt;
&lt;br /&gt;
Please configure you client secure shell software to use the official host name to access Cheaha:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cheaha.rc.uab.edu&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Scheduling Framework ==&lt;br /&gt;
&lt;br /&gt;
[http://slurm.schedmd.com/ Slurm] is a queue management system and stands for Simple Linux Utility for Resource Management. Slurm was developed at the Lawrence Livermore National Lab and currently runs some of the largest compute clusters in the world. '''[[Slurm]]''' is now the primary job manager on Cheaha, it replaces SUN Grid Engine (SGE) the job manager used earlier.&lt;br /&gt;
&lt;br /&gt;
Slurm is similar in many ways to GridEngine or most other queue systems. You write a batch script then submit it to the queue manager (scheduler). The queue manager then schedules your job to run on the queue (or '''partition''' in Slurm parlance) that you designate. Below we will provide an outline of how to submit jobs to Slurm, how Slurm decides when to schedule your job, and how to monitor progress.&lt;br /&gt;
&lt;br /&gt;
== Support ==&lt;br /&gt;
&lt;br /&gt;
Operational support for Cheaha is provided by the Research Computing group in UAB IT.  For questions regarding the operational status of Cheaha please send your request to [mailto:support@vo.uabgrid.uab.edu support@vo.uabgrid.uab.edu].  As a user of Cheaha you will automatically by subscribed to the hpc-announce email list.  This subscription is mandatory for all users of Cheaha.  It is our way of communicating important information regarding Cheaha to you.  The traffic on this list is restricted to official communication and has a very low volume.&lt;br /&gt;
&lt;br /&gt;
We have limited capacity, however, to support non-operational issue like &amp;quot;How do I write a job script&amp;quot; or &amp;quot;How do I compile a program&amp;quot;.  For such requests, you may find it more fruitful to send your questions to the hpc-users email list and request help from our peers in the HPC community at UAB.   As with all mailing lists, please observe [http://lifehacker.com/5473859/basic-etiquette-for-email-lists-and-forums common mailing etiquette].&lt;br /&gt;
&lt;br /&gt;
Finally, please remember that as you learned about HPC from others it becomes part of your responsibilty to help others on their quest.  You should update this documentation or respond to mailing list requests of others. &lt;br /&gt;
&lt;br /&gt;
You can subscribe to hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''subscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can unsubribe from hpc-users by sending an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=unsubscribe%20hpc-users  sympa@vo.uabgrid.uab.edu with the subject ''unsubscribe hpc-users''].&lt;br /&gt;
&lt;br /&gt;
You can review archives of the list in the [http://vo.uabgrid.uab.edu/sympa/arc/hpc-users web hpc-archives].&lt;br /&gt;
&lt;br /&gt;
If you need help using the list service please send an email to:&lt;br /&gt;
&lt;br /&gt;
[mailto:sympa@vo.uabgrid.uab.edu?subject=help sympa@vo.uabgrid.uab.edu with the subject ''help'']&lt;br /&gt;
&lt;br /&gt;
If you have questions about the operation of the list itself, please send an email to the owners of the list:&lt;br /&gt;
&lt;br /&gt;
[mailto:hpc-users-request@vo.uabgrid.uab.edu sympa@vo.uabgrid.uab.edu with a subject relavent to your issue with the list]&lt;br /&gt;
&lt;br /&gt;
If you are interested in contributing to the enhancement of HPC features at UAB or would like to talk to other cluster administrators, [mailto:sympa@vo.uabgrid.uab.edu?subject=subscribe%20hpc-dev please join the hpc developers community at UAB].&lt;/div&gt;</summary>
		<author><name>Puri@uab.edu</name></author>
	</entry>
</feed>