<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.scinet.utoronto.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gauriaur</id>
	<title>SciNet Users Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.scinet.utoronto.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gauriaur"/>
	<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php/Special:Contributions/Gauriaur"/>
	<updated>2026-07-06T13:52:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.12</generator>
	<entry>
		<id>https://docs.scinet.utoronto.ca/index.php?title=Mist&amp;diff=3521</id>
		<title>Mist</title>
		<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php?title=Mist&amp;diff=3521"/>
		<updated>2022-02-01T19:39:04Z</updated>

		<summary type="html">&lt;p&gt;Gauriaur: /* Getting started on Mist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:Mist.jpg|center|300px|thumb]]&lt;br /&gt;
|name=Mist&lt;br /&gt;
|installed=Dec 2019&lt;br /&gt;
|operatingsystem= Red Hat Enterprise Linux 8.2&lt;br /&gt;
|loginnode= mist.scinet.utoronto.ca&lt;br /&gt;
|nnodes=  54 IBM AC922&lt;br /&gt;
|rampernode= 256 GB  &lt;br /&gt;
|gpuspernode=4 V100-SMX2-32GB&lt;br /&gt;
|interconnect=Mellanox EDR&lt;br /&gt;
|vendorcompilers= NVCC, IBM XL&lt;br /&gt;
|queuetype=Slurm&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Specifications=&lt;br /&gt;
Mist is a SciNet-[[#SOSCIP Users |SOSCIP]] joint GPU cluster consisting of 54 IBM AC922 servers. Each node of the cluster has 32 IBM Power9 cores, 256GB RAM and 4 NVIDIA V100-SMX2-32GB GPU with NVLINKs in between. The cluster has InfiniBand EDR interconnection providing GPU-Direct RMDA capability.&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;span style=&amp;quot;background:#fc8383&amp;quot;&amp;gt;Important note:&amp;lt;/span&amp;gt;''' the majority of computer systems as of 2021 (laptops, desktops, and HPC) use the 64 bit x86 instruction set architecture (ISA) in their microprocessors produced by Intel and AMD. This ISA is incompatible with Mist, whose hardware uses the 64 bit PPC ISA (set to little endian mode). The practical meaning is that x86-compiled binaries (executables and libraries) cannot be installed on Mist. For this reason, the Niagara and Compute Canada software stacks (modules) cannot be made available on Mist, and using closed-source software is only possible when the vendor provides a compatible version of their application. '''Python applications''' almost always rely on bindings to libraries originally written in C or C++, some of them are not available on PyPI or various Conda channels as precompiled binaries compatible with Mist. The recommended way to use Python on Mist is to create a [[#Anaconda (Python)|Conda]] environment and install packages from the anaconda (default) channel, where most popular packages have a linux-ppc64le (Mist-compatible) version available. Some popular machine learning packages should be installed from the internal [[#Open-CE|Open-CE]] channel. Where a compatible Conda package cannot be found, installing from PyPI (&amp;lt;code&amp;gt;pip install&amp;lt;/code&amp;gt;) can be attempted. Pip will attempt to compile the package’s source code if no compatible precompiled wheel is available, therefore a compiler module (such as &amp;lt;code&amp;gt;gcc/.core&amp;lt;/code&amp;gt;) should be loaded in advance. Some packages require tweaking of the source code or build procedure to successfully compile on Mist, please contact [[#Support|support]] if you need assistance.&lt;br /&gt;
&lt;br /&gt;
= Getting started on Mist =&lt;br /&gt;
As of January 22 2022, authentication is only allowed via SSH keys. [https://docs.computecanada.ca/wiki/SSH_Keys Please refer to this page] to generate your SSH key pair and make sure you use them securely.&lt;br /&gt;
&lt;br /&gt;
Mist can be accessed directly:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -i /path/to/ssh_private_key -Y MYCCUSERNAME@mist.scinet.utoronto.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mist login node '''mist-login01''' can also be accessed via Niagara cluster.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -i /path/to/ssh_private_key -Y MYCCUSERNAME@niagara.scinet.utoronto.ca&lt;br /&gt;
ssh -Y mist-login01&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Storage ==&lt;br /&gt;
The filesystem for Mist is shared with Niagara cluster. See [https://docs.scinet.utoronto.ca/index.php/Niagara_Quickstart#Your_various_directories Niagara Storage] for more details.&lt;br /&gt;
&lt;br /&gt;
= Loading software modules =&lt;br /&gt;
&lt;br /&gt;
You have two options for running code on Mist: use existing software, or compile your own.  This section focuses on the former.&lt;br /&gt;
&lt;br /&gt;
Other than essentials, all installed software is made available [[Using_modules | using module commands]]. These modules set environment variables (PATH, etc.), allowing multiple, conflicting versions of a given package to be available.  A detailed explanation of the module system can be [[Using_modules | found on the modules page]] and a list of [[Modules for Mist]] is also available.&lt;br /&gt;
&lt;br /&gt;
Common module subcommands are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;: load the default version of a particular software.&lt;br /&gt;
* &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;/&amp;lt;module-version&amp;gt;&amp;lt;/code&amp;gt;: load a specific version of a particular software.&lt;br /&gt;
* &amp;lt;code&amp;gt;module purge&amp;lt;/code&amp;gt;: unload all currently loaded modules.&lt;br /&gt;
* &amp;lt;code&amp;gt;module spider&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;module spider &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;): list available software packages.&lt;br /&gt;
* &amp;lt;code&amp;gt;module avail&amp;lt;/code&amp;gt;: list loadable software packages.&lt;br /&gt;
* &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt;: list loaded modules.&lt;br /&gt;
&lt;br /&gt;
Along with modifying common environment variables, such as PATH, and LD_LIBRARY_PATH, these modules also create a SCINET_MODULENAME_ROOT environment variable, which can be used to access commonly needed software directories, such as /include and /lib.&lt;br /&gt;
&lt;br /&gt;
There are handy abbreviations for the module commands. &amp;lt;code&amp;gt;ml&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ml &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
== Tips for loading software ==&lt;br /&gt;
&lt;br /&gt;
* We advise '''''against''''' loading modules in your .bashrc.  This can lead to very confusing behaviour under certain circumstances.  Our guidelines for .bashrc files can be found [[bashrc guidelines|here]].&lt;br /&gt;
* Instead, load modules by hand when needed, or by sourcing a separate script.&lt;br /&gt;
* Load run-specific modules inside your job submission script.&lt;br /&gt;
* Short names give default versions; e.g. &amp;lt;code&amp;gt;cuda&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;cuda/11.0.3&amp;lt;/code&amp;gt;. It is usually better to be explicit about the versions, for future reproducibility.&lt;br /&gt;
* Modules often require other modules to be loaded first.  Solve these dependencies by using [[Using_modules#Module_spider | &amp;lt;code&amp;gt;module spider&amp;lt;/code&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
= Available compilers and interpreters =&lt;br /&gt;
* &amp;lt;tt&amp;gt;cuda&amp;lt;/tt&amp;gt; module has to be loaded first for GPU software.&lt;br /&gt;
* For most compiled software, one should use the GNU compilers (&amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt; for C, &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt; for C++, and &amp;lt;tt&amp;gt;gfortran&amp;lt;/tt&amp;gt; for Fortran). Loading &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt; module makes these available. &lt;br /&gt;
* The IBM XL compiler suite (&amp;lt;tt&amp;gt;xlc_r, xlc++_r, xlf_r&amp;lt;/tt&amp;gt;) is also available, if you load one of the &amp;lt;tt&amp;gt;xl&amp;lt;/tt&amp;gt; modules.&lt;br /&gt;
* To compile mpi code, you must additionally load an &amp;lt;tt&amp;gt;openmpi&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;spectrum-mpi&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
=== CUDA ===&lt;br /&gt;
&lt;br /&gt;
The current installed CUDA Tookits are '''11.0.3''' and '''10.2.2 (10.2.89)'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load cuda/11.0.3&lt;br /&gt;
module load cuda/10.2.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*A compiler (GCC, XL or NVHPC/PGI) module must be loaded in order to use CUDA to build any code.&lt;br /&gt;
The current NVIDIA driver version is 450.119.04.&lt;br /&gt;
&lt;br /&gt;
===GNU Compilers ===&lt;br /&gt;
&lt;br /&gt;
Available GCC modules are:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gcc/9.3.0 (must load CUDA 11)&lt;br /&gt;
gcc/8.5.0 (must load CUDA 10 or 11)&lt;br /&gt;
gcc/10.3.0 (w/o CUDA)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== IBM XL Compilers ===&lt;br /&gt;
&lt;br /&gt;
To load the native IBM xlc/xlc++ and xlf (Fortran) compilers, run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load xl/16.1.1.10&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IBM XL Compilers are enabled for use with NVIDIA GPUs, including support for OpenMP GPU offloading and integration with NVIDIA's nvcc command to compile host-side code for the POWER9 CPU. Information about the IBM XL Compilers can be found at the following links:[https://www.ibm.com/support/knowledgecenter/SSXVZZ_16.1.1/com.ibm.compilers.linux.doc/welcome.html IBM XL C/C++], &lt;br /&gt;
[https://www.ibm.com/support/knowledgecenter/SSAT4T_16.1.1/com.ibm.compilers.linux.doc/welcome.html IBM XL Fortran]&lt;br /&gt;
&lt;br /&gt;
=== OpenMPI ===&lt;br /&gt;
&amp;lt;tt&amp;gt;openmpi/&amp;lt;version&amp;gt;&amp;lt;/tt&amp;gt; module is avaiable with different compilers including GCC and XL. &amp;lt;tt&amp;gt;spectrum-mpi/&amp;lt;version&amp;gt;&amp;lt;/tt&amp;gt; module provides IBM Spectrum MPI.&lt;br /&gt;
&lt;br /&gt;
=== NVHPC/PGI ===&lt;br /&gt;
PGI compiler is provided in NVHPC (NVIDIA HPC SDK).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load nvhpc/21.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Software =&lt;br /&gt;
== Amber20 ==&lt;br /&gt;
&lt;br /&gt;
Users who hold Amber20 license can build Amber20 from its source code and run on Mist. '''SOSCIP/SciNet doesn't provide Amber license or source code.'''&lt;br /&gt;
&lt;br /&gt;
=== Building Amber20 ===&lt;br /&gt;
Modules that are needed for building Amber20:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load MistEnv/2021a cuda/10.2.2 gcc/8.5.0 anaconda3/2021.05 cmake/3.19.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Cmake configuration:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/where-amber-install -DCOMPILER=GNU -DMPI=FALSE -DCUDA=TRUE -DINSTALL_TESTS=TRUE -DDOWNLOAD_MINICONDA=FALSE -DOPENMP=TRUE -DNCCL=FALSE -DAPPLY_UPDATES=TRUE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Running Amber20 ===&lt;br /&gt;
'''NVIDIA Pascal P100 and later GPUs like V100 do not scale beyond a single GPU'''. It is highly suggested to run Amber20 as a single-gpu job.&lt;br /&gt;
A job example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --gpus-per-node=1&lt;br /&gt;
#SBATCH --time=1:00:0&lt;br /&gt;
#SBATCH --account=soscip-&amp;lt;SOSCIP-project-ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/10.2.2 gcc/8.5.0 anaconda3/2021.05&lt;br /&gt;
export PATH=$HOME/where-amber-install/bin:$PATH&lt;br /&gt;
export LD_LIBRARY_PATH=$HOME/where-amber-install/lib:$LD_LIBRARY_PATH&lt;br /&gt;
pmemd.cuda .... &amp;lt;parameters&amp;gt; ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anaconda (Python) ==&lt;br /&gt;
Anaconda is a popular distribution of the Python programming language. It contains several common Python libraries such as SciPy and NumPy as pre-built packages, which eases installation. Anaconda is provided as modules: '''anaconda3'''&lt;br /&gt;
&lt;br /&gt;
To install Anaconda locally, user need to load the module and create a conda environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load anaconda3&lt;br /&gt;
conda create -n myPythonEnv python=3.8&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Note: By default, conda environments are located in '''$HOME/.conda/envs'''. Cache (downloaded tarballs and packages) is under '''$HOME/.conda/pkgs'''. User may run into problem with disk quota if there are too many environments created. To clean conda cache, '''please run: &amp;quot;conda clean -y --all&amp;quot; and &amp;quot;rm -rf $HOME/.conda/pkgs/*&amp;quot; after installation of packages'''.&lt;br /&gt;
&lt;br /&gt;
To activate the conda environment: (should be activated before running python)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source activate myPythonEnv&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that you SHOULD NOT use '''conda activate myPythonEnv''' to activate the environment.  This leads to all sorts of problems.  Once the environment is activated, user can update or install packages via '''conda''' or '''pip'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda install  &amp;lt;package_name&amp;gt; (preferred way to install packages)&lt;br /&gt;
pip install &amp;lt;package_name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Once the installation finishes, please clean the cache:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda clean -y --all&lt;br /&gt;
rm -rf $HOME/.conda/pkgs/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To deactivate:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
source deactivate&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To remove a conda environment:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda remove --name myPythonEnv --all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To verify that the environment was removed, run:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda info --envs&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Submitting Python Job ===&lt;br /&gt;
A single-gpu job example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --gpus-per-node=1&lt;br /&gt;
#SBATCH --time=1:00:0&lt;br /&gt;
#SBATCH --account=soscip-&amp;lt;SOSCIP_PROJECT_ID&amp;gt; #For SOSCIP projects only&lt;br /&gt;
&lt;br /&gt;
module load anaconda3&lt;br /&gt;
source activate myPythonEnv&lt;br /&gt;
python code.py ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CuPy ==&lt;br /&gt;
[https://cupy.chainer.org CuPy] is an open-source matrix library accelerated with NVIDIA CUDA. It also uses CUDA-related libraries including cuBLAS, cuDNN, cuRand, cuSolver, cuSPARSE, cuFFT and NCCL to make full use of the GPU architecture. CuPy is an implementation of NumPy-compatible multi-dimensional array on CUDA. CuPy consists of the core multi-dimensional array class, cupy.ndarray, and many functions on it. It supports a subset of numpy.ndarray interface.&lt;br /&gt;
&lt;br /&gt;
CuPy can be install into any conda environment. Python packages: numpy, six and fastrlock are required. cuDNN and NCCL are optional.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0  nccl/2.9.9 anaconda3/2021.05&lt;br /&gt;
conda create -n cupy-env python=3.8 numpy six fastrlock&lt;br /&gt;
source activate cupy-env&lt;br /&gt;
CFLAGS=&amp;quot;-I$MODULE_CUDNN_PREFIX/include -I$MODULE_NCCL_PREFIX/include -I$MODULE_CUDA_PREFIX/include&amp;quot; LDFLAGS=&amp;quot;-L$MODULE_CUDNN_PREFIX/lib64 -L$MODULE_NCCL_PREFIX/lib&amp;quot; CUDA_PATH=$MODULE_CUDA_PREFIX pip install cupy&lt;br /&gt;
#building/installing CuPy will take a few minutes&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gromacs ==&lt;br /&gt;
[http://www.gromacs.org/ GROMACS] is a versatile package to perform molecular dynamics, i.e. simulate the Newtonian equations of motion for systems with hundreds to millions of particles. It is primarily designed for biochemical molecules like proteins, lipids and nucleic acids that have a lot of complicated bonded interactions, but since GROMACS is extremely fast at calculating the nonbonded interactions (that usually dominate simulations) many groups are also using it for research on non-biological systems, e.g. polymers.&lt;br /&gt;
*'''GROMACS 2019'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load MistEnv/2021a cuda/10.2.2 gcc/8.5.0 gromacs/2019.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''GROMACS 2020 and 2021''' Thread-MPI version supports full GPU enablement of all key computational sections. The GPU is used throughout the timestep and repeated CPU-GPU transfers are eliminated. Users are suggested to carefully verify the results.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load MistEnv/2021a cuda/10.2.2 gcc/8.5.0 gromacs/2020.4&lt;br /&gt;
module load MistEnv/2021a cuda/10.2.2 gcc/8.5.0 gromacs/2020.6&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 gromacs/2021.2&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 openmpi/4.1.1+ucx-1.10.0 gromacs/2021.2 (testing purpose only)&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 gromacs/2021.4&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 gromacs/2021.5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Small/Medium Simulation ===&lt;br /&gt;
Due to the lack of PME domain decomposition support on GPU, Gromacs uses CPU to calculate PME when using multiple GPUs. '''It is always recommended to use a single GPU to do small and medium sized simulations with Gromacs.''' By using only 1 tMPI thread (w/ multiple OpenMP threads) on a single GPU, both non-bonded PP and PME are atomically offloaded to GPU when possible.&lt;br /&gt;
* Gromacs 2019 example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --gpus-per-node=1&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/10.2.2 gcc/8.5.0 gromacs/2019.6&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
export OMP_PLACES=cores&lt;br /&gt;
gmx mdrun -pin off -ntmpi 1 -ntomp 8  ... &amp;lt;other parameters&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Gromacs 2020 or 2021 example: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --gpus-per-node=1&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 gromacs/2021.5&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
export OMP_PLACES=cores&lt;br /&gt;
export GMX_FORCE_UPDATE_DEFAULT_GPU=true&lt;br /&gt;
gmx mdrun -pin off -ntmpi 1 -ntomp 8  ... &amp;lt;other parameters&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Large Simulation ===&lt;br /&gt;
If memory size (~58GB) for single-gpu job is not sufficient for the simulation,  multiple GPUs can be used. It is suggested to test starting with one full node with 4GPUs and force PME on GPU. Multiple PME ranks are not supported with PME on GPU, so if GPU is used for the PME calculation -npme (number of PME ranks) must be set to 1. If PME has less work than PP, it is suggested to run multiple ranks per GPU, so the GPU for PME rank can also do some work on PP rank(s).&lt;br /&gt;
'''If your simulation can fit in a single GPU job, please use single GPU to get much higher efficiency. Do not waste 3 additional GPU resource for getting only a small performance improvement.&lt;br /&gt;
'''&lt;br /&gt;
*An example using 4 GPUs, 7 PP ranks/tmpi threads + 1 PME rank/tmpi thread: ('''-pin on -pme gpu -npme 1''' must be added to mdrun command in order to force GPU to do PME)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --gpus-per-node=4&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH -p compute_full_node&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3  gcc/9.4.0 gromacs/2021.5&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
gmx mdrun -ntmpi 8 -pin on -pme gpu -npme 1 ... &amp;lt;add your parameters&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*It is suggested to also test using '''-ntmpi 4''' and '''export OMP_NUM_THREADS=8''' if you receive a NOTE in Gromacs output saying &amp;quot;% performance was lost because the PME ranks had more work to do than the PP ranks&amp;quot;. In this case, NVIDIA MPS is not needed since there is only one MPI rank per GPU.&lt;br /&gt;
*'''Please note that the solving of PME on GPU is still only the initial version supporting this behaviour, and comes with a set of limitations outlined further below.'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Only a PME order of 4 is supported on GPUs.&lt;br /&gt;
* PME will run on a GPU only when exactly one rank has a PME task, ie. decompositions with multiple ranks doing PME are not supported.&lt;br /&gt;
* Only single precision is supported.&lt;br /&gt;
* Free energy calculations where charges are perturbed are not supported, because only single PME grids can be calculated.&lt;br /&gt;
* Only dynamical integrators are supported (ie. leap-frog, Velocity Verlet, stochastic dynamics)&lt;br /&gt;
* LJ PME is not supported on GPUs.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*An example using 4 GPUs, '''PME on CPU''': ('''-pin on''' must be added to mdrun command for proper CPU thread bindings)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --gpus-per-node=4&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH -p compute_full_node&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3  gcc/9.4.0 gromacs/2021.5&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
gmx mdrun -ntmpi 8 -pin on  ... &amp;lt;add your parameters&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &amp;quot;-ntmpi 16, OMP_NUM_THREADS=2&amp;quot; and &amp;quot;-ntmpi 4, OMP_NUM_THREADS=8&amp;quot; should also be tested.  &lt;br /&gt;
# num_thread_MPI_ranks(-ntmpi) * num_OpenMP_threads = 32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*'''If your simulation can fit in a single GPU job, please use single GPU to get much higher efficiency. Do not waste 3 additional GPU resource for getting only a small performance improvement.'''&lt;br /&gt;
*'''NOTE: The above examples will NOT work with multiple nodes. If simulation is too large for a single GPU node, please contact SciNet/SOSCIP support.'''&lt;br /&gt;
&lt;br /&gt;
== NAMD ==&lt;br /&gt;
[http://www.ks.uiuc.edu/Research/namd/ NAMD] is a parallel, object-oriented molecular dynamics code designed for high-performance simulation of large biomolecular systems.&lt;br /&gt;
=== 2.14 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 spectrum-mpi/10.4.0 namd/2.14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Running with single GPU ====&lt;br /&gt;
If you have many jobs to run, it is always suggested to run with a single gpu per job. This makes jobs easier to be scheduled and gives better overall performance.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --gpus-per-node=1&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 spectrum-mpi/10.4.0 namd/2.14&lt;br /&gt;
scontrol show hostnames &amp;gt; nodelist-$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
`which charmrun` -npernode 1 -bind-to none -hostfile nodelist-$SLURM_JOB_ID `which namd2` +idlepoll +ppn 8 +p 8 stmv.namd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Running with one process per node (4 GPUs)====&lt;br /&gt;
An example of the job script (using 1 node, '''one process per node''',  32 CPU threads per process + 4 GPUs per process):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --gpus-per-node=4&lt;br /&gt;
#SBATCH --ntasks=1&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH -p compute_full_node&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 spectrum-mpi/10.4.0 namd/2.14&lt;br /&gt;
scontrol show hostnames &amp;gt; nodelist-$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
`which charmrun` -npernode 1 -hostfile nodelist-$SLURM_JOB_ID `which namd2` +setcpuaffinity +pemap 0-127:4 +idlepoll +ppn 32 +p $((32*SLURM_NTASKS)) stmv.namd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== Running with one process per GPU (4 GPUs)====&lt;br /&gt;
NAMD may scale better if using '''one process per GPU'''. Please do your own benchmark.&lt;br /&gt;
An example of the job script (using 1 node, '''one process per GPU''',  8 CPU threads per process):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --time=20:00&lt;br /&gt;
#SBATCH --gpus-per-node=4&lt;br /&gt;
#SBATCH --ntasks=4&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH -p compute_full_node&lt;br /&gt;
&lt;br /&gt;
module load MistEnv/2021a cuda/11.0.3 gcc/9.4.0 spectrum-mpi/10.4.0 namd/2.14&lt;br /&gt;
scontrol show hostnames &amp;gt; nodelist-$SLURM_JOB_ID&lt;br /&gt;
&lt;br /&gt;
`which charmrun` -npernode 4 -hostfile nodelist-$SLURM_JOB_ID `which namd2` +setcpuaffinity +pemap 0-127:4 +idlepoll +ppn 8 +p $((8*SLURM_NTASKS)) stmv.namd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Open-CE ==&lt;br /&gt;
[https://github.com/open-ce/open-ce Open-CE] is an '''IBM''' repo for feedstock collection, environment data, and scripts for building Tensorflow, Pytorch, and other machine learning packages and dependencies. Open-CE is distributed as a '''conda channel''' on Mist cluster.&lt;br /&gt;
'''Available packages and versions are listed here [https://github.com/open-ce/open-ce/releases/tag/open-ce-v1.5.1 Open-CE Releases]'''. Currently only python 3.8 and CUDA 11.2 are supported. If you need a different python or cuda version, please contact SOSCIP or SciNet support.&lt;br /&gt;
&lt;br /&gt;
*Packages can be installed by setting Open-CE conda channel:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda install -c /scinet/mist/ibm/open-ce python=3.8 cudatoolkit=11.2 PACKAGE&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*Once the installation finishes, please clean the cache:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda clean -y --all&lt;br /&gt;
rm -rf $HOME/.conda/pkgs/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Available Packages:&lt;br /&gt;
|-&lt;br /&gt;
|Tensorflow&lt;br /&gt;
|TensorFlow Estimators&lt;br /&gt;
|TensorFlow Probability&lt;br /&gt;
|TensorBoard&lt;br /&gt;
|TensorBoard Data Server&lt;br /&gt;
|TensorFlow Text&lt;br /&gt;
|TensorFlow Model Optimizations&lt;br /&gt;
|TensorFlow Addons&lt;br /&gt;
|TensorFlow Datasets&lt;br /&gt;
|TensorFlow Hub&lt;br /&gt;
|-&lt;br /&gt;
|TensorFlow MetaData&lt;br /&gt;
|PyTorch&lt;br /&gt;
|TorchText&lt;br /&gt;
|TorchVision&lt;br /&gt;
|PyTorch Lightning&lt;br /&gt;
|PyTorch Lightning Bolts&lt;br /&gt;
|ONNX&lt;br /&gt;
|Onnx-runtime&lt;br /&gt;
|skl2onnx&lt;br /&gt;
|tf2onnx&lt;br /&gt;
|-&lt;br /&gt;
|onnxmltools&lt;br /&gt;
|onnxconverter-common&lt;br /&gt;
|XGBoost&lt;br /&gt;
|LightGBM&lt;br /&gt;
|Transformers&lt;br /&gt;
|Tokenizers&lt;br /&gt;
|SentencePiece&lt;br /&gt;
|Spacy&lt;br /&gt;
|DALI&lt;br /&gt;
|OpenCV&lt;br /&gt;
|-&lt;br /&gt;
|Horovod&lt;br /&gt;
|PyArrow&lt;br /&gt;
|grpc&lt;br /&gt;
|uwsgi&lt;br /&gt;
|ORC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PyTorch ==&lt;br /&gt;
=== Installing from IBM Open-CE Conda Channel ===&lt;br /&gt;
The easiest way to install PyTorch on Mist is using IBM's Conda channel. User needs to prepare a conda environment and install PyTorch using IBM's Open-CE Conda channel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load anaconda3&lt;br /&gt;
conda create -n pytorch_env python=3.8&lt;br /&gt;
source activate pytorch_env&lt;br /&gt;
conda install -c /scinet/mist/ibm/open-ce pytorch=1.10.1 cudatoolkit=11.2&lt;br /&gt;
or&lt;br /&gt;
conda install -c /scinet/mist/ibm/open-ce-1.2 pytorch=1.7.1 cudatoolkit=11.0 (or 10.2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once the installation finishes, please clean the cache:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda clean -y --all&lt;br /&gt;
rm -rf $HOME/.conda/pkgs/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add below command into your job script before python command to get deterministic results, see details here: [https://github.com/pytorch/pytorch/issues/39849]&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export CUBLAS_WORKSPACE_CONFIG=:4096:2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RAPIDS ==&lt;br /&gt;
The [https://rapids.ai RAPIDS] is a suite of open source software libraries that gives you the freedom to execute end-to-end data science and analytics pipelines entirely on GPUs. The RAPIDS data science framework includes a collection of libraries: '''cuDF(GPU DataFrames)''', '''cuML(GPU Machine Learning Algorithms)''', '''cuStrings(GPU String Manipulation)''', etc.&lt;br /&gt;
&lt;br /&gt;
=== Installing from IBM Conda Channel ===&lt;br /&gt;
The easiest way to install RAPIDS on Mist is using IBM's Conda channel. User needs to prepare a conda environment with Python 3.6 or 3.7 and install powerai-rapids using IBM's Conda channel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load anaconda3&lt;br /&gt;
conda create -n rapids_env python=3.7&lt;br /&gt;
source activate rapids_env&lt;br /&gt;
conda install -c https://public.dhe.ibm.com/ibmdl/export/pub/software/server/ibm-ai/conda-early-access/ powerai-rapids&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once the installation finishes, please clean the cache:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda clean -y --all&lt;br /&gt;
rm -rf $HOME/.conda/pkgs/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== TensorFlow and Keras ==&lt;br /&gt;
=== Installing from IBM Conda Channel ===&lt;br /&gt;
The easiest way to install TensorFlow and Keras on Mist is using IBM's Open-CE Conda channel. User needs to prepare a conda environment and install TensorFlow using IBM's Open-CE Conda channel.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load anaconda3&lt;br /&gt;
conda create -n tf_env python=3.8&lt;br /&gt;
source activate tf_env&lt;br /&gt;
conda install -c /scinet/mist/ibm/open-ce tensorflow==2.7.0 cudatoolkit=11.2&lt;br /&gt;
or&lt;br /&gt;
conda install -c /scinet/mist/ibm/open-ce-1.2 tensorflow==2.4.3 cudatoolkit=11.0 (or 10.2)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Once the installation finishes, please clean the cache:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda clean -y --all&lt;br /&gt;
rm -rf $HOME/.conda/pkgs/*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Testing and debugging =&lt;br /&gt;
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.&lt;br /&gt;
* Small test jobs can be run on the login node.  Rule of thumb: tests should run no more than a couple of minutes, taking at most about 1-2GB of memory, and use no more than one gpu and a few cores.&lt;br /&gt;
&amp;lt;!-- * You can run the [[Parallel Debugging with DDT|DDT]] debugger on the login nodes after &amp;lt;code&amp;gt;module load ddt&amp;lt;/code&amp;gt;. --&amp;gt;&lt;br /&gt;
* Short tests that do not fit on a login node, or for which you need a dedicated node, request an interactive debug job with the debug command:&lt;br /&gt;
 mist-login01:~$ debugjob --clean -g G&lt;br /&gt;
where G is the number of gpus, If G=1, this gives an interactive session for 2 hours, whereas G=4 gets you a single node with 4 gpus for 30 minutes, and with G=8 (the maximum) gets you 2 nodes each with 4 gpus for 15 minutes.  The &amp;lt;tt&amp;gt;--clean&amp;lt;/tt&amp;gt; argument is optional but recommended as it will start the session without any modules loaded, thus mimicking more closely what happens when you submit a job script. Users needs to load module and activate the conda environment after a debug job starts. It is recommended to do a 'conda clean' before 'source activate ENV' in a debug job if --clean flag is missed.&lt;br /&gt;
&lt;br /&gt;
= Submitting jobs =&lt;br /&gt;
Once you have compiled and tested your code or workflow on the Mist login nodes, and confirmed that it behaves correctly, you are ready to submit jobs to the cluster.  Your jobs will run on some of Mist's 53 compute nodes.  When and where your job runs is determined by the scheduler.&lt;br /&gt;
&lt;br /&gt;
Mist uses SLURM as its job scheduler. It is configured to allow only '''Single-GPU jobs''' and '''Full-node jobs (4 GPUs per node)'''.&lt;br /&gt;
&lt;br /&gt;
You submit jobs from a login node by passing a script to the sbatch command:&lt;br /&gt;
&lt;br /&gt;
mist-login01:scratch$ sbatch jobscript.sh&lt;br /&gt;
&lt;br /&gt;
This puts the job in the queue. It will run on the compute nodes in due course. In most cases, you should not submit from your $HOME directory, but rather, from your $SCRATCH directory, so that the output of your compute job can be written out (as mentioned above, $HOME is read-only on the compute nodes).&lt;br /&gt;
&lt;br /&gt;
Example job scripts can be found below.&lt;br /&gt;
Keep in mind:&lt;br /&gt;
* Scheduling is by single gpu or by full node, so you ask only 1 gpu or 4 gpus per node.&lt;br /&gt;
* Your job's maximum walltime is 24 hours. &lt;br /&gt;
* Jobs must write their output to your scratch or project directory (home is read-only on compute nodes).&lt;br /&gt;
* Compute nodes have no internet access.&lt;br /&gt;
* Your job script will not remember the modules you have loaded, so it needs to contain &amp;quot;module load&amp;quot; commands of all the required modules (see examples below). &lt;br /&gt;
== SOSCIP Users ==&lt;br /&gt;
*[https://www.soscip.org SOSCIP] is a consortium to bring together industrial partners and academic researchers and provide them with sophisticated advanced computing technologies and expertise to solve social, technical and business challenges across sectors and drive economic growth.&lt;br /&gt;
&lt;br /&gt;
If you are working on a SOSCIP project, please contact [mailto:soscip-support@scinet.utoronto.ca soscip-support@scinet.utoronto.ca] to have your user account added to SOSCIP project accounts. SOSCIP users need to submit jobs with additional SLURM flag to get higher priority:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#SBATCH -A soscip-&amp;lt;SOSCIP_PROJECT_ID&amp;gt;    #e.g. soscip-3-001&lt;br /&gt;
OR&lt;br /&gt;
#SBATCH --account=soscip-&amp;lt;SOSCIP_PROJECT_ID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Single-GPU job script ==&lt;br /&gt;
For a single GPU job, each will have a quarter of the node which is 1 GPU + 8/32 CPU Cores/Threads + ~58GB CPU memory. '''Users should never ask CPU or Memory explicitly.''' If running MPI program, user can set --ntasks to be the number of MPI ranks. '''Do NOT set --ntasks for non-MPI programs.''' &lt;br /&gt;
*It is suggested to use NVIDIA Multi-Process Service (MPS) if running multiple MPI ranks on one GPU.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --gpus-per-node=1&lt;br /&gt;
#SBATCH --time=1:00:0&lt;br /&gt;
#SBATCH --account=soscip-&amp;lt;SOSCIP_PROJECT_ID&amp;gt; #For SOSCIP projects only&lt;br /&gt;
&lt;br /&gt;
module load anaconda3&lt;br /&gt;
source activate conda_env&lt;br /&gt;
python code.py ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Full-node job script ==&lt;br /&gt;
'''If you are not sure the program can be executed on multiple GPUs, please follow the single-gpu job instruction above or contact SciNet/SOSCIP support.'''&lt;br /&gt;
&lt;br /&gt;
Multi-GPU job should ask for a minimum of one full node (4 GPUs). User need to specify &amp;quot;compute_full_node&amp;quot; partition in order to get all resource on a node. &lt;br /&gt;
*An example for a 1-node job:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --gpus-per-node=4&lt;br /&gt;
#SBATCH --ntasks=4 #this only affects MPI job&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
#SBATCH -p compute_full_node&lt;br /&gt;
#SBATCH --account=soscip-&amp;lt;SOSCIP_PROJECT_ID&amp;gt; #For SOSCIP projects only&lt;br /&gt;
&lt;br /&gt;
module load &amp;lt;modules you need&amp;gt;&lt;br /&gt;
Run your program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Jupyter Notebooks =&lt;br /&gt;
SciNet’s [[Jupyter Hub]] is a Niagara-type node; it has a different CPU architecture and no GPUs. Conda environments prepared on Mist will not work there properly. Users who need to use Jupyter Notebook to develop and test some aspects of their workflow can create their own server on the Mist login node and use an SSH tunnel to connect to it from outside. Users who choose to do so have to keep in mind that the login node is a shared resource, and heavy calculations should be done only on compute nodes. Processes (including iPython kernels used by the notebooks) are limited to one hour of total CPU time: idle time will not be counted toward this one hour, and use of multiple cores will count proportionally to the number of cores (i.e. a kernel using all 128 virtual cores on the node will be killed after 28 seconds). Idle notebooks can still burden the node by hogging system and GPU memory, please be mindful of other users and terminate notebooks when work is done.&lt;br /&gt;
&lt;br /&gt;
As an example, let us create a new Conda environment and activate it:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load anaconda3&lt;br /&gt;
conda create -n jupyter_env python=3.7&lt;br /&gt;
source activate jupyter_env&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Install the Jupyter Notebook server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
conda install notebook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running the notebook server ==&lt;br /&gt;
When the Conda environment is active, enter:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jupyter-notebook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
By default, the Jupyter Notebook server uses port 8888 (can be overridden with the &amp;lt;code&amp;gt;--port&amp;lt;/code&amp;gt; option). If another user has already started their own server, the default port may be busy, in which case the server will be listening on a different port. Once launched, the server will output some information to the terminal that will include the actual port number used and a 48-character token. For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://localhost:8890/?token=54c4090d……&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this example, the server is listening on port 8890.&lt;br /&gt;
&lt;br /&gt;
== Creating a tunnel ==&lt;br /&gt;
In order to access this port remotely (i.e. from your office or home), an [https://en.wikipedia.org/wiki/Tunneling_protocol#Secure_Shell_tunneling SSH tunnel] has to be established. Please refer to your SSH client’s documentation for instructions on how to do that. For the OpenSSH client (standard in most Linux distributions and macOS), a tunnel can be opened in a separate terminal session to the one where the Jupyter Notebook server is running. In the new terminal, issue this command:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -L8888:localhost:8890 &amp;lt;username&amp;gt;@mist.scinet.utoronto.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(replace &amp;lt;code&amp;gt;&amp;lt;username&amp;gt;&amp;lt;/code&amp;gt; with your actual username) The tunnel is open as long as this SSH connection is alive. In this example, we tunnel Mist login node’s port 8890 (where our server is assumed to be running) to our home computer’s port 8888 (any other free port is fine). The notebook can be accessed in the browser at the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://localhost:8888&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; address (followed by &amp;lt;code&amp;gt;/?token=54c4090d……&amp;lt;/code&amp;gt;, or the token can be input on the webpage).&lt;br /&gt;
&lt;br /&gt;
== Using Jupyter on compute nodes ==&lt;br /&gt;
&lt;br /&gt;
You can use the instructions here to set up a Jupyter Notebook server on a compute node (including a [[#Testing_and_debugging|debugjob]]). '''We strongly discourage''' you from running an interactive notebook on a compute node (other than for a debugjob), scheduled jobs run in arbitrary times and are not meant to be interactive. Jupyter notebooks can be run non-interactively or converted to Python scripts.&lt;br /&gt;
&lt;br /&gt;
To launch the Jupyter Notebook server, load the &amp;lt;code&amp;gt;anaconda3&amp;lt;/code&amp;gt; module and activate your environment as before (by adding the appropriate lines to the submission script, if you are not using the compute node with an interactive shell). Launching the server has to be done like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HOME=/dev/shm/$USER jupyter-notebook&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
That is because Jupyter will fail unless it can write to the home folder, which is read-only from compute nodes. This modification of the &amp;lt;code&amp;gt;$HOME&amp;lt;/code&amp;gt; environment variable will carry over into the notebooks, which is usually not a problem, but in case the notebook relies on this environment variable (e.g. to read certain files), it can be reset manually in the notebook (&amp;lt;code&amp;gt;import os; os.environ['HOME']=……&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Because compute nodes are not accessible from the Internet, tunneling has to be done twice, once from the remote location (office or home) to the Mist login node, and then from the login node to the compute node. Assuming the server is running on port 8890 of the mist006 node, open the first tunnel in a new terminal session in the remote computer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -L8888:localhost:9999 &amp;lt;username&amp;gt;@mist.scinet.utoronto.ca&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where 9999 is any available port on the Mist login node (to test port availability enter &amp;lt;code&amp;gt;ss -Hln src :9999&amp;lt;/code&amp;gt; in the terminal when connected to the Mist login node; an empty output indicates that the port is free). In the same session in the login node that was created with the above command, open the second tunnel to the compute node:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh -L9999:localhost:8890 mist006&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Be aware that the second tunnel will automatically disconnect once the job on the compute node times out or is relinquished. The Jupyter Notebook server running on the compute node can now be accessed from the browser as in the previous subsection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Support =&lt;br /&gt;
&lt;br /&gt;
SciNet inquiries:&lt;br /&gt;
* [mailto:support@scinet.utoronto.ca support@scinet.utoronto.ca]&lt;br /&gt;
&lt;br /&gt;
SOSCIP inquiries:&lt;br /&gt;
*[mailto:soscip-support@scinet.utoronto.ca soscip-support@scinet.utoronto.ca]&lt;/div&gt;</summary>
		<author><name>Gauriaur</name></author>
	</entry>
	<entry>
		<id>https://docs.scinet.utoronto.ca/index.php?title=Niagara_Quickstart&amp;diff=3518</id>
		<title>Niagara Quickstart</title>
		<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php?title=Niagara_Quickstart&amp;diff=3518"/>
		<updated>2022-02-01T19:35:48Z</updated>

		<summary type="html">&lt;p&gt;Gauriaur: /* Logging in */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:Niagara.jpg|center|300px|thumb]]&lt;br /&gt;
|name=Niagara&lt;br /&gt;
|installed=Jan 2018/March 2020&lt;br /&gt;
|operatingsystem= CentOS 7.6 &lt;br /&gt;
|loginnode= niagara.scinet.utoronto.ca&lt;br /&gt;
|nnodes=  2,024 nodes (80,960 cores)&lt;br /&gt;
|rampernode=188 GiB / 202 GB  &lt;br /&gt;
|corespernode=40 (80 hyperthreads)&lt;br /&gt;
|interconnect=Mellanox Dragonfly+&lt;br /&gt;
|vendorcompilers= icc (C) ifort (fortran) icpc (C++)&lt;br /&gt;
|queuetype=Slurm&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Specifications=&lt;br /&gt;
&lt;br /&gt;
The Niagara cluster is a large cluster of 2,024 Lenovo SD530 servers each with 40 Intel &amp;quot;Skylake&amp;quot; at 2.4 GHz or 40 Intel &amp;quot;CascadeLake&amp;quot; cores at 2.5 GHz. &lt;br /&gt;
The peak performance of the cluster is about 3.6 PFlops (6.25 PFlops theoretical).  It was the 53rd fastest supercomputer on the [https://www.top500.org/list/2018/06/?page=1 TOP500 list of June 2018], and is at number 113 on the [https://www.top500.org/lists/top500/list/2021/06/ current list (June 2021)]. &lt;br /&gt;
&lt;br /&gt;
Each node of the cluster has 188 GiB / 202 GB RAM per node (at least 4 GiB/core for user jobs).  Being designed for large parallel workloads, it has a fast interconnect consisting of EDR InfiniBand in a Dragonfly+ topology with Adaptive Routing.  The compute nodes are accessed through a queueing system that allows jobs with a minimum of 15 minutes and a maximum of 24 hours and favours large jobs.&lt;br /&gt;
&lt;br /&gt;
* See the [https://www.youtube.com/watch?v=l-E2CFGh0BE&amp;amp;feature=youtu.be  &amp;quot;Intro to Niagara&amp;quot;] recording&lt;br /&gt;
&lt;br /&gt;
More detailed hardware characteristics of the Niagara supercomputer can be found [https://docs.computecanada.ca/wiki/Niagara on this page].&lt;br /&gt;
&lt;br /&gt;
Note: Documentation about the &amp;quot;GPU expansion to Niagara&amp;quot; called &amp;quot;Mist&amp;quot; can be found on [[Mist | its own page]].&lt;br /&gt;
&lt;br /&gt;
= Getting started on Niagara =&lt;br /&gt;
&lt;br /&gt;
Access to Niagara is not enabled automatically for everyone with a Compute Canada account, but anyone with an active Compute Canada account can get their access enabled.&lt;br /&gt;
 &lt;br /&gt;
If you have an active Compute Canada account but you do not have access to Niagara yet (e.g. because you are new to SciNet or belong to a group whose primary PI does not have an allocation as granted in the annual [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions Compute Canada RAC]), go to the [https://ccdb.computecanada.ca/services/opt_in opt-in page on the CCDB site].  After clicking the &amp;quot;Join&amp;quot; button, it usually takes only one or two business days for access to be granted.  &lt;br /&gt;
&lt;br /&gt;
Please read this document carefully.  The [https://docs.scinet.utoronto.ca/index.php/FAQ FAQ] is also a useful resource.  If at any time you require assistance, or if something is unclear, please do not hesitate to [mailto:support@scinet.utoronto.ca contact us].&lt;br /&gt;
&lt;br /&gt;
== Logging in ==&lt;br /&gt;
&lt;br /&gt;
Niagara runs CentOS 7, which is a type of Linux.  You will need to be familiar with Linux systems to work on Niagara.  If you are not it will be worth your time to review our [https://support.scinet.utoronto.ca/education/browse.php?category=-1&amp;amp;search=scmp101&amp;amp;include=all&amp;amp;filter=Filter Introduction to Linux Shell] class.&lt;br /&gt;
&lt;br /&gt;
As with all SciNet and CC (Compute Canada) compute systems, access to Niagara is done via [[SSH]] (secure shell) only. As of January 22 2022, authentication is only allowed via SSH keys. [https://docs.computecanada.ca/wiki/SSH_Keys Please refer to this page] to generate your SSH key pair and make sure you use them securely.&lt;br /&gt;
 &lt;br /&gt;
Open a terminal window (e.g. Connecting with [https://docs.computecanada.ca/wiki/Connecting_with_PuTTY PuTTY] on Windows or Connecting with [https://docs.computecanada.ca/wiki/Connecting_with_MobaXTerm MobaXTerm]), then SSH into the Niagara login nodes with your CC credentials:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -i /path/to/ssh_private_key -Y MYCCUSERNAME@niagara.scinet.utoronto.ca&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 $ ssh -i /path/to/ssh_private_key -Y MYCCUSERNAME@niagara.computecanada.ca&lt;br /&gt;
&lt;br /&gt;
The first time you login to Niagara, please make sure you are actually accessing Niagara by checking if the login node ssh host key fingerprint matches [[SSH_Changes_in_May_2019 | (See here how)]]. This check prevents you from falling victim of [https://en.wikipedia.org/wiki/Man-in-the-middle_attack man-in-the-middle attacks.]&lt;br /&gt;
&lt;br /&gt;
* The Niagara login nodes are where you develop, edit, compile, prepare and submit jobs.&lt;br /&gt;
* These login nodes are not part of the Niagara compute cluster, but have the same architecture, operating system, and software stack.&lt;br /&gt;
* The optional &amp;lt;code&amp;gt;-Y&amp;lt;/code&amp;gt; is needed to open windows from the Niagara command-line onto your local X server.&lt;br /&gt;
* You can only connect 4 times in a 2-minute window to the login nodes. &lt;br /&gt;
* To run on Niagara's compute nodes, you must [[#Submitting_jobs | submit a batch job]].&lt;br /&gt;
&lt;br /&gt;
If you cannot log in, be sure to first check the [https://docs.scinet.utoronto.ca System Status] on this site's front page.&lt;br /&gt;
&lt;br /&gt;
== Your various directories ==&lt;br /&gt;
&lt;br /&gt;
By virtue of your access to Niagara you are granted storage space on the system.  There are several directories available to you, each indicated by an associated environment variable.&lt;br /&gt;
&lt;br /&gt;
=== home and scratch ===&lt;br /&gt;
&lt;br /&gt;
You have a home and scratch directory on the system, the paths to which are stored in the environment variables $HOME and $SCRATCH. The locations are of the form&lt;br /&gt;
&lt;br /&gt;
 $HOME=/home/g/groupname/myccusername&lt;br /&gt;
 $SCRATCH=/scratch/g/groupname/myccusername&lt;br /&gt;
&lt;br /&gt;
where groupname is the name of your PI's group, and myccusername is your CC username.  For example:&lt;br /&gt;
&lt;br /&gt;
  nia-login07:~$ pwd&lt;br /&gt;
  /home/s/scinet/rzon&lt;br /&gt;
  nia-login07:~$ cd $SCRATCH&lt;br /&gt;
  nia-login07:rzon$ pwd&lt;br /&gt;
  /scratch/s/scinet/rzon&lt;br /&gt;
&lt;br /&gt;
NOTE: home is read-only on compute nodes.&lt;br /&gt;
&lt;br /&gt;
=== project and archive/nearline ===&lt;br /&gt;
&lt;br /&gt;
Users from groups with [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions RAC storage allocation] will also have a project directory and possible an archive (a.k.a. &amp;quot;nearline&amp;quot;) directory, the paths to which are stored in the environment variables $PROJECT and $ARCHIVE. They follow the naming convention:&lt;br /&gt;
&lt;br /&gt;
 $PROJECT=/project/g/groupname/myccusername&lt;br /&gt;
 $ARCHIVE=/archive/g/groupname/myccusername&lt;br /&gt;
&lt;br /&gt;
NOTE: Currently archive space is available only via [[HPSS]], and is not accessible on the Niagara login, compute, or datamover nodes.&lt;br /&gt;
&lt;br /&gt;
'''''IMPORTANT: Future-proof your scripts'''''&lt;br /&gt;
&lt;br /&gt;
When writing your scripts, use the environment variables (&amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$PROJECT&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$ARCHIVE&amp;lt;/tt&amp;gt;) instead of the actual paths!  The paths may change in the future.&lt;br /&gt;
&lt;br /&gt;
=== Storage and quotas ===&lt;br /&gt;
&lt;br /&gt;
You should familiarize yourself with the [[Data_Management#Purpose_of_each_file_system | various file systems]], what purpose they serve, and how to properly use them.  This table summarizes the various file systems.  See the [[Data_Management | Data Management]] page for more details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! location&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;| quota&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| block size&lt;br /&gt;
! expiration time&lt;br /&gt;
! backed up&lt;br /&gt;
! on login nodes&lt;br /&gt;
! on compute nodes&lt;br /&gt;
|-&lt;br /&gt;
| $HOME&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| 100 GB / 250,000 files per user&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 1 MB&lt;br /&gt;
| &lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
| read-only&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| $SCRATCH&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| 25 TB / 6,000,000 file per user&lt;br /&gt;
|align=&amp;quot;right&amp;quot; rowspan=&amp;quot;2&amp;quot; | 16 MB&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2 months&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| no&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| yes&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| yes&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|50-500TB per group&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|[[Data_Management#Quotas_and_purging | depending on group size]]&lt;br /&gt;
|-&lt;br /&gt;
| $PROJECT&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| by group allocation&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 16 MB&lt;br /&gt;
| &lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
|-&lt;br /&gt;
| $ARCHIVE&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| by group (nearline) allocation&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| &lt;br /&gt;
|&lt;br /&gt;
| dual-copy&lt;br /&gt;
| no&lt;br /&gt;
| no&lt;br /&gt;
|-&lt;br /&gt;
| $BBUFFER&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| 10 TB per user&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 1 MB&lt;br /&gt;
| very short&lt;br /&gt;
| no&lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Moving data to Niagara ===&lt;br /&gt;
&lt;br /&gt;
If you need to move data to Niagara for analysis, or when you need to move data off of Niagara, use the following guidelines:&lt;br /&gt;
* If your data is less than 10GB, move the data using the login nodes.&lt;br /&gt;
* If your data is greater than 10GB, move the data using the datamover nodes nia-datamover1.scinet.utoronto.ca and nia-datamover2.scinet.utoronto.ca .&lt;br /&gt;
&lt;br /&gt;
Details of how to use the datamover nodes can be found on the [[Data_Management#Moving_data | Data Management ]] page.&lt;br /&gt;
&lt;br /&gt;
= Loading software modules =&lt;br /&gt;
&lt;br /&gt;
You have two options for running code on Niagara: use existing software, or [[Niagara_Quickstart#Compiling_on_Niagara:_Example | compile your own]].  This section focuses on the former.&lt;br /&gt;
&lt;br /&gt;
Other than essentials, all installed software is made available [[Using_modules | using module commands]]. These modules set environment variables (PATH, etc.), allowing multiple, conflicting versions of a given package to be available.  A detailed explanation of the module system can be [[Using_modules | found on the modules page]].&lt;br /&gt;
&lt;br /&gt;
Common module subcommands are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;: load the default version of a particular software.&lt;br /&gt;
* &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;/&amp;lt;module-version&amp;gt;&amp;lt;/code&amp;gt;: load a specific version of a particular software.&lt;br /&gt;
* &amp;lt;code&amp;gt;module purge&amp;lt;/code&amp;gt;: unload all currently loaded modules.&lt;br /&gt;
* &amp;lt;code&amp;gt;module spider&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;module spider &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;): list available software packages.&lt;br /&gt;
* &amp;lt;code&amp;gt;module avail&amp;lt;/code&amp;gt;: list loadable software packages.&lt;br /&gt;
* &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt;: list loaded modules.&lt;br /&gt;
&lt;br /&gt;
Along with modifying common environment variables, such as PATH, and LD_LIBRARY_PATH, these modules also create a SCINET_MODULENAME_ROOT environment variable, which can be used to access commonly needed software directories, such as /include and /lib.&lt;br /&gt;
&lt;br /&gt;
There are handy abbreviations for the module commands. &amp;lt;code&amp;gt;ml&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ml &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
== Software stacks: NiaEnv and CCEnv ==&lt;br /&gt;
&lt;br /&gt;
On Niagara, there are two available software stacks:&lt;br /&gt;
&lt;br /&gt;
=== NiaEnv ===&lt;br /&gt;
&lt;br /&gt;
A [https://docs.scinet.utoronto.ca/index.php/Modules_specific_to_Niagara Niagara software stack] tuned and compiled for this machine. This stack is available by default, but if not, can be reloaded with&lt;br /&gt;
&amp;lt;pre&amp;gt;module load NiaEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
This loads the default (set of modules), which is currently the 2019b epoch. Before September 1, the default was NiaEnv/2018a. Users are encourage to use the 2019b stack, but to make sure old job scripts or older software installations in your home directory continue to work, you may need to use&lt;br /&gt;
&amp;lt;pre&amp;gt;module load NiaEnv/2018a&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can override the system default for the epoch version by creating a file called &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;.modulerc&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt; in your home directory with the line &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;module-version NiaEnv/VERSION default&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt;, e.g. like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;module-version NiaEnv/2019b default&amp;quot; &amp;gt; $HOME/.modulerc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After this, subsequent logins and jobs will use the 2019b stack even when the system default is different.&lt;br /&gt;
&amp;lt;p&amp;gt;Similarly, you can make an older epoch your personal default, like so&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;module-version NiaEnv/2018a default&amp;quot; &amp;gt; $HOME/.modulerc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No modules are loaded by default on Niagara except NiaEnv.&lt;br /&gt;
&lt;br /&gt;
=== CCEnv ===&lt;br /&gt;
&lt;br /&gt;
The same  [https://docs.computecanada.ca/wiki/Modules 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] can be used on Niagara too, with:&lt;br /&gt;
&amp;lt;pre&amp;gt;module load CCEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or, if you want the same default modules loaded as on Béluga, then do&lt;br /&gt;
&amp;lt;pre&amp;gt;module load CCEnv StdEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
or, if you want the same default modules loaded as on Cedar and Graham, do&lt;br /&gt;
&amp;lt;pre&amp;gt;module load CCEnv arch/avx2 StdEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips for loading software ==&lt;br /&gt;
&lt;br /&gt;
* We advise '''''against''''' loading modules in your .bashrc.  This can lead to very confusing behaviour under certain circumstances.  Our guidelines for .bashrc files can be found [[bashrc guidelines|here]].&lt;br /&gt;
* Instead, load modules by hand when needed, or by sourcing a separate script.&lt;br /&gt;
* Load run-specific modules inside your job submission script.&lt;br /&gt;
* Short names give default versions; e.g. &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;intel/2018.2&amp;lt;/code&amp;gt;. It is usually better to be explicit about the versions, for future reproducibility.&lt;br /&gt;
* Modules often require other modules to be loaded first.  Solve these dependencies by using [[Using_modules#Module_spider | &amp;lt;code&amp;gt;module spider&amp;lt;/code&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
= Available compilers and interpreters =&lt;br /&gt;
&lt;br /&gt;
* For most compiled software, one should use the Intel compilers (&amp;lt;tt&amp;gt;icc&amp;lt;/tt&amp;gt; for C, &amp;lt;tt&amp;gt;icpc&amp;lt;/tt&amp;gt; for C++, and &amp;lt;tt&amp;gt;ifort&amp;lt;/tt&amp;gt; for Fortran). Loading an &amp;lt;tt&amp;gt;intel&amp;lt;/tt&amp;gt; module makes these available. &lt;br /&gt;
* The GNU compiler suite (&amp;lt;tt&amp;gt;gcc, g++, gfortran&amp;lt;/tt&amp;gt;) is also available, if you load one of the &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt; modules.&lt;br /&gt;
* To compile mpi code, you must additionally load an &amp;lt;tt&amp;gt;openmpi&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;intelmpi&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
* Open source interpreted, interactive software is also available:&lt;br /&gt;
** [[Python]]&lt;br /&gt;
** [[R]]&lt;br /&gt;
** Julia&lt;br /&gt;
** [[Octave]]&lt;br /&gt;
  &lt;br /&gt;
Please visit the corresponding page for details on using these tools.  For information on running MATLAB applications on Niagara, visit [[MATLAB| this page]].&lt;br /&gt;
&lt;br /&gt;
= Using Commercial Software =&lt;br /&gt;
&lt;br /&gt;
May I use commercial software on Niagara?&lt;br /&gt;
* Possibly, but you have to bring your own license for it.  You can connect to an external license server using [[SSH_Tunneling | ssh tunneling]].&lt;br /&gt;
* 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.&lt;br /&gt;
* Thus, the only freely available commercial software installed on Niagara is software that can benefit everyone: Compilers, math libraries and debuggers.&lt;br /&gt;
* That means no [[MATLAB]], Gaussian, IDL, &lt;br /&gt;
* Open source alternatives like Octave, [[Python]], and [[R]] are available.&lt;br /&gt;
* We are happy to help you to install commercial software for which you have a license.&lt;br /&gt;
* In some cases, if you have a license, you can use software in the Compute Canada stack.&lt;br /&gt;
The list of commercial software which is installed on Niagara, for which you will need a license to use, can be found on the [[Commercial_software | commercial software page]].&lt;br /&gt;
&lt;br /&gt;
= Compiling on Niagara: Example =&lt;br /&gt;
&lt;br /&gt;
Suppose one wants to compile an application from two c source files, appl.c and module.c, which use the Math Kernel Library. This is an example of how this would be done:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nia-login07:~$ module load NiaEnv/2019b&lt;br /&gt;
nia-login07:~$ module list&lt;br /&gt;
Currently Loaded Modules:&lt;br /&gt;
  1) NiaEnv/2019b (S)&lt;br /&gt;
  Where:&lt;br /&gt;
   S:  Module is Sticky, requires --force to unload or purge&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ module load intel/2019u4&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ ls&lt;br /&gt;
appl.c module.c&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ icc -c -O3 -xHost -o appl.o appl.c&lt;br /&gt;
nia-login07:~$ icc -c -O3 -xHost -o module.o module.c&lt;br /&gt;
nia-login07:~$ icc  -o appl module.o appl.o -mkl&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ ./appl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note:&lt;br /&gt;
* The optimization flags -O3 -xHost allow the Intel compiler to use instructions specific to the architecture CPU that is present (instead of for more generic x86_64 CPUs).&lt;br /&gt;
* Linking with the Intel Math Kernel Library (MKL) is easy when using the intel compiler, it just requires the -mkl flags.&lt;br /&gt;
* If compiling with gcc, the optimization flags would be -O3 -march=native. For the way to link with the MKL, it is suggested to use the [https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor MKL link line advisor].&lt;br /&gt;
&lt;br /&gt;
= Testing and Debugging =&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
* Small test jobs can be run on the login nodes.  Rule of thumb: tests should run no more than a couple of minutes, taking at most about 1-2GB of memory, and use no more than a couple of cores.&lt;br /&gt;
* You can run the [[Parallel Debugging with DDT|DDT]] debugger on the login nodes after &amp;lt;code&amp;gt;module load ddt&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Short tests that do not fit on a login node, or for which you need a dedicated node, request an interactive debug job with the debug command:&lt;br /&gt;
 nia-login07:~$ debugjob --clean N&lt;br /&gt;
where N is the number of nodes, If N=1, this gives an interactive session one 1 hour, when N=4 (the maximum), it gives you 22 minutes.  The &amp;lt;tt&amp;gt;--clean&amp;lt;/tt&amp;gt; argument is optional but recommended as it will start the session without any modules loaded, thus mimicking more closely what happens when you submit a job script.&lt;br /&gt;
&lt;br /&gt;
Finally, if your debugjob process takes more than 1 hour, you can request an interactive job from the regular queue using the salloc command.  Note, however, that this may take some time to run, since it will be part of the regular queue, and will be run when the scheduler decides.&lt;br /&gt;
 nia-login07:~$ salloc --nodes N --time=M:00:00 --x11&lt;br /&gt;
where N is again the number of nodes, and M is the number of hours you wish the job to run.&lt;br /&gt;
The &amp;lt;tt&amp;gt;--x11&amp;lt;/tt&amp;gt; is required if you need to use graphics while testing your code through salloc, e.g. when using a debugger such as [[Parallel Debugging with DDT|DDT]] or DDD, See the [[Testing_With_Graphics | Testing with graphics]] page for the options in that case.&lt;br /&gt;
&lt;br /&gt;
= Submitting jobs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Progressive approach to run jobs on niagara == --&amp;gt;&lt;br /&gt;
&amp;lt;!-- We would like to emphasize the need for users to adopt a more progressive and explicit approach for testing, running and scaling up of jobs on niagara. [[Progressive_Approach | '''Here is a set of steps we suggest that you follow.''']] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have compiled and tested your code or workflow on the Niagara login nodes, and confirmed that it behaves correctly, you are ready to submit jobs to the cluster.  Your jobs will run on some of Niagara's 1548 compute nodes.  When and where your job runs is determined by the scheduler.&lt;br /&gt;
&lt;br /&gt;
Niagara uses SLURM as its job scheduler.  More-advanced details of how to interact with the scheduler can be found on the [[Slurm | Slurm page]].&lt;br /&gt;
&lt;br /&gt;
You submit jobs from a login node by passing a script to the sbatch command:&lt;br /&gt;
&lt;br /&gt;
 nia-login07:scratch$ sbatch jobscript.sh&lt;br /&gt;
&lt;br /&gt;
This puts the job in the queue. It will run on the compute nodes in due course.  Note that you must submit your job from a login node.  You cannot submit jobs from the datamover nodes.&lt;br /&gt;
&lt;br /&gt;
In most cases, you should not submit from your $HOME directory, but rather, from your $SCRATCH directory, so that the output of your compute job can be written out (as mentioned above, $HOME is read-only on the compute nodes).&lt;br /&gt;
&lt;br /&gt;
Jobs will run under your group's RRG allocation, or, if the your group has none, under a RAS allocation (previously called `default' allocation).&lt;br /&gt;
&lt;br /&gt;
Some example job scripts can be found below.&lt;br /&gt;
&lt;br /&gt;
Keep in mind:&lt;br /&gt;
* Scheduling is by node, so in multiples of 40 cores.&lt;br /&gt;
* Your job's maximum walltime is 24 hours. &lt;br /&gt;
* Jobs must write their output to your scratch or project directory (home is read-only on compute nodes).&lt;br /&gt;
* Compute nodes have no internet access.&lt;br /&gt;
* Your job script will not remember the modules you have loaded, so it needs to contain &amp;quot;module load&amp;quot; commands of all the required modules (see examples below). &lt;br /&gt;
* [[Data_Management#Moving_data | Move your data]] to Niagara before you submit your job.&lt;br /&gt;
&lt;br /&gt;
== Scheduling by Node ==&lt;br /&gt;
&lt;br /&gt;
On many systems that use SLURM, the scheduler will deduce from the specifications of the number of tasks and the number of cpus-per-node what resources should be allocated.  On Niagara things are a bit different.&lt;br /&gt;
* All job resource requests on Niagara are scheduled as a multiple of '''nodes'''.&lt;br /&gt;
* The nodes that your jobs run on are exclusively yours, for as long as the job is running on them.&lt;br /&gt;
** No other users are running anything on them.&lt;br /&gt;
** You can [[SSH]] into them to see how things are going.&lt;br /&gt;
* Whatever your requests to the scheduler, it will always be translated into a multiple of nodes allocated to your job.&lt;br /&gt;
* Memory requests to the scheduler are of no use. Your job always gets N x 202GB of RAM, where N is the number of nodes and 202GB is the amount of memory on the node.&lt;br /&gt;
* If you run serial jobs you must still use all 40 cores on the node.  Visit the [[Running_Serial_Jobs_on_Niagara | serial jobs]] page for examples of how to do this.&lt;br /&gt;
* Since there are 40 cores per node, your job should use N x 40 cores. If you do not, we will contact you to help you optimize your workflow.  Or you can [mailto:support@scinet.utoronto.ca contact us] to get assistance.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
There are limits to the size and duration of your jobs, the number of jobs you can run and the number of jobs you can have queued.  It matters whether a user is part of a group with a [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions/ Resources for Research Group allocation] or not. It also matters in which 'partition' the job runs. 'Partitions' are SLURM-speak for use cases.  You specify the partition with the &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;sbatch&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;salloc&amp;lt;/tt&amp;gt;, but if you do not specify one, your job will run in the &amp;lt;tt&amp;gt;compute&amp;lt;/tt&amp;gt; partition, which is the most common case. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Usage&lt;br /&gt;
!Partition&lt;br /&gt;
!Limit on Running jobs&lt;br /&gt;
!Limit on Submitted jobs (incl. running)&lt;br /&gt;
!Min. size of jobs&lt;br /&gt;
!Max. size of jobs&lt;br /&gt;
!Min. walltime&lt;br /&gt;
!Max. walltime &lt;br /&gt;
|-&lt;br /&gt;
|Compute jobs ||compute || 50 || 1000 || 1 node (40&amp;amp;nbsp;cores) || default:&amp;amp;nbsp;20&amp;amp;nbsp;nodes&amp;amp;nbsp;(800&amp;amp;nbsp;cores) &amp;lt;br&amp;gt; with&amp;amp;nbsp;allocation:&amp;amp;nbsp;1000&amp;amp;nbsp;nodes&amp;amp;nbsp;(40000&amp;amp;nbsp;cores)|| 15 minutes || 24 hours&lt;br /&gt;
|-&lt;br /&gt;
|Testing or troubleshooting || debug || 1 || 1 || 1 node (40&amp;amp;nbsp;cores) || 4 nodes (160 cores)|| N/A || 1 hour&lt;br /&gt;
|-&lt;br /&gt;
|Archiving or retrieving data in [[HPSS]]|| archivelong || 2 per user (5 in total) || 10 per user || N/A || N/A|| 15 minutes || 72 hours&lt;br /&gt;
|-&lt;br /&gt;
|Inspecting archived data, small archival actions in [[HPSS]] || archiveshort vfsshort || 2 per user|| 10 per user || N/A || N/A || 15 minutes || 1 hour&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Even if you respect these limits, your jobs will still have to wait in the queue.  The waiting time depends on many factors such as your group's allocation amount, how much allocation has been used in the recent past, the number of requested nodes and walltime, and how many other jobs are waiting in the queue.&lt;br /&gt;
&lt;br /&gt;
== File Input/Output Tips ==&lt;br /&gt;
&lt;br /&gt;
It is important to understand the file systems, so as to perform your file I/O (Input/Output) responsibly.  Refer to the [[Data_Management | Data Management]] page for details about the file systems.&lt;br /&gt;
* Your files can be seen on all Niagara login and compute nodes.&lt;br /&gt;
* $HOME, $SCRATCH, and $PROJECT all use the parallel file system called GPFS.&lt;br /&gt;
* GPFS is a high-performance file system which provides rapid reads and writes to large data sets in parallel from many nodes.&lt;br /&gt;
* Accessing data sets which consist of many, small files leads to poor performance on GPFS.&lt;br /&gt;
* Avoid reading and writing lots of small amounts of data to disk.  Many small files on the system waste space and are slower to access, read and write.  If you must write many small files, use [[User_Ramdisk | ramdisk]].&lt;br /&gt;
* Write data out in a binary format. This is faster and takes less space.&lt;br /&gt;
* The [[Burst Buffer]] is another option for I/O heavy-jobs and for speeding up [[Checkpoints|checkpoints]].&lt;br /&gt;
&lt;br /&gt;
== Example submission script (MPI) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;#!/bin/bash &lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=40&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
#SBATCH --job-name=mpi_job&lt;br /&gt;
#SBATCH --output=mpi_output_%j.txt&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
&lt;br /&gt;
cd $SLURM_SUBMIT_DIR&lt;br /&gt;
&lt;br /&gt;
module load NiaEnv/2019b&lt;br /&gt;
module load intel/2019u4&lt;br /&gt;
module load openmpi/4.0.1&lt;br /&gt;
&lt;br /&gt;
mpirun ./mpi_example&lt;br /&gt;
# or &amp;quot;srun ./mpi_example&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Submit this script from your scratch directory with the command:&lt;br /&gt;
&lt;br /&gt;
    nia-login07:scratch$ sbatch mpi_job.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;First line indicates that this is a bash script.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lines starting with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; go to SLURM.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;sbatch reads these lines as a job request (which it gives the name &amp;lt;code&amp;gt;mpi_job&amp;lt;/code&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In this case, SLURM looks for 2 nodes each running 40 tasks (for a total of 80 tasks), for 1 hour&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note that the mpifun flag &amp;quot;--ppn&amp;quot; (processors per node) is ignored.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Once it found such a node, it runs the script:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change to the submission directory;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Loads modules;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Runs the &amp;lt;code&amp;gt;mpi_example&amp;lt;/code&amp;gt; application (SLURM will inform mpirun or srun on how many processes to run).&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To use hyperthreading, just change &amp;lt;code&amp;gt;--ntasks-per-node=40&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;--ntasks-per-node=80&amp;lt;/code&amp;gt;, and add &amp;lt;code&amp;gt;--bind-to none&amp;lt;/code&amp;gt; to the mpirun command (the latter is necessary for OpenMPI only, not when using IntelMPI).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example submission script (OpenMP) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --cpus-per-task=40&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
#SBATCH --job-name=openmp_job&lt;br /&gt;
#SBATCH --output=openmp_output_%j.txt&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
&lt;br /&gt;
cd $SLURM_SUBMIT_DIR&lt;br /&gt;
&lt;br /&gt;
module load NiaEnv/2019b&lt;br /&gt;
module load intel/2019u4&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
./openmp_example&lt;br /&gt;
# or &amp;quot;srun ./openmp_example&amp;quot;.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Submit this script from your scratch directory with the command:&lt;br /&gt;
&lt;br /&gt;
    nia-login07:~$ sbatch openmp_job.sh&lt;br /&gt;
&lt;br /&gt;
* First line indicates that this is a bash script.&lt;br /&gt;
* Lines starting with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; go to SLURM.&lt;br /&gt;
* sbatch reads these lines as a job request (which it gives the name &amp;lt;code&amp;gt;openmp_job&amp;lt;/code&amp;gt;) .&lt;br /&gt;
* In this case, SLURM looks for one node with 40 cores to be run inside one task, for 1 hour.&lt;br /&gt;
* Once it found such a node, it runs the script:&lt;br /&gt;
** Change to the submission directory;&lt;br /&gt;
** Loads modules;&lt;br /&gt;
** Sets an environment variable;&lt;br /&gt;
** Runs the &amp;lt;code&amp;gt;openmp_example&amp;lt;/code&amp;gt; application.&lt;br /&gt;
* To use hyperthreading, just change &amp;lt;code&amp;gt;--cpus-per-task=40&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;--cpus-per-task=80&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Monitoring queued jobs ==&lt;br /&gt;
&lt;br /&gt;
Once the job is incorporated into the queue, there are some commands you can use to monitor its progress.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sqc&amp;lt;/code&amp;gt; (a caching version of squeue) to show the job queue (&amp;lt;code&amp;gt;squeue -u $USER&amp;lt;/code&amp;gt; for just your jobs);&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;squeue -j JOBID&amp;lt;/code&amp;gt; to get information on a specific job&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;(alternatively, &amp;lt;code&amp;gt;scontrol show job JOBID&amp;lt;/code&amp;gt;, which is more verbose).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;squeue --start -j JOBID&amp;lt;/code&amp;gt; to get an estimate for when a job will run; these tend not to be very accurate predictions.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;scancel -i JOBID&amp;lt;/code&amp;gt; to cancel the job.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;jobperf JOBID&amp;lt;/code&amp;gt; to get an instantaneous view of the cpu and memory usage of the nodes of the job while it is running.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; to get information on your recent jobs.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further instructions for monitoring your jobs can be found on the [[Slurm#Monitoring_jobs | Slurm page]].  The [https://my.scinet.utoronto.ca my.SciNet] site is also a very useful tool for monitoring your current and past usage.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
Information about how to use visualization tools on Niagara is available on [[Visualization]] page.&lt;br /&gt;
&lt;br /&gt;
= Support =&lt;br /&gt;
&lt;br /&gt;
* [mailto:support@scinet.utoronto.ca support@scinet.utoronto.ca]&lt;br /&gt;
* [mailto:niagara@computecanada.ca niagara@computecanada.ca]&lt;/div&gt;</summary>
		<author><name>Gauriaur</name></author>
	</entry>
	<entry>
		<id>https://docs.scinet.utoronto.ca/index.php?title=Niagara_Quickstart&amp;diff=3509</id>
		<title>Niagara Quickstart</title>
		<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php?title=Niagara_Quickstart&amp;diff=3509"/>
		<updated>2022-02-01T19:17:49Z</updated>

		<summary type="html">&lt;p&gt;Gauriaur: /* Logging in */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:Niagara.jpg|center|300px|thumb]]&lt;br /&gt;
|name=Niagara&lt;br /&gt;
|installed=Jan 2018/March 2020&lt;br /&gt;
|operatingsystem= CentOS 7.6 &lt;br /&gt;
|loginnode= niagara.scinet.utoronto.ca&lt;br /&gt;
|nnodes=  2,024 nodes (80,960 cores)&lt;br /&gt;
|rampernode=188 GiB / 202 GB  &lt;br /&gt;
|corespernode=40 (80 hyperthreads)&lt;br /&gt;
|interconnect=Mellanox Dragonfly+&lt;br /&gt;
|vendorcompilers= icc (C) ifort (fortran) icpc (C++)&lt;br /&gt;
|queuetype=Slurm&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Specifications=&lt;br /&gt;
&lt;br /&gt;
The Niagara cluster is a large cluster of 2,024 Lenovo SD530 servers each with 40 Intel &amp;quot;Skylake&amp;quot; at 2.4 GHz or 40 Intel &amp;quot;CascadeLake&amp;quot; cores at 2.5 GHz. &lt;br /&gt;
The peak performance of the cluster is about 3.6 PFlops (6.25 PFlops theoretical).  It was the 53rd fastest supercomputer on the [https://www.top500.org/list/2018/06/?page=1 TOP500 list of June 2018], and is at number 113 on the [https://www.top500.org/lists/top500/list/2021/06/ current list (June 2021)]. &lt;br /&gt;
&lt;br /&gt;
Each node of the cluster has 188 GiB / 202 GB RAM per node (at least 4 GiB/core for user jobs).  Being designed for large parallel workloads, it has a fast interconnect consisting of EDR InfiniBand in a Dragonfly+ topology with Adaptive Routing.  The compute nodes are accessed through a queueing system that allows jobs with a minimum of 15 minutes and a maximum of 24 hours and favours large jobs.&lt;br /&gt;
&lt;br /&gt;
* See the [https://www.youtube.com/watch?v=l-E2CFGh0BE&amp;amp;feature=youtu.be  &amp;quot;Intro to Niagara&amp;quot;] recording&lt;br /&gt;
&lt;br /&gt;
More detailed hardware characteristics of the Niagara supercomputer can be found [https://docs.computecanada.ca/wiki/Niagara on this page].&lt;br /&gt;
&lt;br /&gt;
Note: Documentation about the &amp;quot;GPU expansion to Niagara&amp;quot; called &amp;quot;Mist&amp;quot; can be found on [[Mist | its own page]].&lt;br /&gt;
&lt;br /&gt;
= Getting started on Niagara =&lt;br /&gt;
&lt;br /&gt;
Access to Niagara is not enabled automatically for everyone with a Compute Canada account, but anyone with an active Compute Canada account can get their access enabled.&lt;br /&gt;
 &lt;br /&gt;
If you have an active Compute Canada account but you do not have access to Niagara yet (e.g. because you are new to SciNet or belong to a group whose primary PI does not have an allocation as granted in the annual [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions Compute Canada RAC]), go to the [https://ccdb.computecanada.ca/services/opt_in opt-in page on the CCDB site].  After clicking the &amp;quot;Join&amp;quot; button, it usually takes only one or two business days for access to be granted.  &lt;br /&gt;
&lt;br /&gt;
Please read this document carefully.  The [https://docs.scinet.utoronto.ca/index.php/FAQ FAQ] is also a useful resource.  If at any time you require assistance, or if something is unclear, please do not hesitate to [mailto:support@scinet.utoronto.ca contact us].&lt;br /&gt;
&lt;br /&gt;
== Logging in ==&lt;br /&gt;
&lt;br /&gt;
Niagara runs CentOS 7, which is a type of Linux.  You will need to be familiar with Linux systems to work on Niagara.  If you are not it will be worth your time to review our [https://support.scinet.utoronto.ca/education/browse.php?category=-1&amp;amp;search=scmp101&amp;amp;include=all&amp;amp;filter=Filter Introduction to Linux Shell] class.&lt;br /&gt;
&lt;br /&gt;
As with all SciNet and CC (Compute Canada) compute systems, access to Niagara is done via [[SSH]] (secure shell) only.  Open a terminal window (e.g. Connecting with [https://docs.computecanada.ca/wiki/Connecting_with_PuTTY PuTTY] on Windows or Connecting with [https://docs.computecanada.ca/wiki/Connecting_with_MobaXTerm MobaXTerm]), then SSH into the Niagara login nodes with your CC credentials:&lt;br /&gt;
&lt;br /&gt;
 $ ssh -Y MYCCUSERNAME@niagara.scinet.utoronto.ca&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
 $ ssh -Y MYCCUSERNAME@niagara.computecanada.ca&lt;br /&gt;
&lt;br /&gt;
The first time you login to Niagara, please make sure you are actually accessing Niagara by checking if the login node ssh host key fingerprint matches [[SSH_Changes_in_May_2019 | (See here how)]]. This check prevents you from falling victim of [https://en.wikipedia.org/wiki/Man-in-the-middle_attack man-in-the-middle attacks.]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' As of January 22 2022, authentication is only allowed via SSH keys. [https://docs.computecanada.ca/wiki/SSH_Keys Please refer to this page] to generate your SSH key pair and make sure you use them securely.&lt;br /&gt;
&lt;br /&gt;
* The Niagara login nodes are where you develop, edit, compile, prepare and submit jobs.&lt;br /&gt;
* These login nodes are not part of the Niagara compute cluster, but have the same architecture, operating system, and software stack.&lt;br /&gt;
* The optional &amp;lt;code&amp;gt;-Y&amp;lt;/code&amp;gt; is needed to open windows from the Niagara command-line onto your local X server.&lt;br /&gt;
* You can only connect 4 times in a 2-minute window to the login nodes. &lt;br /&gt;
* To run on Niagara's compute nodes, you must [[#Submitting_jobs | submit a batch job]].&lt;br /&gt;
&lt;br /&gt;
If you cannot log in, be sure to first check the [https://docs.scinet.utoronto.ca System Status] on this site's front page.&lt;br /&gt;
&lt;br /&gt;
== Your various directories ==&lt;br /&gt;
&lt;br /&gt;
By virtue of your access to Niagara you are granted storage space on the system.  There are several directories available to you, each indicated by an associated environment variable.&lt;br /&gt;
&lt;br /&gt;
=== home and scratch ===&lt;br /&gt;
&lt;br /&gt;
You have a home and scratch directory on the system, the paths to which are stored in the environment variables $HOME and $SCRATCH. The locations are of the form&lt;br /&gt;
&lt;br /&gt;
 $HOME=/home/g/groupname/myccusername&lt;br /&gt;
 $SCRATCH=/scratch/g/groupname/myccusername&lt;br /&gt;
&lt;br /&gt;
where groupname is the name of your PI's group, and myccusername is your CC username.  For example:&lt;br /&gt;
&lt;br /&gt;
  nia-login07:~$ pwd&lt;br /&gt;
  /home/s/scinet/rzon&lt;br /&gt;
  nia-login07:~$ cd $SCRATCH&lt;br /&gt;
  nia-login07:rzon$ pwd&lt;br /&gt;
  /scratch/s/scinet/rzon&lt;br /&gt;
&lt;br /&gt;
NOTE: home is read-only on compute nodes.&lt;br /&gt;
&lt;br /&gt;
=== project and archive/nearline ===&lt;br /&gt;
&lt;br /&gt;
Users from groups with [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions RAC storage allocation] will also have a project directory and possible an archive (a.k.a. &amp;quot;nearline&amp;quot;) directory, the paths to which are stored in the environment variables $PROJECT and $ARCHIVE. They follow the naming convention:&lt;br /&gt;
&lt;br /&gt;
 $PROJECT=/project/g/groupname/myccusername&lt;br /&gt;
 $ARCHIVE=/archive/g/groupname/myccusername&lt;br /&gt;
&lt;br /&gt;
NOTE: Currently archive space is available only via [[HPSS]], and is not accessible on the Niagara login, compute, or datamover nodes.&lt;br /&gt;
&lt;br /&gt;
'''''IMPORTANT: Future-proof your scripts'''''&lt;br /&gt;
&lt;br /&gt;
When writing your scripts, use the environment variables (&amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$PROJECT&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;$ARCHIVE&amp;lt;/tt&amp;gt;) instead of the actual paths!  The paths may change in the future.&lt;br /&gt;
&lt;br /&gt;
=== Storage and quotas ===&lt;br /&gt;
&lt;br /&gt;
You should familiarize yourself with the [[Data_Management#Purpose_of_each_file_system | various file systems]], what purpose they serve, and how to properly use them.  This table summarizes the various file systems.  See the [[Data_Management | Data Management]] page for more details.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! location&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;| quota&lt;br /&gt;
!align=&amp;quot;right&amp;quot;| block size&lt;br /&gt;
! expiration time&lt;br /&gt;
! backed up&lt;br /&gt;
! on login nodes&lt;br /&gt;
! on compute nodes&lt;br /&gt;
|-&lt;br /&gt;
| $HOME&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| 100 GB / 250,000 files per user&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 1 MB&lt;br /&gt;
| &lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
| read-only&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| $SCRATCH&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| 25 TB / 6,000,000 file per user&lt;br /&gt;
|align=&amp;quot;right&amp;quot; rowspan=&amp;quot;2&amp;quot; | 16 MB&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| 2 months&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| no&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| yes&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;| yes&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|50-500TB per group&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|[[Data_Management#Quotas_and_purging | depending on group size]]&lt;br /&gt;
|-&lt;br /&gt;
| $PROJECT&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| by group allocation&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 16 MB&lt;br /&gt;
| &lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
|-&lt;br /&gt;
| $ARCHIVE&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| by group (nearline) allocation&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| &lt;br /&gt;
|&lt;br /&gt;
| dual-copy&lt;br /&gt;
| no&lt;br /&gt;
| no&lt;br /&gt;
|-&lt;br /&gt;
| $BBUFFER&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;| 10 TB per user&lt;br /&gt;
|align=&amp;quot;right&amp;quot;| 1 MB&lt;br /&gt;
| very short&lt;br /&gt;
| no&lt;br /&gt;
| yes&lt;br /&gt;
| yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Moving data to Niagara ===&lt;br /&gt;
&lt;br /&gt;
If you need to move data to Niagara for analysis, or when you need to move data off of Niagara, use the following guidelines:&lt;br /&gt;
* If your data is less than 10GB, move the data using the login nodes.&lt;br /&gt;
* If your data is greater than 10GB, move the data using the datamover nodes nia-datamover1.scinet.utoronto.ca and nia-datamover2.scinet.utoronto.ca .&lt;br /&gt;
&lt;br /&gt;
Details of how to use the datamover nodes can be found on the [[Data_Management#Moving_data | Data Management ]] page.&lt;br /&gt;
&lt;br /&gt;
= Loading software modules =&lt;br /&gt;
&lt;br /&gt;
You have two options for running code on Niagara: use existing software, or [[Niagara_Quickstart#Compiling_on_Niagara:_Example | compile your own]].  This section focuses on the former.&lt;br /&gt;
&lt;br /&gt;
Other than essentials, all installed software is made available [[Using_modules | using module commands]]. These modules set environment variables (PATH, etc.), allowing multiple, conflicting versions of a given package to be available.  A detailed explanation of the module system can be [[Using_modules | found on the modules page]].&lt;br /&gt;
&lt;br /&gt;
Common module subcommands are:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;: load the default version of a particular software.&lt;br /&gt;
* &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;/&amp;lt;module-version&amp;gt;&amp;lt;/code&amp;gt;: load a specific version of a particular software.&lt;br /&gt;
* &amp;lt;code&amp;gt;module purge&amp;lt;/code&amp;gt;: unload all currently loaded modules.&lt;br /&gt;
* &amp;lt;code&amp;gt;module spider&amp;lt;/code&amp;gt; (or &amp;lt;code&amp;gt;module spider &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;): list available software packages.&lt;br /&gt;
* &amp;lt;code&amp;gt;module avail&amp;lt;/code&amp;gt;: list loadable software packages.&lt;br /&gt;
* &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt;: list loaded modules.&lt;br /&gt;
&lt;br /&gt;
Along with modifying common environment variables, such as PATH, and LD_LIBRARY_PATH, these modules also create a SCINET_MODULENAME_ROOT environment variable, which can be used to access commonly needed software directories, such as /include and /lib.&lt;br /&gt;
&lt;br /&gt;
There are handy abbreviations for the module commands. &amp;lt;code&amp;gt;ml&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;module list&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;ml &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt; is the same as &amp;lt;code&amp;gt;module load &amp;lt;module-name&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
== Software stacks: NiaEnv and CCEnv ==&lt;br /&gt;
&lt;br /&gt;
On Niagara, there are two available software stacks:&lt;br /&gt;
&lt;br /&gt;
=== NiaEnv ===&lt;br /&gt;
&lt;br /&gt;
A [https://docs.scinet.utoronto.ca/index.php/Modules_specific_to_Niagara Niagara software stack] tuned and compiled for this machine. This stack is available by default, but if not, can be reloaded with&lt;br /&gt;
&amp;lt;pre&amp;gt;module load NiaEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
This loads the default (set of modules), which is currently the 2019b epoch. Before September 1, the default was NiaEnv/2018a. Users are encourage to use the 2019b stack, but to make sure old job scripts or older software installations in your home directory continue to work, you may need to use&lt;br /&gt;
&amp;lt;pre&amp;gt;module load NiaEnv/2018a&amp;lt;/pre&amp;gt;&lt;br /&gt;
You can override the system default for the epoch version by creating a file called &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;.modulerc&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt; in your home directory with the line &amp;lt;b&amp;gt;&amp;lt;tt&amp;gt;module-version NiaEnv/VERSION default&amp;lt;/tt&amp;gt;&amp;lt;/b&amp;gt;, e.g. like so:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;module-version NiaEnv/2019b default&amp;quot; &amp;gt; $HOME/.modulerc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
After this, subsequent logins and jobs will use the 2019b stack even when the system default is different.&lt;br /&gt;
&amp;lt;p&amp;gt;Similarly, you can make an older epoch your personal default, like so&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;module-version NiaEnv/2018a default&amp;quot; &amp;gt; $HOME/.modulerc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No modules are loaded by default on Niagara except NiaEnv.&lt;br /&gt;
&lt;br /&gt;
=== CCEnv ===&lt;br /&gt;
&lt;br /&gt;
The same  [https://docs.computecanada.ca/wiki/Modules 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] can be used on Niagara too, with:&lt;br /&gt;
&amp;lt;pre&amp;gt;module load CCEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
Or, if you want the same default modules loaded as on Béluga, then do&lt;br /&gt;
&amp;lt;pre&amp;gt;module load CCEnv StdEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
or, if you want the same default modules loaded as on Cedar and Graham, do&lt;br /&gt;
&amp;lt;pre&amp;gt;module load CCEnv arch/avx2 StdEnv&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tips for loading software ==&lt;br /&gt;
&lt;br /&gt;
* We advise '''''against''''' loading modules in your .bashrc.  This can lead to very confusing behaviour under certain circumstances.  Our guidelines for .bashrc files can be found [[bashrc guidelines|here]].&lt;br /&gt;
* Instead, load modules by hand when needed, or by sourcing a separate script.&lt;br /&gt;
* Load run-specific modules inside your job submission script.&lt;br /&gt;
* Short names give default versions; e.g. &amp;lt;code&amp;gt;intel&amp;lt;/code&amp;gt; → &amp;lt;code&amp;gt;intel/2018.2&amp;lt;/code&amp;gt;. It is usually better to be explicit about the versions, for future reproducibility.&lt;br /&gt;
* Modules often require other modules to be loaded first.  Solve these dependencies by using [[Using_modules#Module_spider | &amp;lt;code&amp;gt;module spider&amp;lt;/code&amp;gt;]].&lt;br /&gt;
&lt;br /&gt;
= Available compilers and interpreters =&lt;br /&gt;
&lt;br /&gt;
* For most compiled software, one should use the Intel compilers (&amp;lt;tt&amp;gt;icc&amp;lt;/tt&amp;gt; for C, &amp;lt;tt&amp;gt;icpc&amp;lt;/tt&amp;gt; for C++, and &amp;lt;tt&amp;gt;ifort&amp;lt;/tt&amp;gt; for Fortran). Loading an &amp;lt;tt&amp;gt;intel&amp;lt;/tt&amp;gt; module makes these available. &lt;br /&gt;
* The GNU compiler suite (&amp;lt;tt&amp;gt;gcc, g++, gfortran&amp;lt;/tt&amp;gt;) is also available, if you load one of the &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt; modules.&lt;br /&gt;
* To compile mpi code, you must additionally load an &amp;lt;tt&amp;gt;openmpi&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;intelmpi&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
* Open source interpreted, interactive software is also available:&lt;br /&gt;
** [[Python]]&lt;br /&gt;
** [[R]]&lt;br /&gt;
** Julia&lt;br /&gt;
** [[Octave]]&lt;br /&gt;
  &lt;br /&gt;
Please visit the corresponding page for details on using these tools.  For information on running MATLAB applications on Niagara, visit [[MATLAB| this page]].&lt;br /&gt;
&lt;br /&gt;
= Using Commercial Software =&lt;br /&gt;
&lt;br /&gt;
May I use commercial software on Niagara?&lt;br /&gt;
* Possibly, but you have to bring your own license for it.  You can connect to an external license server using [[SSH_Tunneling | ssh tunneling]].&lt;br /&gt;
* 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.&lt;br /&gt;
* Thus, the only freely available commercial software installed on Niagara is software that can benefit everyone: Compilers, math libraries and debuggers.&lt;br /&gt;
* That means no [[MATLAB]], Gaussian, IDL, &lt;br /&gt;
* Open source alternatives like Octave, [[Python]], and [[R]] are available.&lt;br /&gt;
* We are happy to help you to install commercial software for which you have a license.&lt;br /&gt;
* In some cases, if you have a license, you can use software in the Compute Canada stack.&lt;br /&gt;
The list of commercial software which is installed on Niagara, for which you will need a license to use, can be found on the [[Commercial_software | commercial software page]].&lt;br /&gt;
&lt;br /&gt;
= Compiling on Niagara: Example =&lt;br /&gt;
&lt;br /&gt;
Suppose one wants to compile an application from two c source files, appl.c and module.c, which use the Math Kernel Library. This is an example of how this would be done:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nia-login07:~$ module load NiaEnv/2019b&lt;br /&gt;
nia-login07:~$ module list&lt;br /&gt;
Currently Loaded Modules:&lt;br /&gt;
  1) NiaEnv/2019b (S)&lt;br /&gt;
  Where:&lt;br /&gt;
   S:  Module is Sticky, requires --force to unload or purge&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ module load intel/2019u4&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ ls&lt;br /&gt;
appl.c module.c&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ icc -c -O3 -xHost -o appl.o appl.c&lt;br /&gt;
nia-login07:~$ icc -c -O3 -xHost -o module.o module.c&lt;br /&gt;
nia-login07:~$ icc  -o appl module.o appl.o -mkl&lt;br /&gt;
&lt;br /&gt;
nia-login07:~$ ./appl&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Note:&lt;br /&gt;
* The optimization flags -O3 -xHost allow the Intel compiler to use instructions specific to the architecture CPU that is present (instead of for more generic x86_64 CPUs).&lt;br /&gt;
* Linking with the Intel Math Kernel Library (MKL) is easy when using the intel compiler, it just requires the -mkl flags.&lt;br /&gt;
* If compiling with gcc, the optimization flags would be -O3 -march=native. For the way to link with the MKL, it is suggested to use the [https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor MKL link line advisor].&lt;br /&gt;
&lt;br /&gt;
= Testing and Debugging =&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
* Small test jobs can be run on the login nodes.  Rule of thumb: tests should run no more than a couple of minutes, taking at most about 1-2GB of memory, and use no more than a couple of cores.&lt;br /&gt;
* You can run the [[Parallel Debugging with DDT|DDT]] debugger on the login nodes after &amp;lt;code&amp;gt;module load ddt&amp;lt;/code&amp;gt;.&lt;br /&gt;
* Short tests that do not fit on a login node, or for which you need a dedicated node, request an interactive debug job with the debug command:&lt;br /&gt;
 nia-login07:~$ debugjob --clean N&lt;br /&gt;
where N is the number of nodes, If N=1, this gives an interactive session one 1 hour, when N=4 (the maximum), it gives you 22 minutes.  The &amp;lt;tt&amp;gt;--clean&amp;lt;/tt&amp;gt; argument is optional but recommended as it will start the session without any modules loaded, thus mimicking more closely what happens when you submit a job script.&lt;br /&gt;
&lt;br /&gt;
Finally, if your debugjob process takes more than 1 hour, you can request an interactive job from the regular queue using the salloc command.  Note, however, that this may take some time to run, since it will be part of the regular queue, and will be run when the scheduler decides.&lt;br /&gt;
 nia-login07:~$ salloc --nodes N --time=M:00:00 --x11&lt;br /&gt;
where N is again the number of nodes, and M is the number of hours you wish the job to run.&lt;br /&gt;
The &amp;lt;tt&amp;gt;--x11&amp;lt;/tt&amp;gt; is required if you need to use graphics while testing your code through salloc, e.g. when using a debugger such as [[Parallel Debugging with DDT|DDT]] or DDD, See the [[Testing_With_Graphics | Testing with graphics]] page for the options in that case.&lt;br /&gt;
&lt;br /&gt;
= Submitting jobs =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == Progressive approach to run jobs on niagara == --&amp;gt;&lt;br /&gt;
&amp;lt;!-- We would like to emphasize the need for users to adopt a more progressive and explicit approach for testing, running and scaling up of jobs on niagara. [[Progressive_Approach | '''Here is a set of steps we suggest that you follow.''']] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once you have compiled and tested your code or workflow on the Niagara login nodes, and confirmed that it behaves correctly, you are ready to submit jobs to the cluster.  Your jobs will run on some of Niagara's 1548 compute nodes.  When and where your job runs is determined by the scheduler.&lt;br /&gt;
&lt;br /&gt;
Niagara uses SLURM as its job scheduler.  More-advanced details of how to interact with the scheduler can be found on the [[Slurm | Slurm page]].&lt;br /&gt;
&lt;br /&gt;
You submit jobs from a login node by passing a script to the sbatch command:&lt;br /&gt;
&lt;br /&gt;
 nia-login07:scratch$ sbatch jobscript.sh&lt;br /&gt;
&lt;br /&gt;
This puts the job in the queue. It will run on the compute nodes in due course.  Note that you must submit your job from a login node.  You cannot submit jobs from the datamover nodes.&lt;br /&gt;
&lt;br /&gt;
In most cases, you should not submit from your $HOME directory, but rather, from your $SCRATCH directory, so that the output of your compute job can be written out (as mentioned above, $HOME is read-only on the compute nodes).&lt;br /&gt;
&lt;br /&gt;
Jobs will run under your group's RRG allocation, or, if the your group has none, under a RAS allocation (previously called `default' allocation).&lt;br /&gt;
&lt;br /&gt;
Some example job scripts can be found below.&lt;br /&gt;
&lt;br /&gt;
Keep in mind:&lt;br /&gt;
* Scheduling is by node, so in multiples of 40 cores.&lt;br /&gt;
* Your job's maximum walltime is 24 hours. &lt;br /&gt;
* Jobs must write their output to your scratch or project directory (home is read-only on compute nodes).&lt;br /&gt;
* Compute nodes have no internet access.&lt;br /&gt;
* Your job script will not remember the modules you have loaded, so it needs to contain &amp;quot;module load&amp;quot; commands of all the required modules (see examples below). &lt;br /&gt;
* [[Data_Management#Moving_data | Move your data]] to Niagara before you submit your job.&lt;br /&gt;
&lt;br /&gt;
== Scheduling by Node ==&lt;br /&gt;
&lt;br /&gt;
On many systems that use SLURM, the scheduler will deduce from the specifications of the number of tasks and the number of cpus-per-node what resources should be allocated.  On Niagara things are a bit different.&lt;br /&gt;
* All job resource requests on Niagara are scheduled as a multiple of '''nodes'''.&lt;br /&gt;
* The nodes that your jobs run on are exclusively yours, for as long as the job is running on them.&lt;br /&gt;
** No other users are running anything on them.&lt;br /&gt;
** You can [[SSH]] into them to see how things are going.&lt;br /&gt;
* Whatever your requests to the scheduler, it will always be translated into a multiple of nodes allocated to your job.&lt;br /&gt;
* Memory requests to the scheduler are of no use. Your job always gets N x 202GB of RAM, where N is the number of nodes and 202GB is the amount of memory on the node.&lt;br /&gt;
* If you run serial jobs you must still use all 40 cores on the node.  Visit the [[Running_Serial_Jobs_on_Niagara | serial jobs]] page for examples of how to do this.&lt;br /&gt;
* Since there are 40 cores per node, your job should use N x 40 cores. If you do not, we will contact you to help you optimize your workflow.  Or you can [mailto:support@scinet.utoronto.ca contact us] to get assistance.&lt;br /&gt;
&lt;br /&gt;
== Limits ==&lt;br /&gt;
&lt;br /&gt;
There are limits to the size and duration of your jobs, the number of jobs you can run and the number of jobs you can have queued.  It matters whether a user is part of a group with a [https://www.computecanada.ca/research-portal/accessing-resources/resource-allocation-competitions/ Resources for Research Group allocation] or not. It also matters in which 'partition' the job runs. 'Partitions' are SLURM-speak for use cases.  You specify the partition with the &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt; parameter to &amp;lt;tt&amp;gt;sbatch&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;salloc&amp;lt;/tt&amp;gt;, but if you do not specify one, your job will run in the &amp;lt;tt&amp;gt;compute&amp;lt;/tt&amp;gt; partition, which is the most common case. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Usage&lt;br /&gt;
!Partition&lt;br /&gt;
!Limit on Running jobs&lt;br /&gt;
!Limit on Submitted jobs (incl. running)&lt;br /&gt;
!Min. size of jobs&lt;br /&gt;
!Max. size of jobs&lt;br /&gt;
!Min. walltime&lt;br /&gt;
!Max. walltime &lt;br /&gt;
|-&lt;br /&gt;
|Compute jobs ||compute || 50 || 1000 || 1 node (40&amp;amp;nbsp;cores) || default:&amp;amp;nbsp;20&amp;amp;nbsp;nodes&amp;amp;nbsp;(800&amp;amp;nbsp;cores) &amp;lt;br&amp;gt; with&amp;amp;nbsp;allocation:&amp;amp;nbsp;1000&amp;amp;nbsp;nodes&amp;amp;nbsp;(40000&amp;amp;nbsp;cores)|| 15 minutes || 24 hours&lt;br /&gt;
|-&lt;br /&gt;
|Testing or troubleshooting || debug || 1 || 1 || 1 node (40&amp;amp;nbsp;cores) || 4 nodes (160 cores)|| N/A || 1 hour&lt;br /&gt;
|-&lt;br /&gt;
|Archiving or retrieving data in [[HPSS]]|| archivelong || 2 per user (5 in total) || 10 per user || N/A || N/A|| 15 minutes || 72 hours&lt;br /&gt;
|-&lt;br /&gt;
|Inspecting archived data, small archival actions in [[HPSS]] || archiveshort vfsshort || 2 per user|| 10 per user || N/A || N/A || 15 minutes || 1 hour&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Even if you respect these limits, your jobs will still have to wait in the queue.  The waiting time depends on many factors such as your group's allocation amount, how much allocation has been used in the recent past, the number of requested nodes and walltime, and how many other jobs are waiting in the queue.&lt;br /&gt;
&lt;br /&gt;
== File Input/Output Tips ==&lt;br /&gt;
&lt;br /&gt;
It is important to understand the file systems, so as to perform your file I/O (Input/Output) responsibly.  Refer to the [[Data_Management | Data Management]] page for details about the file systems.&lt;br /&gt;
* Your files can be seen on all Niagara login and compute nodes.&lt;br /&gt;
* $HOME, $SCRATCH, and $PROJECT all use the parallel file system called GPFS.&lt;br /&gt;
* GPFS is a high-performance file system which provides rapid reads and writes to large data sets in parallel from many nodes.&lt;br /&gt;
* Accessing data sets which consist of many, small files leads to poor performance on GPFS.&lt;br /&gt;
* Avoid reading and writing lots of small amounts of data to disk.  Many small files on the system waste space and are slower to access, read and write.  If you must write many small files, use [[User_Ramdisk | ramdisk]].&lt;br /&gt;
* Write data out in a binary format. This is faster and takes less space.&lt;br /&gt;
* The [[Burst Buffer]] is another option for I/O heavy-jobs and for speeding up [[Checkpoints|checkpoints]].&lt;br /&gt;
&lt;br /&gt;
== Example submission script (MPI) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;#!/bin/bash &lt;br /&gt;
#SBATCH --nodes=2&lt;br /&gt;
#SBATCH --ntasks-per-node=40&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
#SBATCH --job-name=mpi_job&lt;br /&gt;
#SBATCH --output=mpi_output_%j.txt&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
&lt;br /&gt;
cd $SLURM_SUBMIT_DIR&lt;br /&gt;
&lt;br /&gt;
module load NiaEnv/2019b&lt;br /&gt;
module load intel/2019u4&lt;br /&gt;
module load openmpi/4.0.1&lt;br /&gt;
&lt;br /&gt;
mpirun ./mpi_example&lt;br /&gt;
# or &amp;quot;srun ./mpi_example&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Submit this script from your scratch directory with the command:&lt;br /&gt;
&lt;br /&gt;
    nia-login07:scratch$ sbatch mpi_job.sh&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;First line indicates that this is a bash script.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Lines starting with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; go to SLURM.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;sbatch reads these lines as a job request (which it gives the name &amp;lt;code&amp;gt;mpi_job&amp;lt;/code&amp;gt;)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;In this case, SLURM looks for 2 nodes each running 40 tasks (for a total of 80 tasks), for 1 hour&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note that the mpifun flag &amp;quot;--ppn&amp;quot; (processors per node) is ignored.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Once it found such a node, it runs the script:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Change to the submission directory;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Loads modules;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Runs the &amp;lt;code&amp;gt;mpi_example&amp;lt;/code&amp;gt; application (SLURM will inform mpirun or srun on how many processes to run).&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To use hyperthreading, just change &amp;lt;code&amp;gt;--ntasks-per-node=40&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;--ntasks-per-node=80&amp;lt;/code&amp;gt;, and add &amp;lt;code&amp;gt;--bind-to none&amp;lt;/code&amp;gt; to the mpirun command (the latter is necessary for OpenMPI only, not when using IntelMPI).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Example submission script (OpenMP) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;#!/bin/bash&lt;br /&gt;
#SBATCH --nodes=1&lt;br /&gt;
#SBATCH --cpus-per-task=40&lt;br /&gt;
#SBATCH --time=1:00:00&lt;br /&gt;
#SBATCH --job-name=openmp_job&lt;br /&gt;
#SBATCH --output=openmp_output_%j.txt&lt;br /&gt;
#SBATCH --mail-type=FAIL&lt;br /&gt;
&lt;br /&gt;
cd $SLURM_SUBMIT_DIR&lt;br /&gt;
&lt;br /&gt;
module load NiaEnv/2019b&lt;br /&gt;
module load intel/2019u4&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=$SLURM_CPUS_PER_TASK&lt;br /&gt;
&lt;br /&gt;
./openmp_example&lt;br /&gt;
# or &amp;quot;srun ./openmp_example&amp;quot;.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Submit this script from your scratch directory with the command:&lt;br /&gt;
&lt;br /&gt;
    nia-login07:~$ sbatch openmp_job.sh&lt;br /&gt;
&lt;br /&gt;
* First line indicates that this is a bash script.&lt;br /&gt;
* Lines starting with &amp;lt;code&amp;gt;#SBATCH&amp;lt;/code&amp;gt; go to SLURM.&lt;br /&gt;
* sbatch reads these lines as a job request (which it gives the name &amp;lt;code&amp;gt;openmp_job&amp;lt;/code&amp;gt;) .&lt;br /&gt;
* In this case, SLURM looks for one node with 40 cores to be run inside one task, for 1 hour.&lt;br /&gt;
* Once it found such a node, it runs the script:&lt;br /&gt;
** Change to the submission directory;&lt;br /&gt;
** Loads modules;&lt;br /&gt;
** Sets an environment variable;&lt;br /&gt;
** Runs the &amp;lt;code&amp;gt;openmp_example&amp;lt;/code&amp;gt; application.&lt;br /&gt;
* To use hyperthreading, just change &amp;lt;code&amp;gt;--cpus-per-task=40&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;--cpus-per-task=80&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Monitoring queued jobs ==&lt;br /&gt;
&lt;br /&gt;
Once the job is incorporated into the queue, there are some commands you can use to monitor its progress.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;squeue&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;sqc&amp;lt;/code&amp;gt; (a caching version of squeue) to show the job queue (&amp;lt;code&amp;gt;squeue -u $USER&amp;lt;/code&amp;gt; for just your jobs);&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;squeue -j JOBID&amp;lt;/code&amp;gt; to get information on a specific job&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;(alternatively, &amp;lt;code&amp;gt;scontrol show job JOBID&amp;lt;/code&amp;gt;, which is more verbose).&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;squeue --start -j JOBID&amp;lt;/code&amp;gt; to get an estimate for when a job will run; these tend not to be very accurate predictions.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;scancel -i JOBID&amp;lt;/code&amp;gt; to cancel the job.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;jobperf JOBID&amp;lt;/code&amp;gt; to get an instantaneous view of the cpu and memory usage of the nodes of the job while it is running.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&amp;lt;code&amp;gt;sacct&amp;lt;/code&amp;gt; to get information on your recent jobs.&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Further instructions for monitoring your jobs can be found on the [[Slurm#Monitoring_jobs | Slurm page]].  The [https://my.scinet.utoronto.ca my.SciNet] site is also a very useful tool for monitoring your current and past usage.&lt;br /&gt;
&lt;br /&gt;
= Visualization =&lt;br /&gt;
Information about how to use visualization tools on Niagara is available on [[Visualization]] page.&lt;br /&gt;
&lt;br /&gt;
= Support =&lt;br /&gt;
&lt;br /&gt;
* [mailto:support@scinet.utoronto.ca support@scinet.utoronto.ca]&lt;br /&gt;
* [mailto:niagara@computecanada.ca niagara@computecanada.ca]&lt;/div&gt;</summary>
		<author><name>Gauriaur</name></author>
	</entry>
	<entry>
		<id>https://docs.scinet.utoronto.ca/index.php?title=Main_Page&amp;diff=3353</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php?title=Main_Page&amp;diff=3353"/>
		<updated>2021-12-08T14:31:57Z</updated>

		<summary type="html">&lt;p&gt;Gauriaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;border-spacing:10px; width: 95%&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:1em; padding-top:.1em; border:2px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==System Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Use &amp;quot;Up&amp;quot; or &amp;quot;Down&amp;quot;; these are templates. --&amp;gt;&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; &lt;br /&gt;
|{{Up |Niagara|Niagara_Quickstart}}&lt;br /&gt;
|{{Up |Mist|Mist}}&lt;br /&gt;
|{{Up |Teach|Teach}}&lt;br /&gt;
|{{Up |Rouge|Rouge}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Up |Jupyter Hub|Jupyter_Hub}}&lt;br /&gt;
|{{Up |Scheduler|Niagara_Quickstart#Submitting_jobs}}&lt;br /&gt;
|{{Up |File system|Niagara_Quickstart#Storage_and_quotas}}&lt;br /&gt;
|{{Up |Burst Buffer|Burst_Buffer}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Up|HPSS|HPSS}}&lt;br /&gt;
|{{Up |Login Nodes|Niagara_Quickstart#Logging_in}} &lt;br /&gt;
|{{Up |External Network|Niagara_Quickstart#Logging_in}} &lt;br /&gt;
|{{Up |Globus |Globus}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Current Messages: --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Wed Dec 8 2:30 EST PM 2021&amp;lt;/b&amp;gt; Planned maintenance. Datacenter external connections will be interrupted for approximately 30 minutes. Jobs in the queue will continue to run, and access should return by 3:00 PM EST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Dec 6 9:28 EST AM 2021&amp;lt;/b&amp;gt;A power glitch caused many compute nodes to reboot. Please check your jobs, and in case of failure, resubmit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 22 1:40 EST PM 2021&amp;lt;/b&amp;gt; The Mist login node is back.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 22 12:40 EST PM 2021&amp;lt;/b&amp;gt; The Mist login node is experiencing issues, we are investigating.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Nov 5 19:35 EDT 2021 &amp;lt;/b&amp;gt; The filesystem issue from earlier in the afternoon is resolved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Nov 5 16:58 EDT 2021 &amp;lt;/b&amp;gt; We are experiencing filesystem issues, login to the clusters may not be possible until they are resolved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue Oct 19 noon EDT - Thu Oct 21 noon EDT:&amp;lt;/b&amp;gt; &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Niagara at Scale:&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; Only users of selected projects run at large scale during these 48 hours. Other users can still login and access their files, and submit jobs for after the event.  SOSCIP and Mist users are not affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue Oct 12 14:30 EDT 2021 &amp;lt;/b&amp;gt; Mist login node is back up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue Oct 12 12:30 EDT 2021 &amp;lt;/b&amp;gt; Mist login node is down for maintenance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Sep 27 16:11 EDT 2021 &amp;lt;/b&amp;gt; HPSS is back online.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Wed Sep 23 17:23 EDT 2021 &amp;lt;/b&amp;gt; Systems being brought back online. HPSS may be down for some more days.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  When removing system status entries, please archive them to: https://docs.scinet.utoronto.ca/index.php/Previous_messages --&amp;gt;&lt;br /&gt;
{|style=&amp;quot;border-spacing: 10px;width: 100%&amp;quot;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;margin: 1em; padding:1em; padding-top:.1em; border:2px solid #000; background-color:#fff; border-radius:7px; width: 49.5%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[Niagara Quickstart]]&lt;br /&gt;
* [[HPSS | HPSS archival storage]]&lt;br /&gt;
* [[Mist| Mist Power 9 GPU cluster]]&lt;br /&gt;
* [[Teach|Teach cluster]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging SciNet]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;margin: 1em; padding:1em; padding-top:.1em; border:2px solid #000; background-color:#fff; border-radius:7px; width: 49.5%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials, Manuals, etc. ==&lt;br /&gt;
* [https://education.scinet.utoronto.ca SciNet education material]&lt;br /&gt;
* [https://www.youtube.com/c/SciNetHPCattheUniversityofToronto SciNet's YouTube channel]&lt;br /&gt;
* [[Modules specific to Niagara|Software Modules specific to Niagara]] &lt;br /&gt;
* [[Modules for Mist]] &lt;br /&gt;
* [[Commercial software]]&lt;br /&gt;
* [[Burst Buffer]]&lt;br /&gt;
* [[SSH keys]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
* [[SSH#Two-Factor_authentication|Two-Factor Authentication]]&lt;br /&gt;
* [[Visualization]]&lt;br /&gt;
* [[Running Serial Jobs on Niagara]]&lt;br /&gt;
* [[Jupyter Hub]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gauriaur</name></author>
	</entry>
	<entry>
		<id>https://docs.scinet.utoronto.ca/index.php?title=Main_Page&amp;diff=3352</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php?title=Main_Page&amp;diff=3352"/>
		<updated>2021-12-08T14:31:37Z</updated>

		<summary type="html">&lt;p&gt;Gauriaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| style=&amp;quot;border-spacing:10px; width: 95%&amp;quot;&lt;br /&gt;
| style=&amp;quot;padding:1em; padding-top:.1em; border:2px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
==System Status==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Use &amp;quot;Up&amp;quot; or &amp;quot;Down&amp;quot;; these are templates. --&amp;gt;&lt;br /&gt;
{|style=&amp;quot;width:100%&amp;quot; &lt;br /&gt;
|{{Up |Niagara|Niagara_Quickstart}}&lt;br /&gt;
|{{Up |Mist|Mist}}&lt;br /&gt;
|{{Up |Teach|Teach}}&lt;br /&gt;
|{{Up |Rouge|Rouge}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Up |Jupyter Hub|Jupyter_Hub}}&lt;br /&gt;
|{{Up |Scheduler|Niagara_Quickstart#Submitting_jobs}}&lt;br /&gt;
|{{Up |File system|Niagara_Quickstart#Storage_and_quotas}}&lt;br /&gt;
|{{Up |Burst Buffer|Burst_Buffer}}&lt;br /&gt;
|-&lt;br /&gt;
|{{Up|HPSS|HPSS}}&lt;br /&gt;
|{{Up |Login Nodes|Niagara_Quickstart#Logging_in}} &lt;br /&gt;
|{{Up |External Network|Niagara_Quickstart#Logging_in}} &lt;br /&gt;
|{{Up |Globus |Globus}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Current Messages: --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Wed 8 2:30 EST PM 2021&amp;lt;/b&amp;gt; Planned maintenance. Datacenter external connections will be interrupted for approximately 30 minutes. Jobs in the queue will continue to run, and access should return by 3:00 PM EST.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Dec 6 9:28 EST AM 2021&amp;lt;/b&amp;gt;A power glitch caused many compute nodes to reboot. Please check your jobs, and in case of failure, resubmit.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 22 1:40 EST PM 2021&amp;lt;/b&amp;gt; The Mist login node is back.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 22 12:40 EST PM 2021&amp;lt;/b&amp;gt; The Mist login node is experiencing issues, we are investigating.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Nov 5 19:35 EDT 2021 &amp;lt;/b&amp;gt; The filesystem issue from earlier in the afternoon is resolved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Nov 5 16:58 EDT 2021 &amp;lt;/b&amp;gt; We are experiencing filesystem issues, login to the clusters may not be possible until they are resolved.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue Oct 19 noon EDT - Thu Oct 21 noon EDT:&amp;lt;/b&amp;gt; &amp;lt;b&amp;gt;&amp;lt;i&amp;gt;Niagara at Scale:&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; Only users of selected projects run at large scale during these 48 hours. Other users can still login and access their files, and submit jobs for after the event.  SOSCIP and Mist users are not affected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue Oct 12 14:30 EDT 2021 &amp;lt;/b&amp;gt; Mist login node is back up.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue Oct 12 12:30 EDT 2021 &amp;lt;/b&amp;gt; Mist login node is down for maintenance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Sep 27 16:11 EDT 2021 &amp;lt;/b&amp;gt; HPSS is back online.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Wed Sep 23 17:23 EDT 2021 &amp;lt;/b&amp;gt; Systems being brought back online. HPSS may be down for some more days.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  When removing system status entries, please archive them to: https://docs.scinet.utoronto.ca/index.php/Previous_messages --&amp;gt;&lt;br /&gt;
{|style=&amp;quot;border-spacing: 10px;width: 100%&amp;quot;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;margin: 1em; padding:1em; padding-top:.1em; border:2px solid #000; background-color:#fff; border-radius:7px; width: 49.5%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[Niagara Quickstart]]&lt;br /&gt;
* [[HPSS | HPSS archival storage]]&lt;br /&gt;
* [[Mist| Mist Power 9 GPU cluster]]&lt;br /&gt;
* [[Teach|Teach cluster]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging SciNet]]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;margin: 1em; padding:1em; padding-top:.1em; border:2px solid #000; background-color:#fff; border-radius:7px; width: 49.5%&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials, Manuals, etc. ==&lt;br /&gt;
* [https://education.scinet.utoronto.ca SciNet education material]&lt;br /&gt;
* [https://www.youtube.com/c/SciNetHPCattheUniversityofToronto SciNet's YouTube channel]&lt;br /&gt;
* [[Modules specific to Niagara|Software Modules specific to Niagara]] &lt;br /&gt;
* [[Modules for Mist]] &lt;br /&gt;
* [[Commercial software]]&lt;br /&gt;
* [[Burst Buffer]]&lt;br /&gt;
* [[SSH keys]]&lt;br /&gt;
* [[SSH Tunneling]]&lt;br /&gt;
* [[SSH#Two-Factor_authentication|Two-Factor Authentication]]&lt;br /&gt;
* [[Visualization]]&lt;br /&gt;
* [[Running Serial Jobs on Niagara]]&lt;br /&gt;
* [[Jupyter Hub]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Gauriaur</name></author>
	</entry>
	<entry>
		<id>https://docs.scinet.utoronto.ca/index.php?title=SSH_Changes_in_May_2019&amp;diff=3074</id>
		<title>SSH Changes in May 2019</title>
		<link rel="alternate" type="text/html" href="https://docs.scinet.utoronto.ca/index.php?title=SSH_Changes_in_May_2019&amp;diff=3074"/>
		<updated>2021-06-13T19:21:36Z</updated>

		<summary type="html">&lt;p&gt;Gauriaur: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=SSH Changes in May 2019 (English)=&lt;br /&gt;
&lt;br /&gt;
(La version francaise suit.)&lt;br /&gt;
&lt;br /&gt;
== What Changed? ==&lt;br /&gt;
&lt;br /&gt;
During the 29-30 May 2019 shutdown, we made the following ssh security improvements on Niagara:&lt;br /&gt;
&lt;br /&gt;
# Disabled certain weak encryption algorithms.&lt;br /&gt;
# Disabled certain weak public key types.&lt;br /&gt;
# Regenerated Niagara's host keys.&lt;br /&gt;
&lt;br /&gt;
== Updating your client's known host list ==&lt;br /&gt;
&lt;br /&gt;
The first time you login to Niagara after the shutdown, you will probably see the following warning message:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;br /&gt;
Someone could be eavesdropping on you right now (man-in-the-middle attack)!&lt;br /&gt;
It is also possible that a host key has just been changed.&lt;br /&gt;
The fingerprint for the ED25519 key sent by the remote host is&lt;br /&gt;
SHA256:SauX2nL+Yso9KBo2Ca6GH/V9cSFLFXwxOECGWXZ5pxc.&lt;br /&gt;
Please contact your system administrator.&lt;br /&gt;
Add correct host key in /home/username/.ssh/known_hosts to get rid of this message.&lt;br /&gt;
Offending ECDSA key in /home/username/.ssh/known_hosts:109&lt;br /&gt;
ED25519 host key for niagara.scinet.utoronto.ca has changed and you have requested strict checking.&lt;br /&gt;
Host key verification failed.&lt;br /&gt;
Killed by signal 1.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This warning is displayed because the host keys on Niagara changed to increase the data centre's security, and ssh clients remember old host keys to prevent [https://en.wikipedia.org/wiki/Man-in-the-middle_attack &amp;quot;man-in-the-middle&amp;quot; attacks]. &lt;br /&gt;
&lt;br /&gt;
You may also get a warning regarding &amp;quot;DNS spoofing&amp;quot;, which is related to the same change.&lt;br /&gt;
&lt;br /&gt;
If you are using MobaXTerm, Putty, or WinSCP as your ssh (or scp) client under Windows, the warning will appear in a pop-up window and will allow you to accept the new host key by clicking &amp;quot;Yes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you are using the command line ssh command on macOS, Linux, GitBash or Cygwin, you should tell your system to &amp;quot;forget&amp;quot; the old host keys, by running the following commands:&lt;br /&gt;
&lt;br /&gt;
 ssh-keygen -R niagara.scinet.utoronto.ca&lt;br /&gt;
 ssh-keygen -R niagara.computecanada.ca&lt;br /&gt;
 ssh-keygen -R 142.150.188.70&lt;br /&gt;
 ssh-keygen -R nia-datamover1.scinet.utoronto.ca&lt;br /&gt;
 ssh-keygen -R nia-datamover2.scinet.utoronto.ca&lt;br /&gt;
 ssh-keygen -R 142.150.188.131&lt;br /&gt;
 ssh-keygen -R 142.150.188.132&lt;br /&gt;
&lt;br /&gt;
Afterwards, the next time you ssh to Niagara you'll be asked to confirm the new host keys, e.g.:&lt;br /&gt;
&lt;br /&gt;
 $ ssh niagara.scinet.utoronto.ca&lt;br /&gt;
 The authenticity of host 'niagara.scinet.utoronto.ca (142.150.188.70)' can't be established.&lt;br /&gt;
 ED25519 key fingerprint is SHA256:SauX2nL+Yso9KBo2Ca6GH/V9cSFLFXwxOECGWXZ5pxc.&lt;br /&gt;
 ED25519 key fingerprint is MD5:b4:ae:76:a5:2b:37:8d:57:06:0e:9a:de:62:00:26:be.&lt;br /&gt;
 Are you sure you want to continue connecting (yes/no)? &lt;br /&gt;
&lt;br /&gt;
Make sure the fingerprints are correct! You'll either see the above ED25519 fingerprints, or the following RSA fingerprints:&lt;br /&gt;
&lt;br /&gt;
 RSA key fingerprint is SHA256:k6YEhYsI73M+NJIpZ8yF+wqWeuXS9avNs2s5QS/0VhU.&lt;br /&gt;
 RSA key fingerprint is MD5:98:e7:7a:07:89:ef:3f:d8:68:3d:47:9c:6e:a6:71:5e.&lt;br /&gt;
&lt;br /&gt;
If the fingerprints don't match, someone may be trying to hijack your connection.&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
=== I can't connect! ===&lt;br /&gt;
&lt;br /&gt;
If you see one of the following error messages:&lt;br /&gt;
&lt;br /&gt;
 Unable to negotiate with 142.150.188.70 port 22: no matching cipher found.&lt;br /&gt;
 Unable to negotiate with 142.150.188.70 port 22: no matching key exchange method found.&lt;br /&gt;
 Unable to negotiate with 142.150.188.70 port 22: no matching mac found.&lt;br /&gt;
&lt;br /&gt;
you need to upgrade your ssh client.&lt;br /&gt;
&lt;br /&gt;
=== My SSH key no longer works ===&lt;br /&gt;
&lt;br /&gt;
If you're being asked for a password, but were using SSH keys,&lt;br /&gt;
it's because 1024-bit DSA &amp;amp; RSA keys have been disabled.&lt;br /&gt;
&lt;br /&gt;
You need to generate a new stronger key, see the [[SSH keys]] page for details.&lt;br /&gt;
&lt;br /&gt;
(What follows is the French version of the above information).&lt;br /&gt;
&lt;br /&gt;
=Les changement de SSH à mai 2019 (version française)=&lt;br /&gt;
&lt;br /&gt;
==Qu'est-ce qui a changé?==&lt;br /&gt;
&lt;br /&gt;
Pendant l'arrêt planifié des 29 et 30 mai 2019, nous avons mis en place&lt;br /&gt;
les mesures suivantes à Niagara pour améliorer sa securité:&lt;br /&gt;
&lt;br /&gt;
# Certaines méthodes de chiffrement faibles ont été désactivées.&lt;br /&gt;
# Certains types de clé publique SSH ont été désactivés.&lt;br /&gt;
# Les clés d'hôte de Niagara ont été régénérées.&lt;br /&gt;
&lt;br /&gt;
==Mettre à jour la liste de clés d'hôte de votre client SSH==&lt;br /&gt;
&lt;br /&gt;
Lorsque vous vous reconnectez à Niagara pour la première fois après&lt;br /&gt;
l'arrêt de maintenance, vous verrez probablement le message suivant:&lt;br /&gt;
&lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 @    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @&lt;br /&gt;
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
 IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;br /&gt;
 Someone could be eavesdropping on you right now (man-in-the-middle attack)!&lt;br /&gt;
 It is also possible that a host key has just been changed.&lt;br /&gt;
 The fingerprint for the ED25519 key sent by the remote host is&lt;br /&gt;
 SHA256:SauX2nL+Yso9KBo2Ca6GH/V9cSFLFXwxOECGWXZ5pxc.&lt;br /&gt;
 Please contact your system administrator.&lt;br /&gt;
 Add correct host key in /home/username/.ssh/known_hosts to get rid of this message.&lt;br /&gt;
 Offending ECDSA key in /home/username/.ssh/known_hosts:109&lt;br /&gt;
 ED25519 host key for niagara.scinet.utoronto.ca has changed and you have requested strict checking.&lt;br /&gt;
 Host key verification failed.&lt;br /&gt;
 Killed by signal 1.&lt;br /&gt;
&lt;br /&gt;
Ce message d'avertissement s'affiche parce que les clés d'hôte de Niagara ont été regénérées pour améliorer le securité du centre de données, mais le client SSH a stocké les anciennes clés d'hôte pour empêcher une [https://fr.wikipedia.org/wiki/Attaque_de_l%27homme_du_milieu « attaque de l'homme du milieu »]. &lt;br /&gt;
&lt;br /&gt;
C'est possible que vous voyiez aussi un message d'avertissement indiquant « DNS spoofing ».&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez un des outils de connexion MobaXTerm, PuTTY et WinSCP sous Windows, le message d'avertissment s'affiche dans une fenêtre contextuelle qui offre l'option d'accepter la nouvelle clé d'hôte en appuyant sur le bouton approprié.&lt;br /&gt;
&lt;br /&gt;
Si vous utilisez la commande « ssh » dans une fenêtre de terminal sur macOS, Linux, GitBash ou Cygwin, vous devez dire à votre système d'oublier les anciennes clés d'hôte avec les commandes suivantes:&lt;br /&gt;
&lt;br /&gt;
 $ ssh-keygen -R niagara.scinet.utoronto.ca&lt;br /&gt;
 $ ssh-keygen -R niagara.computecanada.ca&lt;br /&gt;
 $ ssh-keygen -R 142.150.188.70&lt;br /&gt;
 $ ssh-keygen -R nia-datamover1.scinet.utoronto.ca&lt;br /&gt;
 $ ssh-keygen -R nia-datamover2.scinet.utoronto.ca&lt;br /&gt;
 $ ssh-keygen -R 142.150.188.131&lt;br /&gt;
 $ ssh-keygen -R 142.150.188.132&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ensuite, lors de votre prochaine visite à Niagara, vous devrez confirmer les nouvelles clés d’hôte, par exemple:&lt;br /&gt;
&lt;br /&gt;
 $ ssh niagara.scinet.utoronto.ca&lt;br /&gt;
 The authenticity of host 'niagara.scinet.utoronto.ca (142.150.188.70)' can't be established.&lt;br /&gt;
 ED25519 key fingerprint is SHA256:SauX2nL+Yso9KBo2Ca6GH/V9cSFLFXwxOECGWXZ5pxc.&lt;br /&gt;
 ED25519 key fingerprint is MD5:b4:ae:76:a5:2b:37:8d:57:06:0e:9a:de:62:00:26:be.&lt;br /&gt;
 Are you sure you want to continue connecting (yes/no)? &lt;br /&gt;
&lt;br /&gt;
Assurez-vous que les empreintes digitales (« fingerprints ») sont correctes ! Vous verrez soit les empreintes ED25519 ci-dessus, soit les empreintes RSA suivantes:&lt;br /&gt;
&lt;br /&gt;
 RSA key fingerprint is SHA256:k6YEhYsI73M+NJIpZ8yF+wqWeuXS9avNs2s5QS/0VhU.&lt;br /&gt;
 RSA key fingerprint is MD5:98:e7:7a:07:89:ef:3f:d8:68:3d:47:9c:6e:a6:71:5e.&lt;br /&gt;
&lt;br /&gt;
Si les empreintes digitales ne correspondent pas, il est possible que quelqu'un tente de détourner votre connexion.&lt;br /&gt;
&lt;br /&gt;
==Dépannage==&lt;br /&gt;
&lt;br /&gt;
===Je n'arrive pas à me connecter!===&lt;br /&gt;
&lt;br /&gt;
Si vous voyez l'un des messages d'erreur suivants:&lt;br /&gt;
&lt;br /&gt;
 Unable to negotiate with 142.150.188.70 port 22: no matching cipher found.&lt;br /&gt;
 Unable to negotiate with 142.150.188.70 port 22: no matching key exchange method found.&lt;br /&gt;
 Unable to negotiate with 142.150.188.70 port 22: no matching mac found.&lt;br /&gt;
&lt;br /&gt;
vous devez mettre à jour le client ssh.&lt;br /&gt;
&lt;br /&gt;
===Ma clé SSH ne fonctionne plus===&lt;br /&gt;
&lt;br /&gt;
Si un mot de passe vous est demandé alors que vous utilisiez auparavant des clés SSH, c'est probablement parce que les clés DSA et RSA 1024 bits ont été désactivées.&lt;br /&gt;
&lt;br /&gt;
Vous devez générer une nouvelle clé plus puissante, voir la page [[SSH keys]] pour plus de détails.&lt;/div&gt;</summary>
		<author><name>Gauriaur</name></author>
	</entry>
</feed>