Niagara: Difference between revisions

From Alliance Doc
Jump to navigation Jump to search
No edit summary
m (niagara has five dragonfly wings, not four)
 
(45 intermediate revisions by 13 users not shown)
Line 5: Line 5:
{| class="wikitable"
{| class="wikitable"
|-
|-
| Expected availability: April 2018
| Availability: In production since April 2018
|-
|-
| Login node: '''niagara.computecanada.ca'''
| Login node: '''niagara.alliancecan.ca'''
|-
|-
| Globus endpoint: '''TBA'''
| Globus endpoint: '''computecanada#niagara'''
|-
|-
| System Status Page: '''https://wiki.scinet.utoronto.ca/wiki/index.php/System_Alerts'''
| Data mover nodes (rsync, scp, ...): '''nia-dm2, nia-dm2''', see [[Data_management_at_Niagara#Moving_data|Moving data]]
|-
| System Status Page: '''https://docs.scinet.utoronto.ca'''
|-
| Portal : https://my.scinet.utoronto.ca
|}
|}


Line 19: Line 23:


<!--T:4-->
<!--T:4-->
The user experience on Niagara will be similar to that on Graham
The [[Niagara Quickstart]] has specific instructions for Niagara, where the user experience on Niagara is similar to that on Graham
and Cedar, but slightly different. Specific instructions on how to use the Niagara cluster will be available in April 2018.
and Cedar, but slightly different.
 
<!--T:29-->
Preliminary documentation about the GPU expansion to Niagara called "[https://docs.scinet.utoronto.ca/index.php/Mist Mist]" can be found on [https://docs.scinet.utoronto.ca/index.php/Mist  the SciNet documentation site].


<!--T:5-->
<!--T:5-->
Niagara is an allocatable resource in the 2018 [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions/ Resource Allocation Competition] (RAC 2018), which comes into effect on April 4, 2018.  
Niagara is an allocatable resource in the 2018 [https://alliancecan.ca/en/services/advanced-research-computing/accessing-resources/resource-allocation-competition Resource Allocation Competition] (RAC 2018), which has come into effect on April 4, 2018.  


<!--T:6-->
<!--T:6-->
Line 31: Line 38:
[https://www.youtube.com/watch?v=RgSvGGzTeoc  Niagara installation time-lag video]
[https://www.youtube.com/watch?v=RgSvGGzTeoc  Niagara installation time-lag video]


=Niagara hardware specifications= <!--T:3-->
 
==Niagara hardware specifications== <!--T:3-->


<!--T:8-->
<!--T:8-->
* 1500 nodes, each with 40 Intel Skylake cores at 2.4GHz, for a total of 60,000 cores.
* 2024 nodes, each with 40 Intel "Skylake" cores at 2.4 GHz or 40 Intel "CascadeLake" cores at 2.5 GHz, for a total of 80,640 cores.
* 202 GB (188 GiB) of RAM per node.
* 202 GB (188 GiB) of RAM per node.
* EDR Infiniband network in a so-called 'Dragonfly+' topology.
* EDR Infiniband network in a 'Dragonfly+' topology.
* 6PB of scratch, 3PB of project space (parallel filesystem: IBM Spectrum Scale, formerly known as GPFS).
* 12.5PB of scratch, 3.5PB of project space (parallel filesystem: IBM Spectrum Scale, formerly known as GPFS).
* 256 TB burst buffer (Excelero + IBM Spectrum Scale).
* 256 TB burst buffer (Excelero + IBM Spectrum Scale).
* No local disks.
* No local disks.
* No GPUs.
* No GPUs.
* Rpeak of 4.61 PF.
* Theoretical peak performance ("Rpeak") of 6.25 PF.
* Rmax of 3.0 PF.
* Measured delivered performance ("Rmax") of 3.6 PF.
* 685 kW power consumption.
* 920 kW power consumption.


=Attached storage systems= <!--T:9-->
==Attached storage systems== <!--T:9-->
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
| '''Home space''' <br />600TB total volume<br />Parallel high-performance filesystem (IBM Spectrum Scale) ||
| '''Home''' <br>200TB<br>Parallel high-performance filesystem (IBM Spectrum Scale) ||
* Location of home directories.
* Backed up to tape
* Available as the <code>$HOME</code> environment variable.
* Persistent
* Each home directory has a small, fixed [[Storage and file management#Filesystem_Quotas_and_Policies|quota]] of 100GB.
* Not allocated, standard amount for each user. For larger storage requirements, use scratch or project.
* Has daily backup.
|-
|-
| '''Scratch space'''<br />6PB total volume<br />Parallel high-performance filesystem (IBM Spectrum Scale)||
| '''Scratch'''<br>12.5PB (~100GB/s Write, ~120GB/s Read)<br>Parallel high-performance filesystem (IBM Spectrum Scale)||
* For active or temporary (<code>/scratch</code>) storage (~ 80 GB/s).
* Inactive data is purged.
* Available as the <code>$SCRATCH</code> environment variable.
* Not allocated.
* Large fixed [[Storage and file management#Filesystem_Quotas_and_Policies|quota]] per user and per group path.
* Inactive data will be purged.
|-
|-
| '''Burst buffer'''<br />256TB total volume<br />Parallel extra high-performance filesystem (Excelero+IBM Spectrum Scale)||
| '''Burst buffer'''<br>232TB (~90GB/s Write , ~154 GB/s Read)<br>Parallel extra high-performance filesystem (Excelero+IBM Spectrum Scale)||
* For active fast storage during a job (160GB/s, and very high IOPS).
* Inactive data is purged.
* Not fully configured yet, but data will be purged very frequently (i.e. soon after a job has ended) and space on this storage tier will not be RAC allocatable.
|-
|-
|'''Project space'''<br />3PB total volume.<br />Parallel high-performance filesystem (IBM Spectrum Scale||
|'''Project'''<br >3.5PB (~100GB/s Write, ~120GB/s Read)<br>Parallel high-performance filesystem (IBM Spectrum Scale||
* Allocated via [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions/ RAC].
* Backed up to tape
* For active but low data turnover storage and relatively fixed datasets
* Allocated through [https://alliancecan.ca/en/services/advanced-research-computing/accessing-resources/resource-allocation-competition RAC]
* Available as the <code>$PROJECT</code> environment variable.
* Persistent
* [[Storage and file management#Filesystem_Quotas_and_Policies|quota]] set per project path.
* Backed up.
|-
|-
| '''Archive Space'''<br />10PB total volume<br />High Performance Storage System (IBM HPSS)||
| '''Archive'''<br />20PB<br />High Performance Storage System (IBM HPSS)||
* Allocated via [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions/ RAC].
* tape-backed HSM
* Nearline accessible space intended for large datasets requiring offload from active filesystems.
* Allocated through [https://alliancecan.ca/en/services/advanced-research-computing/accessing-resources/resource-allocation-competition RAC]
* Available as the <code>$ARCHIVE</code> environment variable.
* Persistent
* Large fixed [[Storage and file management#Filesystem_Quotas_and_Policies|quota]] per group.
* Tape based backend (dual copy).
|}
|}


=High-performance interconnect= <!--T:10-->
==High-performance interconnect== <!--T:10-->


<!--T:11-->
<!--T:11-->
The Niagara cluster has an EDR Infiniband network in a so-called
The Niagara cluster has an EDR Infiniband network in a 'Dragonfly+' topology, with five wings.
'Dragonfly+' topology, with four wings. Each wing of maximually 432 nodes (i.e., 17280) has
Each wing of maximually 432 nodes (i.e., 17280 cores) has
1-to-1 connections.  Network traffic between wings is done through
1-to-1 connections.  Network traffic between wings is done through
adaptive routing, which alleviates network congestion and yields an effective blocking of 2:1 between nodes of different wings.
adaptive routing, which alleviates network congestion and yields an effective blocking of 2:1 between nodes of different wings.


=Node characteristics= <!--T:12-->
==Node characteristics== <!--T:12-->


<!--T:13-->
<!--T:13-->
* CPU: 2 sockets with 20 Intel Skylake cores (2.4GHz, AVX512), for a total of 40 cores per node
* CPU: 2 sockets with 20 Intel Skylake cores (2.4GHz, AVX512), for a total of 40 cores per node
* Computational performance: 3 TFlops theoretical peak.
* Computational performance: 3.07 TFlops theoretical peak.  
* Network connection: 100Gb/s EDR Dragonfly+
* Network connection: 100Gb/s EDR Dragonfly+
* Memory: 202 GB (188 GiB) of RAM, i.e., a bit over 4GiB per core.
* Memory: 202 GB (188 GiB) of RAM, i.e., a bit over 4GiB per core.
Line 99: Line 95:
* Operating system: Linux CentOS 7
* Operating system: Linux CentOS 7


=Scheduling= <!--T:14-->
==Scheduling== <!--T:14-->


<!--T:15-->
<!--T:15-->
The Niagara cluster will use the [[Running jobs|Slurm]] scheduler to run jobs.  The basic scheduling commands will therefore be similar to those for Cedar and Graham, with a few differences:
The Niagara cluster uses the [[Running jobs|Slurm]] scheduler to run jobs.  The basic scheduling commands are therefore similar to those for Cedar and Graham, with a few differences:


<!--T:16-->
<!--T:16-->
* Scheduling will be by node only. This means jobs will always need to use multiples of 40 cores per job.
* Scheduling is by node only. This means jobs always need to use multiples of 40 cores per job.
* Asking for specific amounts of memory will not be necessary and is discouraged; all nodes have the same amount of memory (202GB/188GiB minus some operating system overhead).
* Asking for specific amounts of memory is not be necessary and is discouraged; all nodes have the same amount of memory (202GB/188GiB minus some operating system overhead).


<!--T:17-->
<!--T:17-->
Details, such as how to request burst buffer usage in jobs, are still being worked out.
Details, such as how to request burst buffer usage in jobs, are still being worked out.


=Software= <!--T:18-->
==Software== <!--T:18-->


<!--T:19-->
<!--T:19-->
* Module-based software stack.
* Module-based software stack.
* Both the standard Compute Canada software stack as well as cluster-specific software tuned for Niagara will be available.
* Both the standard Alliance software stack as well as cluster-specific software tuned for Niagara are available.
* In contrast with Cedar and Graham, no modules will be loaded by default to prevent accidental conflicts in versions. There will be a simple mechanism to load the software stack that a user would see on Graham and Cedar.
* In contrast with Cedar and Graham, no modules are loaded by default to prevent accidental conflicts in versions. To load the software stack that a user would see on Graham and Cedar, one can load the "CCEnv" module (see [[Niagara Quickstart]]).
 
= Migration to Niagara =
 
== Migration for Existing Users of the GPC ==
 
* Accounts, $HOME &amp; $PROJECT of active GPC users transferred to Niagara (except dot-files in ~).
* Data stored in $SCRATCH will not be transfered automatically.
* Users are to clean up $SCRATCH on the GPC as much as possible (remember it's temporary data!). Then they can transfer what they need using datamover nodes. Let us know if you need help.
* To enable this transfer, there will be a short period during which you can have access to Niagara as well as to the GPC storage resources. This period will end no later than May 9, 2018.
 
== For Non-GPC Users ==
 
<ul>
<li><p>Those of you new to SciNet, but with 2018 RAC allocations on Niagara, will have your accounts created and ready for you to login.</p></li>
<li><p>New, non-RAC users: we are still working out the procedure to get access. If you can't wait, for now, you can follow the old route of requesting a SciNet Consortium Account on the [https://ccsb.computecanada.ca CCDB site].</p></li></ul>
 
=Using Niagara (Quickstart)=
 
== Logging in ==
 
As with all SciNet and CC (Compute Canada) compute systems, access to Niagara is via ssh (secure shell) only.
 
To access SciNet systems, first open a terminal window (e.g. MobaXTerm on Windows).
 
Then ssh into the Niagara login nodes with your CC credentials:
 
<source lang="bash">
$ ssh -Y MYCCUSERNAME@niagara.scinet.utoronto.ca</source>
 
or
 
<source lang="bash">$ ssh -Y MYCCUSERNAME@niagara.computecanada.ca</source>
 
* The Niagara login nodes are where you develop, edit, compile, prepare and submit jobs.
* These login nodes are not part of the Niagara compute cluster, but have the same architecture, operating system, and software stack.
* The optional <code>-Y</code> is needed to open windows from the Niagara command-line onto your local X server.
* To run on Niagara's compute nodes, you must submit a batch job.
 
== Storage Systems and Locations ==
 
=== Home and scratch ===
 
You have a home and scratch directory on the system, whose locations will be given by
 
<code>$HOME=/home/g/groupname/myccusername</code>
 
<code>$SCRATCH=/scratch/g/groupname/myccusername</code>
 
<source lang="bash">nia-login07:~$ pwd
/home/s/scinet/rzon
 
nia-login07:~$ cd $SCRATCH
 
nia-login07:rzon$ pwd
/scratch/s/scinet/rzon</source>
 
=== Project location ===
 
Users from groups with a RAC allocation will also have a project directory.
 
<code>$PROJECT=/project/g/groupname/myccusername</code>
 
'''''IMPORTANT: Future-proof your scripts'''''
 
Use the environment variables (HOME, SCRATCH, PROJECT) instead of the actual paths!  The paths may change in the future.
 
=== Storage Limits on Niagara ===
 
{| class="wikitable"
! location
! quota
!align="right"| block size
! expiration time
! backed up
! on login
! on compute
|-
| $HOME
| 100 GB
|align="right"| 1 MB
|
| yes
| yes
| read-only
|-
| $SCRATCH
| 25 TB
|align="right"| 16 MB
| 2 months
| no
| yes
| yes
|-
| $PROJECT
| by group allocation
|align="right"| 16 MB
|
| yes
| yes
| yes
|-
| $ARCHIVE
| by group allocation
|align="right"|
|
| dual-copy
| no
| no
|-
| $BBUFFER
| ?
|align="right"| 1 MB
| very short
| no
| ?
| ?
|}
 
<ul>
<li>Compute nodes do not have local storage.</li>
<li>Archive space is on [https://wiki.scinet.utoronto.ca/wiki/index.php/HPSS HPSS].</li>
<li>Backup means a recent snapshot, not an achive of all data that ever was.</li>
<li><p><code>$BBUFFER</code> stands for the Burst Buffer, a functionality that is still being set up.  This will be a faster parallel storage tier for temporary data.</p></li></ul>
 
=== Moving data ===
 
'''''Move amounts less than 10GB through the login nodes.'''''
 
* Only Niagara login nodes visible from outside SciNet.
* Use scp or rsync to niagara.scinet.utoronto.ca or niagara.computecanada.ca (no difference).
* This will time out for amounts larger than about 10GB.
 
'''''Move amounts larger than 10GB through the datamover node.'''''
 
* From a Niagara login node, ssh to <code>nia-datamover1</code>.
* Transfers must originate from this datamover.
* The other side (e.g. your machine) must be reachable from the outside.
* If you do this often, consider using Globus, a web-based tool for data transfer.
 
'''''Moving data to HPSS/Archive/Nearline using the scheduler.'''''
 
* [https://wiki.scinet.utoronto.ca/wiki/index.php/HPSS HPSS] is a tape-based storage solution, and is SciNet's nearline a.k.a. archive facility.
* Storage space on HPSS is allocated through the annual [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions Compute Canada RAC allocation].
 
== Software and Libraries ==
 
=== Modules ===
 
Once you are on one of the login nodes, what software is already installed?
 
* Other than essentials, all installed software is made available using module commands.
* These set environment variables (<code>PATH</code>, etc.)
* Allows multiple, conflicting versions of a given package to be available.
* module spider shows the available software.
 
<source lang="bash">nia-login07:~$ module spider
---------------------------------------------------
The following is a list of the modules currently av
---------------------------------------------------
  CCEnv: CCEnv
 
  NiaEnv: NiaEnv/2018a
 
  anaconda2: anaconda2/5.1.0
 
  anaconda3: anaconda3/5.1.0
 
  autotools: autotools/2017
    autoconf, automake, and libtool
 
  boost: boost/1.66.0
 
  cfitsio: cfitsio/3.430
 
  cmake: cmake/3.10.2 cmake/3.10.3
 
  ...</source>
 
<ul>
<li><p><code>module load &lt;module-name&gt;</code></p>
<p>use particular software</p></li>
<li><p><code>module purge</code></p>
<p>remove currently loaded modules</p></li>
<li><p><code>module spider</code></p>
<p>(or <code>module spider &lt;module-name&gt;</code>)</p>
<p>list available software packages</p></li>
<li><p><code>module avail</code></p>
<p>list loadable software packages</p></li>
<li><p><code>module list</code></p>
<p>list loaded modules</p></li></ul>
 
On Niagara, there are really two software stacks:
 
<ol style="list-style-type: decimal;">
<li><p>A Niagara software stack tuned and compiled for this machine. This stack is available by default, but if not, can be reloaded with</p>
<source lang="bash">module load NiaEnv</source></li>
<li><p>The same software stack available on Compute Canada's General Purpose clusters [https://docs.computecanada.ca/wiki/Graham Graham] and [https://docs.computecanada.ca/wiki/Cedar Cedar], compiled (for now) for a previous generation of CPUs:</p>
<source lang="bash">module load CCEnv</source>
<p>If you want the same default modules loaded as on Cedar and Graham, then afterwards also <code>module load StdEnv</code>.</p></li></ol>
 
Note: the <code>*Env</code> modules are '''''sticky'''''; remove them by <code>--force</code>.
 
=== Tips for loading software ===
 
<ul>
<li><p>We advise '''''against''''' loading modules in your .bashrc.</p>
<p>This could lead to very confusing behaviour under certain circumstances.</p></li>
<li><p>Instead, load modules by hand when needed, or by sourcing a separate script.</p></li>
<li><p>Load run-specific modules inside your job submission script.</p></li>
<li><p>Short names give default versions; e.g. <code>intel</code> → <code>intel/2018.2</code>.</p>
<p>It is usually better to be explicit about the versions, for future reproducibility.</p></li>
<li><p>Handy abbreviations:</p></li></ul>
 
<pre class="sh">        ml → module list
        ml NAME → module load NAME  # if NAME is an existing module
        ml X → module X</pre>
 
* Modules sometimes require other modules to be loaded first.<br />
Solve these dependencies by using <code>module spider</code>.
 
=== Module spider ===
 
Oddly named, the module subcommand spider is the search-and-advice facility for modules.
 
<source lang="bash">nia-login07:~$ module load openmpi
Lmod has detected the error:  These module(s) exist but cannot be loaded as requested: "openmpi"
  Try: "module spider openmpi" to see how to load the module(s).</source>
<source lang="bash">nia-login07:~$ module spider openmpi
------------------------------------------------------------------------------------------------------
  openmpi:
------------------------------------------------------------------------------------------------------
    Versions:
        openmpi/2.1.3
        openmpi/3.0.1
        openmpi/3.1.0rc3
 
------------------------------------------------------------------------------------------------------
  For detailed information about a specific "openmpi" module (including how to load the modules) use
  the module s full name.
  For example:
 
    $ module spider openmpi/3.1.0rc3
------------------------------------------------------------------------------------------------------</source>
<source lang="bash">nia-login07:~$ module spider openmpi/3.1.0rc3
------------------------------------------------------------------------------------------------------
  openmpi: openmpi/3.1.0rc3
------------------------------------------------------------------------------------------------------
    You will need to load all module(s) on any one of the lines below before the "openmpi/3.1.0rc3"
    module is available to load.
 
      NiaEnv/2018a  gcc/7.3.0
      NiaEnv/2018a  intel/2018.2
</source>
<source lang="bash">nia-login07:~$ module load NiaEnv/2018a  intel/2018.2  # note: NiaEnv is usually already loaded
nia-login07:~$ module load openmpi/3.1.0rc3</source>
<source lang="bash">nia-login07:~$ module list
Currently Loaded Modules:
  1) NiaEnv/2018a (S)  2) intel/2018.2  3) openmpi/3.1.0.rc3
 
  Where:
  S:  Module is Sticky, requires --force to unload or purge</source>
 
== Can I Run Commercial Software? ==
 
* Possibly, but you have to bring your own license for it.
* SciNet and Compute Canada have an extremely large and broad user base of thousands of users, so we cannot provide licenses for everyone's favorite software.
* Thus, the only commercial software installed on Niagara is software that can benefit everyone: Compilers, math libraries and debuggers.
* That means no Matlab, Gaussian, IDL,
* Open source alternatives like Octave, Python, R are available.
* We are happy to help you to install commercial software for which you have a license.
* In some cases, if you have a license, you can use software in the Compute Canada stack.
 
== Compiling on Niagara: Example ==
 
<source lang="bash">nia-login07:~$ module list
Currently Loaded Modules:
  1) NiaEnv/2018a (S)
  Where:
  S:  Module is Sticky, requires --force to unload or purge
 
nia-login07:~$ module load intel/2018.2 gsl/2.4
 
nia-login07:~$ ls
main.c module.c
 
nia-login07:~$ icc -c -O3 -xHost -o main.o main.c
nia-login07:~$ icc -c -O3 -xHost -o module.o module.c
nia-login07:~$ icc  -o main module.o main.o -lgsl -mkl
 
nia-login07:~$ ./main</source>
== Testing ==
 
You really should test your code before you submit it to the cluster to know if your code is correct and what kind of resources you need.
 
<ul>
<li><p>Small test jobs can be run on the login nodes.</p>
<p>Rule of thumb: couple of minutes, taking at most about 1-2GB of memory, couple of cores.</p></li>
<li><p>You can run the the ddt debugger on the login nodes after <code>module load ddt</code>.</p></li>
<li><p>Short tests that do not fit on a login node, or for which you need a dedicated node, request an<br />
interactive debug job with the salloc command</p>
<source lang="bash">nia-login07:~$ salloc -pdebug --nodes N --time=1:00:00</source>
<p>where N  is the number of nodes. The duration of your interactive debug session can be at most one hour, can use at most 4 nodes, and each user can only have one such session at a time.</p></li></ul>
 
== Submitting jobs ==
 
<ul>
<li><p>Niagara uses SLURM as its job scheduler.</p></li>
<li><p>You submit jobs from a login node by passing a script to the sbatch command:</p>
<source lang="bash">nia-login07:~$ sbatch jobscript.sh</source></li>
<li><p>This puts the job in the queue. It will run on the compute nodes in due course.</p></li>
<li><p>Jobs will run under their group's RRG allocation, or, if the group has none, under a RAS allocation (previously called `default' allocation).</p></li></ul>
 
Keep in mind:
 
<ul>
<li><p>Scheduling is by node, so in multiples of 40-cores.</p></li>
<li><p>Maximum walltime is 24 hours.</p></li>
<li><p>Jobs must write to your scratch or project directory (home is read-only on compute nodes).</p></li>
<li><p>Compute nodes have no internet access.</p>
<p>Download data you need beforehand on a login node.</p></li></ul>
 
=== Example submission script (OpenMP) ===
 
<source lang="bash">#!/bin/bash
#SBATCH --nodes=1
#SBATCH --cpus-per-task=40
#SBATCH --time=1:00:00
#SBATCH --job-name openmp_job
#SBATCH --output=openmp_output_%j.txt
 
cd $SLURM_SUBMIT_DIR
 
module load intel/2018.2
 
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK
 
./openmp_example
# or "srun ./openmp_example".
</source>
<source lang="bash">nia-login07:~$ sbatch openmp_job.sh</source>
* First line indicates that this is a bash script.
* Lines starting with <code>#SBATCH</code> go to SLURM.
* sbatch reads these lines as a job request (which it gives the name <code>openmp_job</code>) .
* In this case, SLURM looks for one node with 40 cores to be run inside one task, for 1 hour.
* Once it found such a node, it runs the script:
** Change to the submission directory;
** Loads modules;
** Sets an environment variable;
** Runs the <code>openmp_example</code> application.
 
=== Example submission script (MPI) ===
 
<source lang="bash">#!/bin/bash
#SBATCH --nodes=8
#SBATCH --ntasks=320
#SBATCH --time=1:00:00
#SBATCH --job-name mpi_job
#SBATCH --output=mpi_output_%j.txt
 
cd $SLURM_SUBMIT_DIR
 
module load intel/2018.2
module load openmpi/3.1.0rc3
 
mpirun ./mpi_example
# or "srun ./mpi_example"
</source>
<source lang="bash">nia-login07:~$ sbatch mpi_job.sh</source>
<ul>
<li><p>First line indicates that this is a bash script.</p></li>
<li><p>Lines starting with <code>#SBATCH</code> go to SLURM.</p></li>
<li><p>sbatch reads these lines as a job request (which it gives the name <code>mpi_job</code>)</p></li>
<li><p>In this case, SLURM looks for 8 nodes with 40 cores on which to run 320 tasks, for 1 hour.</p></li>
<li><p>Once it found such a node, it runs the script:</p>
<ul>
<li>Change to the submission directory;</li>
<li>Loads modules;</li>
<li>Runs the <code>mpi_example</code> application.</li></ul>
 
<p></p></li></ul>
 
== Monitoring queued jobs ==
 
Once the job is incorporated into the queue, there are some command you can use to monitor its progress.
 
<ul>
<li><p><code>squeue</code> to show the job queue (<code>squeue -u $USER</code> for just your jobs);</p></li>
<li><p><code>squeue -j JOBID</code> to get information on a specific job</p>
<p>(alternatively, <code>scontrol show job JOBID</code>, which is more verbose).</p></li>
<li><p><code>squeue -j JOBID -o &quot;%.9i %.9P %.8j %.8u %.2t %.10M %.6D %S&quot;</code> to get an estimate for when a job will run.</p></li>
<li><p><code>scancel -i JOBID</code> to cancel the job.</p></li>
<li><p><code>sinfo -pcompute</code> to look at available nodes.</p></li>
<li><p>More utilities like those that were available on the GPC are under development.</p></li></ul>


== Data Management and I/O Tips ==
==Access to Niagara== <!--T:20-->
Access to Niagara is not enabled automatically for everyone with an Alliance account, but anyone with an active Alliance account can get their access enabled.
If you have an active Alliance account but you do not have access to Niagara yet (e.g. because you are a new user and belong to a group whose primary PI does not have an allocation as granted in the annual [https://alliancecan.ca/en/services/advanced-research-computing/accessing-resources/resource-allocation-competition Resource Allocation Competition]), go to the [https://ccdb.computecanada.ca/services/opt_in opt-in page on the CCDB site].  After clicking the "Join" button on that page, it usually takes only one or two business days for access to be granted. 


* $HOME, $SCRATCH, and $PROJECT all use the parallel file system called GPFS.
<!--T:27-->
* Your files can be seen on all Niagara login and compute nodes.
If at any time you require assistance, please do not hesitate to [mailto:niagara@tech.alliancecan.ca contact us].
* GPFS is a high-performance file system which provides rapid reads and writes to large data sets in parallel from many nodes.
* But accessing data sets which consist of many, small files leads to poor performance.
* Avoid reading and writing lots of small amounts of data to disk.<br />


* Many small files on the system would waste space and would be slower to access, read and write.
===Getting started=== <!--T:25-->
* Write data out in binary. Faster and takes less space.
* Burst buffer (to come) is better for i/o heavy jobs and to speed up checkpoints.


<!--T:26-->
Please read the [[Niagara Quickstart]] carefully.


<!--T:28-->
[[Category:Pages with video links]]
</translate>
</translate>

Latest revision as of 17:45, 21 October 2024

Other languages:
Availability: In production since April 2018
Login node: niagara.alliancecan.ca
Globus endpoint: computecanada#niagara
Data mover nodes (rsync, scp, ...): nia-dm2, nia-dm2, see Moving data
System Status Page: https://docs.scinet.utoronto.ca
Portal : https://my.scinet.utoronto.ca

Niagara is a homogeneous cluster, owned by the University of Toronto and operated by SciNet, intended to enable large parallel jobs of 1040 cores and more. It was designed to optimize throughput of a range of scientific codes running at scale, energy efficiency, and network and storage performance and capacity.

The Niagara Quickstart has specific instructions for Niagara, where the user experience on Niagara is similar to that on Graham and Cedar, but slightly different.

Preliminary documentation about the GPU expansion to Niagara called "Mist" can be found on the SciNet documentation site.

Niagara is an allocatable resource in the 2018 Resource Allocation Competition (RAC 2018), which has come into effect on April 4, 2018.

Niagara installation update at the SciNet User Group Meeting on February 14th, 2018

Niagara installation time-lag video


Niagara hardware specifications[edit]

  • 2024 nodes, each with 40 Intel "Skylake" cores at 2.4 GHz or 40 Intel "CascadeLake" cores at 2.5 GHz, for a total of 80,640 cores.
  • 202 GB (188 GiB) of RAM per node.
  • EDR Infiniband network in a 'Dragonfly+' topology.
  • 12.5PB of scratch, 3.5PB of project space (parallel filesystem: IBM Spectrum Scale, formerly known as GPFS).
  • 256 TB burst buffer (Excelero + IBM Spectrum Scale).
  • No local disks.
  • No GPUs.
  • Theoretical peak performance ("Rpeak") of 6.25 PF.
  • Measured delivered performance ("Rmax") of 3.6 PF.
  • 920 kW power consumption.

Attached storage systems[edit]

Home
200TB
Parallel high-performance filesystem (IBM Spectrum Scale)
  • Backed up to tape
  • Persistent
Scratch
12.5PB (~100GB/s Write, ~120GB/s Read)
Parallel high-performance filesystem (IBM Spectrum Scale)
  • Inactive data is purged.
Burst buffer
232TB (~90GB/s Write , ~154 GB/s Read)
Parallel extra high-performance filesystem (Excelero+IBM Spectrum Scale)
  • Inactive data is purged.
Project
3.5PB (~100GB/s Write, ~120GB/s Read)
Parallel high-performance filesystem (IBM Spectrum Scale
  • Backed up to tape
  • Allocated through RAC
  • Persistent
Archive
20PB
High Performance Storage System (IBM HPSS)
  • tape-backed HSM
  • Allocated through RAC
  • Persistent

High-performance interconnect[edit]

The Niagara cluster has an EDR Infiniband network in a 'Dragonfly+' topology, with five wings. Each wing of maximually 432 nodes (i.e., 17280 cores) has 1-to-1 connections. Network traffic between wings is done through adaptive routing, which alleviates network congestion and yields an effective blocking of 2:1 between nodes of different wings.

Node characteristics[edit]

  • CPU: 2 sockets with 20 Intel Skylake cores (2.4GHz, AVX512), for a total of 40 cores per node
  • Computational performance: 3.07 TFlops theoretical peak.
  • Network connection: 100Gb/s EDR Dragonfly+
  • Memory: 202 GB (188 GiB) of RAM, i.e., a bit over 4GiB per core.
  • Local disk: none. GPUs/Accelerators: none.
  • Operating system: Linux CentOS 7

Scheduling[edit]

The Niagara cluster uses the Slurm scheduler to run jobs. The basic scheduling commands are therefore similar to those for Cedar and Graham, with a few differences:

  • Scheduling is by node only. This means jobs always need to use multiples of 40 cores per job.
  • Asking for specific amounts of memory is not be necessary and is discouraged; all nodes have the same amount of memory (202GB/188GiB minus some operating system overhead).

Details, such as how to request burst buffer usage in jobs, are still being worked out.

Software[edit]

  • Module-based software stack.
  • Both the standard Alliance software stack as well as cluster-specific software tuned for Niagara are available.
  • In contrast with Cedar and Graham, no modules are loaded by default to prevent accidental conflicts in versions. To load the software stack that a user would see on Graham and Cedar, one can load the "CCEnv" module (see Niagara Quickstart).

Access to Niagara[edit]

Access to Niagara is not enabled automatically for everyone with an Alliance account, but anyone with an active Alliance account can get their access enabled.

If you have an active Alliance account but you do not have access to Niagara yet (e.g. because you are a new user and belong to a group whose primary PI does not have an allocation as granted in the annual Resource Allocation Competition), go to the opt-in page on the CCDB site. After clicking the "Join" button on that page, it usually takes only one or two business days for access to be granted.

If at any time you require assistance, please do not hesitate to contact us.

Getting started[edit]

Please read the Niagara Quickstart carefully.