<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://oldwiki.scinet.utoronto.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nolta</id>
	<title>oldwiki.scinet.utoronto.ca - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://oldwiki.scinet.utoronto.ca/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nolta"/>
	<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php/Special:Contributions/Nolta"/>
	<updated>2026-06-10T05:26:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.12</generator>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=GPC_Quickstart&amp;diff=9177</id>
		<title>GPC Quickstart</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=GPC_Quickstart&amp;diff=9177"/>
		<updated>2018-03-01T14:09:12Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:University_of_Tor_79284gm-a.jpg|center|300px|thumb]]&lt;br /&gt;
|name=General Purpose Cluster (GPC)&lt;br /&gt;
|installed=June 2009&lt;br /&gt;
|operatingsystem= Linux Centos 6.4&lt;br /&gt;
|loginnode= gpc01..gpc08 (from &amp;lt;tt&amp;gt;login.scinet&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|nnodes=3864 (30,912 cores)&lt;br /&gt;
|rampernode=16 Gb &lt;br /&gt;
|corespernode=8 (16 threads)&lt;br /&gt;
|interconnect=840 nodes 1:1 DDR, 3024 nodes 5:1 QDR&lt;br /&gt;
|vendorcompilers=icc (C) ifort (fortran) icpc (C++)&lt;br /&gt;
|queuetype=[[Moab | Moab/Torque]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''&amp;lt;font color=red&amp;gt;The GPC will be decommissioned by early 2018. A new system for large parallel jobs, Niagara, will be replacing the [[GPC_Quickstart|GPC]] and [[TCS_Quickstart|TCS]].  To make room for the new system, the GPC has been reduced from 30,912 to 16,800 cores.  Niagara is expected to be in production in April of 2018, at which time the GPC will be fully decommmissioned. &amp;lt;/font&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Specifications===&lt;br /&gt;
The General Purpose Cluster is an extremely large cluster (ranked [http://www.top500.org/list/2009/06/100 16th] in the world at its inception, currently still at #391) and is where most computations are to be done at SciNet.  &lt;br /&gt;
The GPC consists of 3,780 nodes with 16 GB of memory or more and 8 Intel cores each. The nodes use a shared parallel file system and have no local disks. The compute nodes are accessed through a queuing system that allows jobs with a minimum of 15 minutes and maximum wall time of 48 hours .&lt;br /&gt;
&lt;br /&gt;
Technical details: The GPC is an IBM iDataPlex cluster based on Intel's Nehalem architecture (one of the [http://www.hpcwire.com/features/HPC-Vendors-Jump-On-Nehalem-42360237.html first in the world] to make use of the new chips). The GPC consists of 3,780 nodes (IBM iDataPlex DX360M2) with a total of 30,912  cores (Intel Xeon E5540) at 2.53GHz, with 16GB RAM per node (2GB per core). Approximately one quarter of the cluster is interconnected with non-blocking DDR InfiniBand while the rest of the nodes are connected with 5:1 blocked QDR InfiniBand.&lt;br /&gt;
&lt;br /&gt;
Note: from an operational standpoint, the contributed systems [[Gravity]] and [[Sandy]], as well as the [[Visualization_Nodes|Viz]] system, are more or less part of the GPC.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
First login via [[Ssh | ssh]] with your SciNet account at &amp;lt;tt&amp;gt;login.scinet.utoronto.ca&amp;lt;/tt&amp;gt;. This puts you on a 'login node', but not yet on the GPC. From the login node, you have to ssh to one of the 8 development nodes (&amp;lt;tt&amp;gt;gpc01&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;gpc02&amp;lt;/tt&amp;gt;, ..., &amp;lt;tt&amp;gt;gpc08&amp;lt;/tt&amp;gt;) to compile/test your code.&lt;br /&gt;
&lt;br /&gt;
===Compile/Devel Nodes===&lt;br /&gt;
&lt;br /&gt;
To get to one of the devel nodes from a scinet login node, you can ssh to &amp;lt;tt&amp;gt;gpc01&amp;lt;/tt&amp;gt;..&amp;lt;tt&amp;gt;gpc08&amp;lt;/tt&amp;gt;.  You may also just use the &amp;lt;tt&amp;gt;gpc&amp;lt;/tt&amp;gt; command to take directly to the dev node with lowest cpu load (reassessed every 5 minutes).&lt;br /&gt;
&lt;br /&gt;
Except for these eight development nodes on the GPC, all other nodes are 'compute nodes' that can be used only through the scheduler.  The devel nodes have the same hardware configuration as most of the compute nodes except with more memory -- 8 processing cores with 36 GB RAM and QDR Infiniband.  You can compile and test your codes on these devel nodes. To interactively test on more than 8 processors, you can submit an [[GPC_Quickstart#Submitting_an_Interactive_.28Debug.29_Job | interactive job request]] to get time-limited command-line access to a compute node.&lt;br /&gt;
&lt;br /&gt;
Your [[Storage_Quickstart | home directory]] is in &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt;. You have 50 GB there that is backed up. In addition, you have a larger, non-backed up space in &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt; for temporary files.  Note that your directories are encoded in the environment variables &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt;.  Currently &amp;lt;tt&amp;gt;$HOME=/home/G/GROUP/USER&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$SCRATCH=/scratch/G/GROUP/USER&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;/scratch2/G/GROUP/USER&amp;lt;/tt&amp;gt; (where GROUP is your group's name, G is the first letter of that groups name, and USER is your user name). But the locations can change as the storage system evolves and grows with demand, so please use the environment variables!  &lt;br /&gt;
&lt;br /&gt;
The GPC devel and compute nodes do not have local disks. Instead, &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt; are shared parallel file systems (the file system is called GPFS), which means that your files are seen on all the nodes.&lt;br /&gt;
&lt;br /&gt;
'''Your home directory cannot be written to by the compute nodes!''' Thus, to run jobs, you'll use the &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt; directory (currently &amp;lt;tt&amp;gt;/scratch/g/group/USER&amp;lt;/tt&amp;gt; but again, use the environment variable). Here, there is a large amount of disk space, but it is not backed up. Thus it makes sense to keep your codes in /home, compile there, and then run them in the /scratch directory.&lt;br /&gt;
&lt;br /&gt;
===Modules and Environment Variables===&lt;br /&gt;
&lt;br /&gt;
To use most packages on the SciNet machines - including any of the compilers - , you will have to use the `module' command.  The command &amp;lt;tt&amp;gt;module load some-package&amp;lt;/tt&amp;gt; will set your environment variables (&amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;, etc) to include the default version of that package.   &amp;lt;tt&amp;gt;module load some-package/specific-version&amp;lt;/tt&amp;gt; will load a specific version of that package.  This makes it very easy for different users to use different versions of compilers, MPI versions, libraries etc.&lt;br /&gt;
&lt;br /&gt;
Note that to use even the gcc compilers you will have to do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
but in fact you probably should use the intel compilers installed on this system as they often produce faster executables (and occasionally, much faster.)&lt;br /&gt;
&lt;br /&gt;
A list of the installed software and more information on using the module command is available in [[Software_and_Libraries | Software &amp;amp; Libraries]].  Or, when logged in to the gpc, you can &lt;br /&gt;
see all available modules on the system by typing &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To load a module (for example, the default version of the intel compilers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load intel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload a module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module unload intel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload all modules&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To list all loaded modules&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These commands should go in your submission scripts to make sure you&lt;br /&gt;
are using the correct packages.  It is possible to load them in your .bashrc files as well, but this is generally not recommended (see [[Important .bashrc guidelines]]), especially if you routinely have to flip back and forth between modules.&lt;br /&gt;
&lt;br /&gt;
Note that a &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; command ''only'' sets the environment variables in your current shell (and any subprocesses that the shell launches).   It does ''not'' affect other shell environments; in particular, a queued job that is running is unaffected by you interactively loading a module, and conversely you loading a module at the prompt and then submitting a job does not ensure that the module is loaded when the job runs.  To ensure that a module is loaded when a job runs, be sure to put your &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; command in your job submission script.&lt;br /&gt;
&lt;br /&gt;
Again more information on modules, and how to resolve dependencies between modules can be found on the [[Software_and_Libraries | Software &amp;amp; Libraries]] page.&lt;br /&gt;
&lt;br /&gt;
===Compilers===&lt;br /&gt;
&lt;br /&gt;
The intel compilers are icc/icpc/ifort for C/C++/Fortran, and are available with the default module &amp;quot;intel&amp;quot;.  The intel compilers are recommended over the GNU compilers.  Documentation about icpc is available at &lt;br /&gt;
http://software.intel.com/en-us/articles/intel-software-technical-documentation/.  The Intel compilers accept many of the options that the GNU compilers accept, but tend to produce faster programs on our system.  If, for some reason, you really need the GNU compilers, the latest version of the GNU compiler collection (currently 4.4.0) is available by loading the &amp;quot;gcc&amp;quot; module, with gcc/g++/gfortran for C/C++/Fortran.  [[Co-array_Fortran_on_the_GPC|Coarray fortran]] is support by the intel compilers from version 12 upwards and by the GNU fortran compiler version 5.2.0. Note that the f77/g77 compilers are not supported, but the available fortran compilers are able to compile fortran 77. &lt;br /&gt;
&lt;br /&gt;
To ensure that the intel compilers are in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; and their libraries are in your &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;, use the command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load intel/15.0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optimize your code for the GPC machine using of at least the following compiler flags: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   -O3 -xHost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(or &amp;lt;tt&amp;gt;-O3 -march=native&amp;lt;/tt&amp;gt; for the GNU compilers). &lt;br /&gt;
&lt;br /&gt;
*If your program uses openmp, add &amp;lt;tt&amp;gt;-fopenmp&amp;lt;/tt&amp;gt; for GNU compilers.&lt;br /&gt;
*If you get the warning &amp;lt;tt&amp;gt;feupdatreenv is not implemented&amp;lt;/tt&amp;gt;, add -limf to the link line.&lt;br /&gt;
*If you need to link in the MKL libraries, you are well advised to use the Intel(R) Math Kernel Library Link Line Advisor: http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/ for help in devising the list of libraries to link with your code. '''Note that this give the link line for the command prompt. When using this in Makefiles, replace $MKLPATH by ${MKLPATH}.'''&lt;br /&gt;
*More questions about compiling? See the [[FAQ#Compiling_your_Code|FAQ]].&lt;br /&gt;
&lt;br /&gt;
===Debuggers===&lt;br /&gt;
&lt;br /&gt;
* '''ddt''' - Allinea's graphical parallel debugger, in the &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt; module. Highly recommended!&lt;br /&gt;
* '''gdb''' - The GNU Debugger, available in the &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
* '''idbc/idb''' - The intel debuggers, part of the &amp;lt;tt&amp;gt;intel&amp;lt;/tt&amp;gt; module(s).&lt;br /&gt;
* '''ddd''' - A graphical debuggerThe GNU Debugger, available in the &amp;lt;tt&amp;gt;ddd&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that to debug code, you have to give the &amp;lt;tt&amp;gt;-g&amp;lt;/tt&amp;gt; flags to the compiler. The intel compiler needs the additional option &amp;lt;tt&amp;gt;-debug parallel&amp;lt;/tt&amp;gt; to debug threaded/OpenMP code.&lt;br /&gt;
&lt;br /&gt;
===[[ GPC_MPI_Versions | MPI]]===&lt;br /&gt;
&lt;br /&gt;
SciNet currently provides multiple MPI libraries for the GPC; [http://www.open-mpi.org/ OpenMPI], and [http://software.intel.com/en-us/intel-mpi-library/ IntelMPI].  We currently recommend OpenMPI as the default, as it quite reliably demonstrates good performance on the infiniband network (and did so too on the ethernet network).  For full details and options see the complete [[ GPC_MPI_Versions | '''MPI''']] section.&lt;br /&gt;
&lt;br /&gt;
The MPI libraries are compiled with both the gnu compiler suite and the intel compiler suite.   To use (for instance) the intel-compiled OpenMPI libraries, which we recommend as the default (and use for most of our examples here), use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load intel/15.0.2 openmpi/intel/1.6.4&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
in your job submission scripts and on the command-line before compiling.  Putting these in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; is no longer recommended (since Oct 10, 2013).   &lt;br /&gt;
&lt;br /&gt;
Other combinations behave similarly.&lt;br /&gt;
&lt;br /&gt;
The MPI libraries define the wrappers mpicc/mpicxx/mpif90/mpif77 as wrappers around the appropriate compilers, which ensure the appropriate include and library directories are used in the compilation and linking steps.&lt;br /&gt;
&lt;br /&gt;
We currently recommend the Intel + OpenMPI combination.  However, if you require the GNU compilers as well as MPI, you will want to find the most recent openmpi module available with `gcc' in the version name.  This will enable development and runtime with gcc/g++/gfortran and OpenMPI. &lt;br /&gt;
&amp;lt;!-- You can make this your default by putting the module load line in your ~/.bashrc file. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For mixed OpenMP/MPI code using Intel MPI, add the compilation flag -mt_mpi for full thread-safety (no such flag is necessary for OpenMPI).&lt;br /&gt;
&lt;br /&gt;
===Submitting A Batch Job===&lt;br /&gt;
&lt;br /&gt;
The SciNet machines are shared systems, and jobs that are to run on them are submitted to a queue; the&lt;br /&gt;
[[Moab | scheduler]] then orders the jobs in order to make the best use of the machine, and has them launched &lt;br /&gt;
when resources become availble.   The intervention of the scheduler can mean that the jobs aren't&lt;br /&gt;
quite run in a  first-in first-out order. The scheduler used on the GPC is called Moab (with Torque as the 'resource manager').&lt;br /&gt;
&lt;br /&gt;
The scheduler will have the job run on one or more of the compute nodes of the GPC. There are a few important differences between the devel nodes and the compute nodes:&lt;br /&gt;
&lt;br /&gt;
# As stated above already, on compute nodes, your home directory is read-only. You have to run your jobs from the $SCRATCH directory instead.  See [https://support.scinet.utoronto.ca/wiki/index.php/Data_Management  Data Management ] for more details on the file systems at SciNet.&lt;br /&gt;
&lt;br /&gt;
# The available memory on compute nodes is approximately 14GB (16GB - 2GB for the operating system). The devel nodes have 36GB, but this is shared with all the users of the node. &lt;br /&gt;
&lt;br /&gt;
# Some libraries, especially those for graphics, are not installed on the compute nodes. This leaves more memory available for your job, but if you have an application that requires such libraries (notably &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;octave&amp;lt;/tt&amp;gt;), you will need to &amp;quot;&amp;lt;tt&amp;gt;module load extras&amp;lt;/tt&amp;gt;&amp;quot; in your job script to make them work.&lt;br /&gt;
&lt;br /&gt;
The maximum [[wallclock time]] for a job in the queue is 48 hours; computations that will take longer than&lt;br /&gt;
this must be broken into 48-hour chunks and run as several jobs. Also a minimum job length of 15 minutes is enforced and shorter jobs&lt;br /&gt;
should be batched together.  The usual way to do this is with [[checkpoints]],&lt;br /&gt;
writing out the complete state of the computation every so often in such a way that a job can be restarted from&lt;br /&gt;
this state information and continue on from where it left off.  Generating [[checkpoints]] is a good idea anyway,&lt;br /&gt;
as in the unlikely event of a hardware failure during your run, it allows you to restart without having lost much work.&lt;br /&gt;
&lt;br /&gt;
There are limits to how many jobs you can submit.  If your group has a default account, up to 32 nodes at a time for 48 hours per job on the GPC cluster are allowed to be queued. This is a total limit, e.g., you could request 64 nodes for 24 hours.  Jobs of users with an LRAC or NRAC allocation will run at a higher priority than others while their resources last. Because of the group-based allocation, it is conceivable that your jobs won't run if your colleagues have already exhausted your group's limits.&lt;br /&gt;
&lt;br /&gt;
Note that scheduling big jobs greatly affects the queue and other users, so you have to talk to us first to run massively parallel jobs (&amp;gt; 2048 cores). We will help make sure that your jobs start and run efficiently.&lt;br /&gt;
&lt;br /&gt;
If your job should run in fewer than  48 hours, specify that in your script -- your job &lt;br /&gt;
will start sooner.   (It's easier for the [[Moab | scheduler]] to fit in a short job than a long job).  On the downside, the&lt;br /&gt;
job will be killed automatically by the queue manager software at the end of the specified [[wallclock time]], so if you&lt;br /&gt;
guess wrong you might lose some work.  So the standard procedure is to estimate how long your job will take and&lt;br /&gt;
add 10% or so. &lt;br /&gt;
&lt;br /&gt;
You interact with the queuing system through the queue/resource manager, [[Moab | Moab]] and [[Moab | Torque]].  To see all the jobs in the queue use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To submit your own job, you must write a script which describes the job and how it is to be run (a sample script [[GPC_Quickstart#Submission_Script | follows]]) and submit it to the queue, using the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub [SCRIPT-FILE-NAME]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where you will replace &amp;lt;tt&amp;gt;[SCRIPT-FILE-NAME]&amp;lt;/tt&amp;gt; with the file containing the submission script.   This will return a job ID, for example 31415, which is used to identify the jobs.  Information about a queued job can be found using&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qstat [JOB-ID]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and jobs can be canceled with the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ canceljob [JOB-ID]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, these commands have many options, which can be read about on their man pages.&lt;br /&gt;
&lt;br /&gt;
Much more information on the queueing system is available on our [[Moab | queue]] page.&lt;br /&gt;
&lt;br /&gt;
====Batch Submission Script: MPI====&lt;br /&gt;
&lt;br /&gt;
A sample submission script is shown below for an mpi job with the &amp;lt;tt&amp;gt; #PBS &amp;lt;/tt&amp;gt; directives at the top and the rest being &lt;br /&gt;
what will be executed on the compute node.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC &lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2 openmpi/intel/1.6.4&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*ppn&lt;br /&gt;
mpirun -np 16 ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lines that begin &amp;lt;tt&amp;gt;#PBS&amp;lt;/tt&amp;gt; are commands that are parsed and interpreted by qsub at submission time, and control administrative things about your job.   In this example, the script above requests two nodes, using 8 processors per node, for a [[wallclock time]] of one hour.  (The resources required by the job are listed on the &amp;lt;tt&amp;gt;#PBS -l&amp;lt;/tt&amp;gt; line.)   Other options can be given in other &amp;lt;tt&amp;gt;#PBS&amp;lt;/tt&amp;gt; lines, such as &amp;lt;tt&amp;gt;#PBS -N&amp;lt;/tt&amp;gt;, which sets the name of the job.   &lt;br /&gt;
&lt;br /&gt;
The rest of the script is run as a bash script at run time.   A bash shell on the first node of the two nodes that are requested executes these commands as a normal bash script, just as if you had run this as a shell script from the terminal.   The only difference is that PBS sets certain environment variables that you can use in the script.  &amp;lt;tt&amp;gt;$PBS_O_WORKDIR&amp;lt;/tt&amp;gt; is set to be the directory that the command was 'submitted' from - eg,  &amp;lt;tt&amp;gt;$SCRATCH/SOMEDIRECTORY&amp;lt;/tt&amp;gt;.   The script then uses the &amp;lt;tt&amp;gt;mpirun&amp;lt;/tt&amp;gt; command to launch the job. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
* Note: The different versions of MPI require different commands to launch the run, and thus different scripts. The above script is  specific for the openmpi module.  For the intelmpi module on ethernet, the last line of the script should read&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpirun -np 16 -env I_MPI_FABRICS shm:tcp ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For full MPI details see [[ GPC_MPI_Versions | MPI]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Submitting Collections of Serial Jobs====&lt;br /&gt;
&lt;br /&gt;
You cannot run purely serial jobs on the GPC (or any of SciNet's systems), as this would mean only one core out of 8 is used.  If you have serial jobs, you have to bunch them together.&lt;br /&gt;
SciNet-approved methods for running collections of serial jobs can be found on the [[User_Serial|serial run wiki page]].&lt;br /&gt;
&lt;br /&gt;
====Batch Submission Script: OpenMP====&lt;br /&gt;
&lt;br /&gt;
For running OpenMP jobs, the procedure is similar as for MPI jobs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC (OpenMP)&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=1:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
 &lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that [[Introduction_To_Performance#Throughput | in some circumstances]] it can be more efficient to run (say) two jobs each running on four threads than one job running on eight threads.   In that case you can use the same `ampersand-and-wait' technique outlined for serial jobs (see [[User_Serial|serial run wiki page]]) for less-than-eight-core OpenMP jobs.&lt;br /&gt;
&lt;br /&gt;
====Hybrid MPI/OpenMP jobs====&lt;br /&gt;
&lt;br /&gt;
'''Using Intel MPI'''&lt;br /&gt;
&lt;br /&gt;
Here is how to run hybrid codes using intelmpi::&lt;br /&gt;
&lt;br /&gt;
http://software.intel.com/en-us/articles/hybrid-applications-intelmpi-openmp/&lt;br /&gt;
&lt;br /&gt;
Make sure you compile with the -mt_mpi option to the compilers to use the thread safe libraries. &lt;br /&gt;
Set the environment variable I_MPI_PIN_DOMAIN:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export I_MPI_PIN_DOMAIN=omp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will set the process pinning domain size to be equal to OMP_NUM_THREADS (which you should set to the desired number of threads per mpi process). Therefore, each MPI process can create $OMP_NUM_THREADS number of children threads for running within the corresponding domain. If OMP_NUM_THREADS is not set, each node is treated as a separate domain (which will allow as many threads per MPI processes as there are cores).&lt;br /&gt;
&lt;br /&gt;
In addition, when invoking mpirun, you should add the argument &amp;quot;-ppn X&amp;quot;, where X is the number of MPI processes per node.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpirun -ppn 2 -np 8 [executable]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
would start 2 mpi processes of &amp;lt;tt&amp;gt;[executable]&amp;lt;/tt&amp;gt; per node for a total of 8 processes, so mpirun will try to run mpi processes on 4 nodes&lt;br /&gt;
(OMP_NUM_THREADS is then probably best set at 4).&lt;br /&gt;
Your job script should still ask for these 4 nodes with the line&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
     #PBS -l nodes=4:ppn=8,walltime=....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(&amp;lt;tt&amp;gt;ppn=8&amp;lt;/tt&amp;gt; is not a mistake here; the ppn parameter has a different meaning for PBS and for mpirun)&lt;br /&gt;
&lt;br /&gt;
''The ppn parameter to ''mpirun'' is very important! Without it, eight mpi jobs would get bunched on the first node in this example, leaving 3 nodes unused.''&lt;br /&gt;
&lt;br /&gt;
NOTE: In order to pin OpenMP threads inside the domain, use the corresponding OpenMP feature by setting the KMP_AFFINITY environment variable, see [http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/lin/compiler_f/optaps/common/optaps_openmp_thread_affinity.htm#KMP_AFFINITY_Environment_Variable|Intel's Compiler User and Reference Guide].&lt;br /&gt;
&lt;br /&gt;
The IntelMPI manual is referenced on the front page of our wiki:&lt;br /&gt;
&lt;br /&gt;
http://software.intel.com/sites/products/documentation/hpc/mpi/linux/reference_manual.pdf&lt;br /&gt;
&lt;br /&gt;
For the above example of a total of 8 processes on 4 nodes, you could use the following script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC (hybrid job)&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2 intelmpi/4.1.2.040&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# SET THE NUMBER OF THREADS PER PROCESS:&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
&lt;br /&gt;
# PIN THE MPI DOMAINS ACCORDING TO OMP&lt;br /&gt;
export I_MPI_PIN_DOMAIN=omp&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*ppn&lt;br /&gt;
mpirun -ppn 2 -np 8 ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Using Open MPI'''&lt;br /&gt;
&lt;br /&gt;
For mixed MPI/OpenMP jobs using OpenMPI, which is the default for many users, the procedure is similar, but details differ.&lt;br /&gt;
&lt;br /&gt;
* Request the number of nodes in the PBS script.&lt;br /&gt;
* Set OMP_NUM_THREADS to the number of threads per MPI process.&lt;br /&gt;
* In addition to the -np parameter for mpirun, add the argument &amp;lt;tt&amp;gt;--bynode&amp;lt;/tt&amp;gt;, so that the mpi processes are not bunched up.&lt;br /&gt;
&lt;br /&gt;
So for example, to start a total of 8 processes on 4 nodes, you could use the following script&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC (hybrid job)&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2 openmpi/intel/1.6.4&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# SET THE NUMBER OF THREADS PER PROCESS:&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*processes_per_nodes; --byhost forces a round robin of nodes.&lt;br /&gt;
mpirun -np 8 --bynode ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* More questions about running your jobs? See the [[FAQ#Running_your_jobs|FAQs Running your jobs]] and [[FAQ#Errors_in_running_jobs|Errors in running jobs]] sections.&lt;br /&gt;
&lt;br /&gt;
===Automated Email Notifications from Jobs===&lt;br /&gt;
&lt;br /&gt;
By default, you get an email if your job fails ('''a'''borts) when run through the scheduler. You can setup email notifications as well for when the jobs '''b'''egins or '''e'''nds. For this, you use the &amp;lt;tt&amp;gt;-m&amp;lt;/tt&amp;gt; submission option, followed by any combination of '''a''' (to get emails when the job is aborted, e.g. by canceljob or qdel), '''b''' (to get emails when the job starts), and '''e''' (to get emails when the job ends), or '''n''' (for no emails except errors such as going over the walltime limit).&lt;br /&gt;
&lt;br /&gt;
For instance, to get email in all three cases, you could have a job script like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC &lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
#PBS -m abe&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel openmpi&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*ppn&lt;br /&gt;
mpirun -np 16 ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Getting email for every job is not necessarily a good idea, as you may get a lot of email. This is why the default is to send an email only when the job fails&lt;br /&gt;
&lt;br /&gt;
* The email address that the emails are sent to is the one that you gave when you created your account. &lt;br /&gt;
&amp;lt;!-- You cannot have the emails send to another address (even if you there is a '''-M''' scheduler option that would allow you to specify your email address, for security, this option is disabled on the GPC). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Emails notifying that a job exceeded its walltime cannot be suppressed.  The only way not to get them is to have your jobs stop before the walltime.  If your job uses [[Checkpoints]] properly so that it can restart, it may be safe to have that job script self-terminate just before the walltime is over, by adding, at the top of the script, a line like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sleep $((PBS_WALLTIME-60)) &amp;amp;&amp;amp; (echo &amp;quot;out of time, self-terminating&amp;quot;; kill $$) &amp;amp; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
which terminates the jobs script one minute before the wall time is over. You may want to combine this technique with [[Using Signals]].&lt;br /&gt;
&lt;br /&gt;
===Submitting an Interactive (Debug) Job===&lt;br /&gt;
&lt;br /&gt;
Your development work flow may require a lot of small test runs.   You are allowed to do these on the development nodes, as long as it's very brief (a few minutes), and does not use all cores on the machine. For anything more you will have to use the compute nodes. (In a hurry? Check out the debugjob command below!)&lt;br /&gt;
&lt;br /&gt;
It is sometimes convenient to run a job interactively; this can be very handy for debugging purposes.  In this case, you type a &amp;lt;tt&amp;gt;qsub&amp;lt;/tt&amp;gt; command which submits an interactive job to the queue; when the scheduler selects this job to run, then it starts a shell running on the first node of the job, which connects to your terminal.  You can then type any series of commands (for instance, the same commands listed as in the batch submission script above) to run a job interactively.&lt;br /&gt;
&lt;br /&gt;
For example, to start the same sort of job as in the batch submission script above, but interactively, one would type&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -I -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your interactive job requires graphics, add &amp;quot;-X&amp;quot; to this command.&lt;br /&gt;
&lt;br /&gt;
Note that this is exactly the &amp;lt;tt&amp;gt;#PBS -l&amp;lt;/tt&amp;gt; line in the batch script above (which requests all 8 processors on each of 2 nodes for one hour), but prepended with a &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; for `interactive'.   When this job begins, your terminal will now show you as being logged in to one of the compute nodes, and one can type in any shell command, run &amp;lt;tt&amp;gt;mpirun&amp;lt;/tt&amp;gt;, etc.   When you exit the shell, the job will end.  &lt;br /&gt;
&lt;br /&gt;
Interactive jobs can be used with any of the [[ Moab#GPC | GPC queues ]] however, there is a short&lt;br /&gt;
high turnover queue called [[ Moab#debug | debug ]] which can be especially useful when the system is busy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -I -l nodes=2:ppn=8,walltime=1:00:00 -q debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the combination of running interactively and use the high turnover queue is very common, SciNet has the specialized command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ debugjob [NUMBEROFNODES]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where &amp;lt;tt&amp;gt;NUMBEROFNODES&amp;lt;/tt&amp;gt; is an optional argument that defaults to one.  This command requests NUMBEROFNODES compute nodes for a limited time between 30 minutes and 2 hours (less time the more nodes you take), and gives you a shell on the (first) compute node.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*More questions about running test jobs? See the [[FAQ#Testing_your_Code|FAQ]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Ethernet vs. Infiniband===&lt;br /&gt;
&lt;br /&gt;
About 1/4 of the GPC (862 nodes or 6896 cores) is connected with a high bandwidth low-latency fabric called&lt;br /&gt;
[http://en.wikipedia.org/wiki/InfiniBand InfiniBand].  Many jobs which require tight coupling to scale well greatly benefit from this interconnect;&lt;br /&gt;
other types of jobs, which have relatively modest communications, do not require this and run fine on Gigabit ethernet.&lt;br /&gt;
&lt;br /&gt;
Jobs which require the InfiniBand for good performance can request the nodes that have the `&amp;lt;tt&amp;gt;ib&amp;lt;/tt&amp;gt;' feature in the &amp;lt;tt&amp;gt;#PBS -l&amp;lt;/tt&amp;gt; line,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ib:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Furthermore, if your mpirun command specifically requests a fabric in its options (eg. ssm), you will have to change those options as well. See [[GPC MPI Versions]].&lt;br /&gt;
&lt;br /&gt;
Because there are a limited number of these nodes, your job will start running faster if you do not request them (e.g. if you use the scripts as shown above), as this increases the number of nodes available to run your job. In fact, the InfiniBand nodes are to be used only for jobs that are known to scale well and  will benefit from this type of interconnect. As such the minimum number of nodes requested has to be at least 2, as single node jobs will not benefit from using an&lt;br /&gt;
Infiniband node. The MPI libraries provided by SciNet automatically correctly use either the InfiniBand or ethernet interconnect depending on which nodes your job runs on.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===QDR vs. DDR Infiniband===&lt;br /&gt;
&lt;br /&gt;
The GPC Infiniband network GPC has two sections, one connecting 3,024 nodes with 5:1 blocking/oversubscribed QDR and the second connecting 840 nodes 1:1 non-blocking DDR Infiniband. By default a user's job will go to whichever network section best accommodates it, typically smaller jobs to the QDR and larger jobs to the DDR. However a user can override this by simply adding the flags &amp;quot;ddr&amp;quot; or &amp;quot;qdr&amp;quot; to the job resource request.&lt;br /&gt;
&lt;br /&gt;
For example, to request two nodes anywhere on the GPC (QDR or DDR), use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in your job submission script.&lt;br /&gt;
&lt;br /&gt;
For two nodes using DDR, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ddr:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get two nodes using QDR, instead, you would use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:qdr:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The queueing system also tries its best to keep jobs within the same switch of the QDR thus avoiding the 5:1 blocking. A user can can explicitly request this behaviour if their jobs is less than 30 nodes using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -W x=nodesetisoptional:false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HyperThreading===&lt;br /&gt;
&lt;br /&gt;
Each GPC compute node has 8 Nehalem cores (2 sockets each with a four-core Intel Xeon E5540 @ 2.53GHz).  Thus, to make full use of the computing power of a GPC node, you must be running least 8 &amp;quot;tasks&amp;quot; -- MPI processes, or OpenMP threads.&lt;br /&gt;
&lt;br /&gt;
Under most circumstances, running exactly 8 tasks is the most efficient way to use these nodes.  However, sometimes software design (eg, having one thread for communication and one for computation) can usefully `oversubscribe' the number of physical cores, and running (say) twice as many tasks as cores can be a useful strategy.   If your code is highly memory-bandwidth bound, having one task ready to run while another waits for memory access can make more effective use of the processor.&lt;br /&gt;
&lt;br /&gt;
The Nehalem processors have hardware support for such two-way overloading of processors, through &amp;quot;HyperThreading&amp;quot;; there are an extra set of registers on each core to facilitate rapid switching between two tasks, making it look to the operating system that there are in fact 16 cores per node.   Depending on the nature of your code, making use of these virtual extra cores may speed up or slow down your computation; you should run small test cases before running production jobs in this manner.  In most cases, the speed difference will be under 10%.  Some of our users have obtained an 8% speedup by running gromacs with 16 tasks instead of 8 on a single node (mpirun -np 16 ./gromacs/mdrun -npme 4 is 108% the speed of mpirun -np 8 ./gromacs/mdrun with -npme 2 or -1).&lt;br /&gt;
&lt;br /&gt;
====HyperThreading with OpenMP====&lt;br /&gt;
&lt;br /&gt;
To use hyperthreading with an OpenMP job, one just runs twice as many threads as one would have previously; eg, if you were running 8 threads before (&amp;lt;tt&amp;gt;export OMP_NUM_THREADS=8&amp;lt;/tt&amp;gt;) you would run with 16 (&amp;lt;tt&amp;gt;export OMP_NUM_THREADS=16&amp;lt;/tt&amp;gt;).  Everything else remains the same, including the job submission script; one still uses &amp;lt;tt&amp;gt;ppn=8&amp;lt;/tt&amp;gt; in the submission of the job, as Torque has no way of knowing (or reason for caring) that you will be running on 16 `virtual' cores rather than 8 physical cores.&lt;br /&gt;
&lt;br /&gt;
====HyperThreading with MPI====&lt;br /&gt;
&lt;br /&gt;
To use hyperthreading with an MPI job, one just runs twice as many MPI processes as one would have previously; eg, if you were running on three nodes using 8 MPI tasks per node and used &amp;lt;tt&amp;gt;mpirun ... -np 24&amp;lt;/tt&amp;gt;, you could run instead with &amp;lt;tt&amp;gt;-np 48&amp;lt;/tt&amp;gt;.  Everything else remains the same, including the job submission script; one still uses &amp;lt;tt&amp;gt;ppn=8&amp;lt;/tt&amp;gt; in the submission of the job, as Torque has no way of knowing (or reason for caring) that you will be running on 16 `virtual' cores rather than 8 physical cores.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using OpenMPI (as is the default), there is another consideration; OpenMPI assumes that there is no oversubscription and each task very aggressively makes full use of a core when it is waiting for a message (eg, the waits are &amp;quot;busywaits&amp;quot;).  If you find a significant slowdown when running multiple MPI tasks per core with OpenMPI, you may want to try adding the additional option to mpirun: &amp;lt;tt&amp;gt;--mca mpi_yield_when_idle 1&amp;lt;/tt&amp;gt;.  This will increase the latency of individual messages, but free up the core to do additional work while waiting.&lt;br /&gt;
&lt;br /&gt;
With IntelMPI, the problem should be less pronounced, but you can still improve things by using &amp;lt;tt&amp;gt;mpirun -genv I_MPI_SPIN_COUNT 1 ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Examples of hyperthreading with MPI'''&lt;br /&gt;
&lt;br /&gt;
Hyperthreading using gromacs: https://support.scinet.utoronto.ca/wiki/index.php/Gromacs#Hyperthreading_with_Gromacs&lt;br /&gt;
&lt;br /&gt;
====HyperThreading with Hybrid MPI/OpenMP codes====&lt;br /&gt;
&lt;br /&gt;
With a hybrid code, one has extra flexibility in how to assign the &amp;quot;extra&amp;quot; cores -- you could run extra MPI tasks or extra OpenMPI threads.  As with all hybrid codes, the combination which results in the best performance depends very strongly on the nature of your code, and you should experiment with different combinations.   In addition, with hybrid codes processor and memory affinity issues become very important; if you're unsure as to how to tune your application for best performance, please make an appointment with the SciNet technical analysts for more help.&lt;br /&gt;
&lt;br /&gt;
===Memory Configuration===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!{{Hl2}}|Number of Nodes&lt;br /&gt;
!{{Hl2}}|Memory &lt;br /&gt;
!{{Hl2}}|Notes&lt;br /&gt;
|-&lt;br /&gt;
|3655&lt;br /&gt;
|16 GB&lt;br /&gt;
|14 GB is available for your application.&lt;br /&gt;
|-&lt;br /&gt;
|205&lt;br /&gt;
|32 GB&lt;br /&gt;
|use the flag m32g to request (see below)&lt;br /&gt;
|-&lt;br /&gt;
|72&lt;br /&gt;
|64 GB&lt;br /&gt;
|part of the contributed system [[Sandy]], but unused cycles are available.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|128 GB or 256 GB&lt;br /&gt;
|2 x 128 GB and 2x256 GB as part of [[Sandy]], &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|128 GB &lt;br /&gt;
|2 x older harpertown nodes with 16 cores and 128 GB each.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|128 GB &lt;br /&gt;
|2 x new haswell nodes with 20 cores and 128 GB each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''16G'''&lt;br /&gt;
&lt;br /&gt;
There are 3655 nodes which have 16G of memory, and is the primary configuration in the GPC. These nodes will be used by default.&lt;br /&gt;
On these nodes, about 2 GB is taken by the operating system. So for mpi runs with 8 processes per node, this leaves about 1.75GB max per mpi process.  Do not try to use more than the available memory: the node will crash and your job will either die or hang until the requested walltime has elapsed.&lt;br /&gt;
&lt;br /&gt;
If you need more memory per process or per thread, you can either try to use the limit number of larger memory nodes listed below, or you can run with less mpi processes, or use a different decomposition, such that the job fits on a node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
'''18G'''&lt;br /&gt;
&lt;br /&gt;
There are 24 nodes which have 18G of memory. These nodes have a fully populated memory configuration that maximizes memory bandwidth. Note that also on these nodes, about 2 GB is taken by the operating system. To&lt;br /&gt;
request these nodes use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=2:m18g:ppn=8,walltime=1:00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''32G'''&lt;br /&gt;
&lt;br /&gt;
There are 205 nodes which have 32G of memory. To request these nodes use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:m32g:ppn=8,walltime=1:00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, also on these nodes, about 2 GB is taken by the operating system, but this is a relatively small amount compared to the total of 32GB.&lt;br /&gt;
&lt;br /&gt;
'''64G/128G/256G'''&lt;br /&gt;
&lt;br /&gt;
There are 72 16-core Intel Sandybridge nodes which have 64G, 2 with 128G, and 2 with 256G of memory available as part of the contributed [[Sandy]] cluster. These nodes are requested through the &amp;lt;tt&amp;gt;sandy&amp;lt;/tt&amp;gt; queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:m64g:ppn=16,walltime=1:00:00 -q sandy&lt;br /&gt;
$ qsub -l nodes=1:m128g:ppn=16,walltime=1:00:00 -q sandy&lt;br /&gt;
$ qsub -l nodes=1:m256g:ppn=16,walltime=1:00:00 -q sandy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, also on these nodes, about 2 GB is taken by the operating system, but this is a relatively small amount compared to the total.&lt;br /&gt;
&lt;br /&gt;
'''128G'''&lt;br /&gt;
&lt;br /&gt;
There are four other stand-alone large memory (128GB) nodes which are primarily to be used for data analysis of runs.  Both are Intel machines running the same linux OS as the compute nodes however, they are of different Intel generations than the regular GPC compute nodes.  Two nodes are 16 core older Harpertown nodes, so codes may have to be compiled separately for these machine, and some modules that work on the other GPC nodes, such as octave, will not work on these nodes.   The two other are 20 core newer Haswell nodes that all of the GPC modules should work on.  &lt;br /&gt;
&lt;br /&gt;
These nodes can be accessed using a specific &amp;lt;tt&amp;gt;largemem&amp;lt;/tt&amp;gt; queue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1,walltime=1:00:00 -q largemem -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To specifically request the older/newer nodes, use the number of processers (16/20) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:ppn=16,walltime=1:00:00 -q largemem -I&lt;br /&gt;
$ qsub -l nodes=1:ppn=20,walltime=1:00:00 -q largemem -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the latter  reqeust to run any code compiled specifically for the GPC nodes (such as the python modules).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' To estimate your time of access to these nodes, use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showq -w class=largemem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====How to run fewer MPI processes per node for memory bound applications====&lt;br /&gt;
&lt;br /&gt;
If your compute job requires more memory than is available, it will crash. In some cases, this will even crash the node itself.&lt;br /&gt;
One way to exceed the memory is if your MPI application is too large for 8 processes to fit in memory. Oftentimes, you can solve this problem by subdividing the computation over more processes (reducing the memory per process) and ask for more nodes.  Sometimes, this does not work, for instance if each MPI process requires a fixed minimum chunk of memory that is too large. In that case, you will want to run with less mpi processes than there are cpus in a nodes (i.e. less than 8 for the GPC). Running in such a mode requires a change in the mpirun command. The mpirun command now should not only specify the total number of mpi processes, but should also specify how these processes will be distributed over the nodes.  The default distribution of processes is such that the first nodes get loaded with 8 processes, than the second nodes gets filled up, etc, and this will clearly lead to the same memory issue that you had before.  Instead, you would want your processes to be distributed evenly over the nodes.  The syntax for specifying that depends on whether you are using openmpi or intelmpi.  For openmpi running on 4 nodes with 3 processes per node, for example, you would invoke mpirun as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun -np 12 --bynode &amp;lt;application&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For intelmpi, the same setup would be invoked using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun -np 12 -ppn 3 &amp;lt;application&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://wiki.scinet.utoronto.ca/wiki/index.php/Moab#Checking_the_memory_usage_from_jobs Checking memory usage from jobs]====&lt;br /&gt;
&lt;br /&gt;
===Ram Disk===&lt;br /&gt;
&lt;br /&gt;
On the GPC nodes, there is a `ram disk' available - up to half of the memory on the node may be used as a temporary file system.  This is particularly useful for use in the early stages of migrating destop-computing codes to a High Performance Computing platform such as the GPC.    It is much faster than real disk and does not require network traffic; however, each node sees its own ramdisk and cannot see files on that of other nodes.   This is a very easy way to cache writes (by writing them to fast ram disk instead of slow `real' disk); and then one would periodically copy the files to files on /scratch or /project so that they are available after the job has completed.&lt;br /&gt;
&lt;br /&gt;
To use the ramdisk, create and read to or write from files in /dev/shm/... just as one would to (eg) $SCRATCH.  Only the amount of RAM needed to store the files will be taken up by the temporary file system; thus if you have 8 serial jobs each requiring 1 GB of RAM, and 1GB is taken up by various OS services, you would still have approximately 7GB available to use as ramdisk on a 16GB node.   However, if you were to write 8 GB of data to the RAM disk, this would exceed available memory and your job would likely crash.&lt;br /&gt;
   &lt;br /&gt;
NOTE: it is very important to delete your files from ram disk at the end of your job.   If you do not do this, the next user to use that node will have less RAM available than they might expect, and this might kill their jobs.&lt;br /&gt;
&lt;br /&gt;
More details on how to setup your script to use the ramdisk can be found on the [[User_Ramdisk|Ramdisk wiki page]].&lt;br /&gt;
&lt;br /&gt;
=== Managing jobs on the Queuing system ===&lt;br /&gt;
&lt;br /&gt;
Information on checking available resources, starting, viewing, managing and canceling jobs on [[Moab | Moab/Torque]]. Also check out the [[FAQ#Monitoring_jobs_in_the_queue|FAQ]].&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=9060</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=9060"/>
		<updated>2017-11-12T16:12:17Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png|up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png|up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up.png|up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png|up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png|up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png|up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png|up|link=P8]][[P8]]&lt;br /&gt;
|[[File:up50.png|up|]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png|up|link=SOSCIP_GPU]][[SOSCIP_GPU|SGC]]&lt;br /&gt;
|[[File:up.png|up|link=Knights Landing]][[Knights Landing|KNL]]&lt;br /&gt;
|[[File:up.png|up|link=HPSS]][[HPSS]]&lt;br /&gt;
|[[File:up.png|up|]]External Network&lt;br /&gt;
&lt;br /&gt;
|[[File:up25.png|up|]]Login Nodes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Sat Nov 11, 13:43 EDT 2017&amp;lt;/b&amp;gt; File system issues. You may experience problems logging in. We are investigating.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Sat Nov 11, 12:19 EDT 2017&amp;lt;/b&amp;gt; If you are experiencing issues when logging in, try ssh to login-ha.scinet.utoronto.ca.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Oct 19, 18:30 EDT 2017&amp;lt;/b&amp;gt; Connectivity to the datacentre has been restored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Oct 19, 17:00 EDT 2017&amp;lt;/b&amp;gt; [http://www.systemstatus.utoronto.ca/incidents/zlj7rd5z2mg4 It appears that the optical fibre connection to the datacentre has been cut, some 3 km away from the University.  Bell has been contacted.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Oct 19, 14:30 EDT 2017&amp;lt;/b&amp;gt; [http://www.systemstatus.utoronto.ca/incidents/zlj7rd5z2mg4 Network issues to the data centre. We are investigating.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=9059</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=9059"/>
		<updated>2017-11-12T16:04:43Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png|up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png|up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up.png|up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png|up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png|up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png|up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png|up|link=P8]][[P8]]&lt;br /&gt;
|[[File:up75.png|up|]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png|up|link=SOSCIP_GPU]][[SOSCIP_GPU|SGC]]&lt;br /&gt;
|[[File:up.png|up|link=Knights Landing]][[Knights Landing|KNL]]&lt;br /&gt;
|[[File:up.png|up|link=HPSS]][[HPSS]]&lt;br /&gt;
|[[File:up.png|up|]]External Network&lt;br /&gt;
&lt;br /&gt;
|[[File:up25.png|up|]]Login Nodes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Sat Nov 11, 13:43 EDT 2017&amp;lt;/b&amp;gt; File system issues. You may experience problems logging in. We are investigating.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Sat Nov 11, 12:19 EDT 2017&amp;lt;/b&amp;gt; If you are experiencing issues when logging in, try ssh to login-ha.scinet.utoronto.ca.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Oct 19, 18:30 EDT 2017&amp;lt;/b&amp;gt; Connectivity to the datacentre has been restored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Oct 19, 17:00 EDT 2017&amp;lt;/b&amp;gt; [http://www.systemstatus.utoronto.ca/incidents/zlj7rd5z2mg4 It appears that the optical fibre connection to the datacentre has been cut, some 3 km away from the University.  Bell has been contacted.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Oct 19, 14:30 EDT 2017&amp;lt;/b&amp;gt; [http://www.systemstatus.utoronto.ca/incidents/zlj7rd5z2mg4 Network issues to the data centre. We are investigating.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:] --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8909</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8909"/>
		<updated>2017-06-12T17:46:57Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
=Getting a license=&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
=Ansys 18.1=&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Running Fluent==&lt;br /&gt;
&lt;br /&gt;
Example submission script for a job running on 4 nodes, with max walltime of 24 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=24:00:00&lt;br /&gt;
&lt;br /&gt;
module load ANSYS/18.1 extras&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
INPUTFILE=input.jou&lt;br /&gt;
fluent 2ddp -t &amp;quot;$PBS_NP&amp;quot; -cnf=&amp;quot;$PBS_NODEFILE&amp;quot; -mpi=intel -pib -pcheck -g -i &amp;quot;$INPUTFILE&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8902</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8902"/>
		<updated>2017-05-30T19:01:41Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Running Fluent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
=Getting a license=&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
=Ansys 18.1=&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Running Fluent==&lt;br /&gt;
&lt;br /&gt;
Example submission script for a job running on 4 nodes, with max walltime of 24 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=24:00:00&lt;br /&gt;
&lt;br /&gt;
module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
INPUTFILE=input.jou&lt;br /&gt;
fluent 2ddp -t &amp;quot;$PBS_NP&amp;quot; -cnf=&amp;quot;$PBS_NODEFILE&amp;quot; -mpi=intel -pib -pcheck -g -i &amp;quot;$INPUTFILE&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8901</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8901"/>
		<updated>2017-05-30T18:59:29Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Running Fluent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
=Getting a license=&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
=Ansys 18.1=&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Running Fluent==&lt;br /&gt;
&lt;br /&gt;
Example running on 4 nodes, with max walltime of 24 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=24:00:00&lt;br /&gt;
&lt;br /&gt;
module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
INPUTFILE=input.jou&lt;br /&gt;
fluent 2ddp -t &amp;quot;$PBS_NP&amp;quot; -cnf=&amp;quot;$PBS_NODEFILE&amp;quot; -mpi=intel -pib -pcheck -g -i &amp;quot;$INPUTFILE&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8900</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8900"/>
		<updated>2017-05-30T18:59:01Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Running Fluent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
=Getting a license=&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
=Ansys 18.1=&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Running Fluent==&lt;br /&gt;
&lt;br /&gt;
Example running on 4 nodes, with max walltime of 24 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=24:00:00&lt;br /&gt;
&lt;br /&gt;
module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
INPUTFILE=input.jou&lt;br /&gt;
fluent 2ddp -t &amp;quot;$PBS_NP&amp;quot; -cnf=&amp;quot;$PBS_NODEFILE&amp;quot; -mpi=intel -pib -pcheck -g -i $INPUTFILE&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8899</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8899"/>
		<updated>2017-05-30T18:56:01Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Running Fluent */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
=Getting a license=&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
=Ansys 18.1=&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Running Fluent==&lt;br /&gt;
&lt;br /&gt;
Example running on 4 nodes, with max walltime of 24 hours:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=24:00:00&lt;br /&gt;
&lt;br /&gt;
module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
fluent 2ddp -t &amp;quot;$PBS_NP&amp;quot; -cnf=&amp;quot;$PBS_NODEFILE&amp;quot; -mpi=intel -pib -pcheck -g -i input.jou&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8898</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8898"/>
		<updated>2017-05-30T18:01:33Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
=Getting a license=&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
=Ansys 18.1=&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Running Fluent==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8897</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8897"/>
		<updated>2017-05-30T17:58:24Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Getting a license */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
==Getting a license==&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
Once you have an account, you have to contact CMC and tell them you want to use the Ansys tools on SciNet,&lt;br /&gt;
and give them your SciNet username.&lt;br /&gt;
&lt;br /&gt;
==Ansys 18.1==&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8896</id>
		<title>Ansys</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Ansys&amp;diff=8896"/>
		<updated>2017-05-30T17:51:57Z</updated>

		<summary type="html">&lt;p&gt;Nolta: Created page with &amp;quot;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.  ==Getting a license==  Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://www.ansys.com/ Ansys] engineering simulation tools are installed on SciNet.&lt;br /&gt;
&lt;br /&gt;
==Getting a license==&lt;br /&gt;
&lt;br /&gt;
Licenses are provided by [http://www.cmc.ca/ CMC Microsystems]. Canadian students and faculty&lt;br /&gt;
can register at https://www.cmc.ca/en/MyAccount/GetAccount.aspx&lt;br /&gt;
&lt;br /&gt;
==Ansys 18.1==&lt;br /&gt;
&lt;br /&gt;
 module load ANSYS/18.1&lt;br /&gt;
&lt;br /&gt;
Programs available:&lt;br /&gt;
&lt;br /&gt;
* fluent&lt;br /&gt;
* ansysedt&lt;br /&gt;
* mapdl&lt;br /&gt;
* ...&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=User_Codes&amp;diff=8895</id>
		<title>User Codes</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=User_Codes&amp;diff=8895"/>
		<updated>2017-05-30T17:20:23Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
&lt;br /&gt;
==Astrophysics==&lt;br /&gt;
&lt;br /&gt;
===Athena (explicit, uniform grid MHD code)===&lt;br /&gt;
&lt;br /&gt;
[[Image:StrongScalingAthenaGPC.png|thumb|right|320px|Athena scaling on GPC with OpenMPI and MVAPICH2 on GigE, and OpenMPI on InfiniBand]]&lt;br /&gt;
&lt;br /&gt;
[http://www.astro.princeton.edu/~jstone/athena.html Athena] is a straightforward C code which doesn't use a lot of libraries so it is pretty straightforward to build and compile on new machines.   &lt;br /&gt;
&lt;br /&gt;
It encapsulates its compiler flags, etc in an &amp;lt;tt&amp;gt;Makeoptions.in&amp;lt;/tt&amp;gt; file which is then processed by &amp;lt;tt&amp;gt;configure&amp;lt;/tt&amp;gt;.   I've used the following additions to &amp;lt;tt&amp;gt;Makeoptions.in&amp;lt;/tt&amp;gt; on TCS and GPC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
ifeq ($(MACHINE),scinettcs)&lt;br /&gt;
  CC = mpcc_r&lt;br /&gt;
  LDR = mpcc_r&lt;br /&gt;
  OPT = -O5 -q64 -qarch=pwr6 -qtune=pwr6 -qcache=auto -qlargepage -qstrict&lt;br /&gt;
  MPIINC =&lt;br /&gt;
  MPILIB =&lt;br /&gt;
  CFLAGS = $(OPT)&lt;br /&gt;
  LIB = -ldl -lm&lt;br /&gt;
else&lt;br /&gt;
ifeq ($(MACHINE),scinetgpc)&lt;br /&gt;
  CC = mpicc&lt;br /&gt;
  LDR = mpicc&lt;br /&gt;
  OPT = -O3&lt;br /&gt;
  MPIINC =&lt;br /&gt;
  MPILIB =&lt;br /&gt;
  CFLAGS = $(OPT)&lt;br /&gt;
  LIB = -lm&lt;br /&gt;
else&lt;br /&gt;
...&lt;br /&gt;
endif&lt;br /&gt;
endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
It performs quite well on the GPC, scaling extremely well even on a strong scaling test out to about 256 cores (32 nodes) on Gigabit ethernet, and performing beautifully on InfiniBand out to 512 cores (64 nodes). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ljdursi|ljdursi]]  19:20, 13 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
===FLASH3 (Adaptive Mesh reactive hydrodynamics; explict hydro/MHD)===&lt;br /&gt;
&lt;br /&gt;
[[Image:weak-scaling-example.png|thumb|right|320px|Weak scaling test of the 2d sod problem on both the GPC and TCS.  The results are actually somewhat faster on the GPC; in both cases (weak) scaling is very good out at least to 256 cores]]&lt;br /&gt;
&lt;br /&gt;
[http://flash.uchicago.edu FLASH] encapsulates its machine-dependant information in the &amp;lt;tt&amp;gt;FLASH3/sites&amp;lt;/tt&amp;gt; directory.  For the GPC, you'll have to&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load intel&lt;br /&gt;
module load openmpi&lt;br /&gt;
module load hdf5/184-p1-v16-openmpi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and with that, the following file (&amp;lt;tt&amp;gt;sites/scinetgpc/Makefile.h&amp;lt;/tt&amp;gt;) works for me:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;make&amp;quot;&amp;gt;&lt;br /&gt;
## Must do module load hdf5/183-v16-openmpi&lt;br /&gt;
HDF5_PATH = ${SCINET_HDF5_BASE}&lt;br /&gt;
ZLIB_PATH = /usr/local&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Compiler and linker commands&lt;br /&gt;
#&lt;br /&gt;
#  We use the f90 compiler as the linker, so some C libraries may explicitly&lt;br /&gt;
#  need to be added into the link line.&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
## modules will put the right mpi in our path&lt;br /&gt;
FCOMP   = mpif77&lt;br /&gt;
CCOMP   = mpicc&lt;br /&gt;
CPPCOMP = mpiCC&lt;br /&gt;
LINK    = mpif77&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Compilation flags&lt;br /&gt;
#&lt;br /&gt;
#  Three sets of compilation/linking flags are defined: one for optimized&lt;br /&gt;
#  code, one for testing, and one for debugging.  The default is to use the &lt;br /&gt;
#  _OPT version.  Specifying -debug to setup will pick the _DEBUG version,&lt;br /&gt;
#  these should enable bounds checking.  Specifying -test is used for &lt;br /&gt;
#  flash_test, and is set for quick code generation, and (sometimes) &lt;br /&gt;
#  profiling.  The Makefile generated by setup will assign the generic token &lt;br /&gt;
#  (ex. FFLAGS) to the proper set of flags (ex. FFLAGS_OPT).&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
FFLAGS_OPT   =  -c -r8 -i4 -O3 -xSSE4.2&lt;br /&gt;
FFLAGS_DEBUG =  -c -g -r8 -i4 -O0&lt;br /&gt;
FFLAGS_TEST  =  -c -r8 -i4&lt;br /&gt;
&lt;br /&gt;
LIB_HDF5 = -L${HDF5_PATH}/lib -lhdf5 -L${SCINET_ZLIB_LIB} -lz -lgpfs&lt;br /&gt;
&lt;br /&gt;
# if we are using HDF5, we need to specify the path to the include files&lt;br /&gt;
CFLAGS_HDF5  = -I${HDF5_PATH}/include&lt;br /&gt;
&lt;br /&gt;
CFLAGS_OPT   = -c -O3 -xSSE4.2&lt;br /&gt;
CFLAGS_TEST  = -c -O2 &lt;br /&gt;
CFLAGS_DEBUG = -c -g  &lt;br /&gt;
&lt;br /&gt;
MDEFS = &lt;br /&gt;
&lt;br /&gt;
.SUFFIXES: .o .c .f .F .h .fh .F90 .f90&lt;br /&gt;
&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
# Linker flags&lt;br /&gt;
#&lt;br /&gt;
#  There is a seperate version of the linker flags for each of the _OPT, &lt;br /&gt;
#  _DEBUG, and _TEST cases.&lt;br /&gt;
#----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
LFLAGS_OPT   = -o&lt;br /&gt;
LFLAGS_TEST  = -o&lt;br /&gt;
LFLAGS_DEBUG = -g -o&lt;br /&gt;
&lt;br /&gt;
MACHOBJ = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MV = mv -f&lt;br /&gt;
AR = ar -r&lt;br /&gt;
RM = rm -f&lt;br /&gt;
CD = cd&lt;br /&gt;
RL = ranlib&lt;br /&gt;
ECHO = echo&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- [[User:Ljdursi|ljdursi]] 22:11, 13 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Aeronautics==&lt;br /&gt;
&lt;br /&gt;
==Chemistry==&lt;br /&gt;
&lt;br /&gt;
===CPMD===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[Cpmd | CPMD]] page.&lt;br /&gt;
&lt;br /&gt;
===NWChem===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[Nwchem | NWChem]] page.&lt;br /&gt;
&lt;br /&gt;
===GAMESS (US)===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[gamess|GAMESS (US)]] page.&lt;br /&gt;
&lt;br /&gt;
User supplied content below.&lt;br /&gt;
&lt;br /&gt;
====Tips from the Fekl Lab====&lt;br /&gt;
&lt;br /&gt;
Through trial and error, we have found a few useful things that we would like to share:&lt;br /&gt;
&lt;br /&gt;
1. Two very useful, open-source programs for visualization of output files from GAMESS(US) and for generation of input files are [http://www.scl.ameslab.gov/MacMolPlt/ MacMolPlt]and [http://avogadro.openmolecules.net/wiki/Main_Page Avogadro].  The are available for UNIX/LINUX, Windows and Mac based machines, HOWEVER:  any input files that we have generated with these programs on a Windows-based machine do not run on Mac based machines.  We don't know why.&lt;br /&gt;
&lt;br /&gt;
2. [http://winscp.net/eng/index.php WinSCP] is a very useful tool that has a graphical user interface for moving files from a local machine to SCINET and vice versa.  It also has text editing capabilities.&lt;br /&gt;
&lt;br /&gt;
3. The [https://bse.pnl.gov/bse/portal ESML Basis Set Exchange] is an excellent source for custom basis set or effective core potential parameters.  Make sure that you specify &amp;quot;Gamess-US&amp;quot; in the format drop-down box.&lt;br /&gt;
&lt;br /&gt;
4.  The commercial program [http://www.chemcraftprog.com/ ChemCraft] is a highly useful visualization program that has the ability to edit molecules in a very similar fashion to GaussView.  It can also be customized to build GAMESS(US) input files.&lt;br /&gt;
&lt;br /&gt;
====Anatomy of a GAMESS(US) Input File with Basis Set Info in an External File====&lt;br /&gt;
&lt;br /&gt;
  $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE DFTTYP=M06-L MAXIT=199 MULT=1 NOSYM=1&lt;br /&gt;
   ECP=READ $END&lt;br /&gt;
  $SYSTEM TIMLIM=525600 MWORDS=1750 PARALL=.TRUE. $END&lt;br /&gt;
  $BASIS GBASIS=CUSTOMNI EXTFIL=.t. $END&lt;br /&gt;
  $SCF DIRSCF=.TRUE. FDIFF=.f. $END&lt;br /&gt;
  $STATPT OPTTOL=0.0001 NSTEP=500 HSSEND=.t. $END&lt;br /&gt;
  $DATA&lt;br /&gt;
  Mo_BDT3&lt;br /&gt;
 C1&lt;br /&gt;
 MOLYBDENUM 42.0      5.7556500000      4.4039600000     16.5808400000&lt;br /&gt;
 SULFUR     16.0      7.4169700000      3.1956300000     15.2089300000&lt;br /&gt;
 SULFUR     16.0      4.0966800000      3.2258300000     15.1761100000&lt;br /&gt;
 SULFUR     16.0      3.9677300000      4.4940500000     18.3266100000&lt;br /&gt;
 SULFUR     16.0      7.1776900000      3.5815000000     18.4485200000&lt;br /&gt;
 SULFUR     16.0      4.3776600000      6.2447400000     15.6786900000&lt;br /&gt;
 SULFUR     16.0      7.5478700000      6.0679800000     16.2223700000&lt;br /&gt;
 CARBON      6.0      6.4716900000      2.1004800000     14.1902300000&lt;br /&gt;
 CARBON      6.0      5.0690300000      2.1781400000     14.1080700000&lt;br /&gt;
 CARBON      6.0      4.8421800000      4.2701300000     19.8855500000&lt;br /&gt;
 CARBON      6.0      6.1969000000      3.9249600000     19.9397400000&lt;br /&gt;
 CARBON      6.0      6.8280600000      3.7834200000     21.1913200000&lt;br /&gt;
 CARBON      6.0      5.7697600000      7.6933500000     17.4241800000&lt;br /&gt;
 CARBON      6.0      7.2043100000      7.9413600000     17.8281100000&lt;br /&gt;
 CARBON      6.0      5.5051400000      7.0409700000     14.5903800000&lt;br /&gt;
 CARBON      6.0      6.8905200000      6.9194700000     14.7626200000&lt;br /&gt;
 CARBON      6.0      7.7396400000      7.5379800000     13.8285700000&lt;br /&gt;
 HYDROGEN    1.0      8.8190700000      7.4520600000     13.9252200000&lt;br /&gt;
 CARBON      6.0      7.2169400000      8.2960300000     12.7704100000&lt;br /&gt;
 HYDROGEN    1.0      7.8667000000      8.7825100000     12.0575600000&lt;br /&gt;
 CARBON      6.0      5.8260300000      8.4502300000     12.6467800000&lt;br /&gt;
 HYDROGEN    1.0      5.4143000000      9.0544300000     11.8493100000&lt;br /&gt;
 CARBON      6.0      4.9881500000      7.8192300000     13.5528400000&lt;br /&gt;
 HYDROGEN    1.0      3.9090500000      7.9420000000     13.4583700000&lt;br /&gt;
 CARBON      6.0      7.1538500000      1.1569600000     13.4143900000&lt;br /&gt;
 CARBON      6.0      4.4018100000      1.3603900000     13.1919900000&lt;br /&gt;
 CARBON      6.0      6.4791600000      0.3185500000     12.5353300000&lt;br /&gt;
 CARBON      6.0      5.0837400000      0.4369500000     12.4084900000&lt;br /&gt;
 HYDROGEN    1.0      7.0116000000     -0.4099400000     11.9434600000&lt;br /&gt;
 HYDROGEN    1.0      8.2399000000      1.0702400000     13.4937600000&lt;br /&gt;
 HYDROGEN    1.0      3.3185600000      1.4368700000     13.0953100000&lt;br /&gt;
 HYDROGEN    1.0      4.5549800000     -0.1997300000     11.7165200000&lt;br /&gt;
 CARBON      6.0      6.1105700000      3.9639000000     22.3866100000&lt;br /&gt;
 CARBON      6.0      4.1216300000      4.4424400000     21.1020100000&lt;br /&gt;
 HYDROGEN    1.0      7.8732900000      3.5217100000     21.2520500000&lt;br /&gt;
 CARBON      6.0      4.7606000000      4.2868500000     22.3363800000&lt;br /&gt;
 HYDROGEN    1.0      6.6064200000      3.8406000000     23.3428500000&lt;br /&gt;
 HYDROGEN    1.0      4.2065000000      4.4170700000     23.2667100000&lt;br /&gt;
 HYDROGEN    1.0      3.0674000000      4.6893500000     21.0889000000&lt;br /&gt;
 HYDROGEN    1.0      7.4249200000      7.7545300000     18.8583200000&lt;br /&gt;
 HYDROGEN    1.0      7.6651700000      8.9049700000     17.7652100000&lt;br /&gt;
 HYDROGEN    1.0      5.3324000000      8.6487800000     17.2222700000&lt;br /&gt;
 HYDROGEN    1.0      5.5015000000      7.1039000000     18.2759400000&lt;br /&gt;
  $END&lt;br /&gt;
  $ECP&lt;br /&gt;
 MO-ECP GEN     28     3&lt;br /&gt;
  5      ----- f potential     -----&lt;br /&gt;
     -0.0469492        0    537.9667807        &lt;br /&gt;
    -20.2080084        1    147.8982938        &lt;br /&gt;
   -106.2116302        2     45.7358898        &lt;br /&gt;
    -41.8107368        2     13.2911467        &lt;br /&gt;
     -4.2054103        2      4.7059961        &lt;br /&gt;
  3      ----- s-f potential     -----&lt;br /&gt;
      2.8063717        0    110.2991760        &lt;br /&gt;
     44.5162012        1     23.2014645        &lt;br /&gt;
     82.7785227        2      5.3530131        &lt;br /&gt;
  4      ----- p-f potential     -----&lt;br /&gt;
      4.9420876        0     63.2901397        &lt;br /&gt;
     25.8604976        1     23.3315302        &lt;br /&gt;
    132.4708742        2     24.6759423        &lt;br /&gt;
     57.3149794        2      4.6493040        &lt;br /&gt;
  5      ----- d-f potential     -----&lt;br /&gt;
      3.0054591        0    104.4839977        &lt;br /&gt;
     26.3637851        1     66.2307245        &lt;br /&gt;
    183.3849199        2     39.1283176        &lt;br /&gt;
     98.4453068        2     13.1164437        &lt;br /&gt;
     22.4901377        2      3.6280263 &lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
  $END&lt;br /&gt;
&lt;br /&gt;
=====The Input Deck=====&lt;br /&gt;
&lt;br /&gt;
Below is the input deck.  It is where you tell GAMESS(US) what job type to execute and where all you individual parameters are entered for your specific job type.  The example input deck below is for a geometry optimization and frequency calculation.  This input deck is equivalent to the Gaussian job with &amp;quot;opt&amp;quot; and &amp;quot;freq&amp;quot; in the route section.&lt;br /&gt;
&lt;br /&gt;
  $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE DFTTYP=M06-L MAXIT=199 MULT=1 NOSYM=1&lt;br /&gt;
   ECP=READ $END&lt;br /&gt;
  $SYSTEM TIMLIM=2850 MWORDS=1750 MEMDDI=20 PARALL=.TRUE. $END&lt;br /&gt;
  $BASIS GBASIS=CUSTOMNI EXTFIL=.t. $END&lt;br /&gt;
  $SCF DIRSCF=.TRUE. FDIFF=.f. $END&lt;br /&gt;
  $STATPT OPTTOL=0.0001 NSTEP=500 HSSEND=.t. $END&lt;br /&gt;
  $DATA&lt;br /&gt;
&lt;br /&gt;
An important thing to note is the spacing.  In the input deck, there must be 1 space at the beginning of each line of the input deck.  If not, the job will fail.  Most builders will insert this space anyway, but it helps to double check.&lt;br /&gt;
&lt;br /&gt;
The end of the input deck is marked by the &amp;quot;$DATA&amp;quot; line.&lt;br /&gt;
&lt;br /&gt;
=====Job Title Line=====&lt;br /&gt;
&lt;br /&gt;
The next line of the file is the job title.  It can be anthing you wish, however, we have found that to be on the safe side, we avoide using symbols or spaces&lt;br /&gt;
&lt;br /&gt;
  Mo_BDT3&lt;br /&gt;
&lt;br /&gt;
=====Symmetry Point Group=====&lt;br /&gt;
&lt;br /&gt;
The next line of the file is the symmetry point group of your molecule.  Note that there is no leading space before the point group.&lt;br /&gt;
&lt;br /&gt;
 C1&lt;br /&gt;
&lt;br /&gt;
=====Coordinates=====&lt;br /&gt;
&lt;br /&gt;
The next block of text is set aside for the coordinates of the molecule.  This can be in internal (or z-matrix) format or cartesian coordinates.  Note that there is no leading space before the coordinates.  One may use the chemical symbol or the full name of each atom in the molecule.  Note that the end of the coordinates is signified by an &amp;quot;$END&amp;quot;, which MUST have one space preceding it.  The coordinates below do NOT have any basis set information inserted.  It is possible to insert basis set information directly into the input file.  This is accomplished by obtaining the desired basis set parameters from the EMSL and then inserting them below each relevant atom.  An example input file with inserted basis set information will be shown later.&lt;br /&gt;
&lt;br /&gt;
 MOLYBDENUM 42.0      5.7556500000      4.4039600000     16.5808400000&lt;br /&gt;
 SULFUR     16.0      7.4169700000      3.1956300000     15.2089300000&lt;br /&gt;
 SULFUR     16.0      4.0966800000      3.2258300000     15.1761100000&lt;br /&gt;
 SULFUR     16.0      3.9677300000      4.4940500000     18.3266100000&lt;br /&gt;
 SULFUR     16.0      7.1776900000      3.5815000000     18.4485200000&lt;br /&gt;
 SULFUR     16.0      4.3776600000      6.2447400000     15.6786900000&lt;br /&gt;
 SULFUR     16.0      7.5478700000      6.0679800000     16.2223700000&lt;br /&gt;
 CARBON      6.0      6.4716900000      2.1004800000     14.1902300000&lt;br /&gt;
 CARBON      6.0      5.0690300000      2.1781400000     14.1080700000&lt;br /&gt;
 CARBON      6.0      4.8421800000      4.2701300000     19.8855500000&lt;br /&gt;
 CARBON      6.0      6.1969000000      3.9249600000     19.9397400000&lt;br /&gt;
 CARBON      6.0      6.8280600000      3.7834200000     21.1913200000&lt;br /&gt;
 CARBON      6.0      5.7697600000      7.6933500000     17.4241800000&lt;br /&gt;
 CARBON      6.0      7.2043100000      7.9413600000     17.8281100000&lt;br /&gt;
 CARBON      6.0      5.5051400000      7.0409700000     14.5903800000&lt;br /&gt;
 CARBON      6.0      6.8905200000      6.9194700000     14.7626200000&lt;br /&gt;
 CARBON      6.0      7.7396400000      7.5379800000     13.8285700000&lt;br /&gt;
 HYDROGEN    1.0      8.8190700000      7.4520600000     13.9252200000&lt;br /&gt;
 CARBON      6.0      7.2169400000      8.2960300000     12.7704100000&lt;br /&gt;
 HYDROGEN    1.0      7.8667000000      8.7825100000     12.0575600000&lt;br /&gt;
 CARBON      6.0      5.8260300000      8.4502300000     12.6467800000&lt;br /&gt;
 HYDROGEN    1.0      5.4143000000      9.0544300000     11.8493100000&lt;br /&gt;
 CARBON      6.0      4.9881500000      7.8192300000     13.5528400000&lt;br /&gt;
 HYDROGEN    1.0      3.9090500000      7.9420000000     13.4583700000&lt;br /&gt;
 CARBON      6.0      7.1538500000      1.1569600000     13.4143900000&lt;br /&gt;
 CARBON      6.0      4.4018100000      1.3603900000     13.1919900000&lt;br /&gt;
 CARBON      6.0      6.4791600000      0.3185500000     12.5353300000&lt;br /&gt;
 CARBON      6.0      5.0837400000      0.4369500000     12.4084900000&lt;br /&gt;
 HYDROGEN    1.0      7.0116000000     -0.4099400000     11.9434600000&lt;br /&gt;
 HYDROGEN    1.0      8.2399000000      1.0702400000     13.4937600000&lt;br /&gt;
 HYDROGEN    1.0      3.3185600000      1.4368700000     13.0953100000&lt;br /&gt;
 HYDROGEN    1.0      4.5549800000     -0.1997300000     11.7165200000&lt;br /&gt;
 CARBON      6.0      6.1105700000      3.9639000000     22.3866100000&lt;br /&gt;
 CARBON      6.0      4.1216300000      4.4424400000     21.1020100000&lt;br /&gt;
 HYDROGEN    1.0      7.8732900000      3.5217100000     21.2520500000&lt;br /&gt;
 CARBON      6.0      4.7606000000      4.2868500000     22.3363800000&lt;br /&gt;
 HYDROGEN    1.0      6.6064200000      3.8406000000     23.3428500000&lt;br /&gt;
 HYDROGEN    1.0      4.2065000000      4.4170700000     23.2667100000&lt;br /&gt;
 HYDROGEN    1.0      3.0674000000      4.6893500000     21.0889000000&lt;br /&gt;
 HYDROGEN    1.0      7.4249200000      7.7545300000     18.8583200000&lt;br /&gt;
 HYDROGEN    1.0      7.6651700000      8.9049700000     17.7652100000&lt;br /&gt;
 HYDROGEN    1.0      5.3324000000      8.6487800000     17.2222700000&lt;br /&gt;
 HYDROGEN    1.0      5.5015000000      7.1039000000     18.2759400000&lt;br /&gt;
  $END&lt;br /&gt;
&lt;br /&gt;
=====Effective Core Potential Data=====&lt;br /&gt;
&lt;br /&gt;
The effective core potential (ECP) data is entered after the coordinates.  It starts with &amp;quot;$ECP&amp;quot;, which must be preceded with a space.   The atoms of the molecule are listed in the same order as in the coordinates section and the parameters for the ECP are listed after each atom.  Note that for any atom that does NOT have an ECP, one must enter &amp;quot;ECP-NONE&amp;quot; or &amp;quot;NONE&amp;quot; after each atom without an ECP.&lt;br /&gt;
&lt;br /&gt;
 $ECP&lt;br /&gt;
 MO-ECP GEN     28     3&lt;br /&gt;
  5      ----- f potential     -----&lt;br /&gt;
     -0.0469492        0    537.9667807        &lt;br /&gt;
    -20.2080084        1    147.8982938        &lt;br /&gt;
   -106.2116302        2     45.7358898        &lt;br /&gt;
    -41.8107368        2     13.2911467        &lt;br /&gt;
     -4.2054103        2      4.7059961        &lt;br /&gt;
  3      ----- s-f potential     -----&lt;br /&gt;
      2.8063717        0    110.2991760        &lt;br /&gt;
     44.5162012        1     23.2014645        &lt;br /&gt;
     82.7785227        2      5.3530131        &lt;br /&gt;
  4      ----- p-f potential     -----&lt;br /&gt;
      4.9420876        0     63.2901397        &lt;br /&gt;
     25.8604976        1     23.3315302        &lt;br /&gt;
    132.4708742        2     24.6759423        &lt;br /&gt;
     57.3149794        2      4.6493040        &lt;br /&gt;
  5      ----- d-f potential     -----&lt;br /&gt;
      3.0054591        0    104.4839977        &lt;br /&gt;
     26.3637851        1     66.2307245        &lt;br /&gt;
    183.3849199        2     39.1283176        &lt;br /&gt;
     98.4453068        2     13.1164437        &lt;br /&gt;
     22.4901377        2      3.6280263 &lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 S NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 C NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
 H NONE&lt;br /&gt;
  $END&lt;br /&gt;
&lt;br /&gt;
-- [[User:M.Zimmer-De Iuliis|mzd]]  16 November 2009&lt;br /&gt;
&lt;br /&gt;
====Using an External File to Define Basis Set in GAMESS(US)====&lt;br /&gt;
&lt;br /&gt;
Since GAMESS(US) has a limited number of built-in ECPs and basis sets, one may want to make GAMESS(US) read an external file that contains the basis set information ECP data using the &amp;quot;EXTFIL&amp;quot; keyword in the $GBASIS command line of the input file.  For many metal containing compounds, it is very convenient and time saving to use an effective core potential (ECP) for the core metal electrons, as they are usually not important to the reactivity of the complex or the geometry around the metal.  In addition, to make GAMESS(US) use this external file, one must copy the &amp;quot;rungms&amp;quot; file and modify it accordingly.  The following is a list of instructions with commands that will work from a terminal.  One could also use WinSCP to do all of this with a GUI rather than a TUI.  &lt;br /&gt;
&lt;br /&gt;
=====Modifiying rungms to Use Custom Basis Set File=====&lt;br /&gt;
1. Copy &amp;quot;rungms&amp;quot; from /scinet/gpc/Applications/gamess to one's own /scratch/$USER/ directory:&lt;br /&gt;
 cp /scinet/gpc/Applications/gamess/rungms /scratch/$USER/&lt;br /&gt;
&lt;br /&gt;
2. Change to the scratch directory and check to see if &amp;quot;rungms&amp;quot; has copied successfully.&lt;br /&gt;
 cd /scratch/$USER&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
3. Edit line 147 of the script.  &lt;br /&gt;
 vi rungms&lt;br /&gt;
Move the cursor down to line 147 using the arrow keys.  It should say &amp;quot;setenv EXTBAS /dev/null&amp;quot;.  Using the arrow keys, move the cursor to the first &amp;quot;/&amp;quot; and then hit &amp;quot;i&amp;quot; to insert text.  Put the path to your external basis file here.  For example, /scratch/$USER/basisset.  Then hit &amp;quot;escape&amp;quot;.  To save the changes and exit vi, type &amp;quot;:&amp;quot; and you should see a colon appear at the bottom of the window.  Type &amp;quot;wq&amp;quot; (which should appear at the bottom of the window next to the colon) and then hit enter.  Now you are done with vi.&lt;br /&gt;
&lt;br /&gt;
=====Creating a Custom Basis Set File=====&lt;br /&gt;
1. To create a custom basis set file, you need create a new text document.  Our group's common practice is to comment out the first line of this file by inserting an exclamation mark (!) followed by noting the specific basis sets and ECPs that are going to be used for each of the atoms.  Let us use the molecule Mo(CO)6, Molybdenum hexacarbonyl, as an example.  Below is the first line of the the external file, which we will call &amp;quot;CUSTOMMO&amp;quot;  (NOTE:  you can use any name for the external file that suits you, as long as it has no spaces and is 8 characters or less).&lt;br /&gt;
&lt;br /&gt;
 ! 6-31G on C and O and LANL2D2 ECP on Mo&lt;br /&gt;
&lt;br /&gt;
2. The next step is to visit the [https://bse.pnl.gov/bse/portal EMSL Basis Set exchange] and select C and O from the periodic table.  Then, on the left of the page, select &amp;quot;6-31G&amp;quot; as the basis set.  Finally, make sure the output is in GAMESS(US) format using the drop-down menu and then click &amp;quot;get basis set&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[File:C_O_6_31G_basisset.JPG|centre]]&lt;br /&gt;
&lt;br /&gt;
3. A new window should appear with text in it.  For our example case, the text looks like this:&lt;br /&gt;
 &lt;br /&gt;
 !  6-31G  EMSL  Basis Set Exchange Library   10/13/09 11:12 AM&lt;br /&gt;
 ! Elements                             References&lt;br /&gt;
 ! --------                             ----------&lt;br /&gt;
 ! H - He: W.J. Hehre, R. Ditchfield and J.A. Pople, J. Chem. Phys. 56,&lt;br /&gt;
 ! Li - Ne: 2257 (1972).  Note: Li and B come from J.D. Dill and J.A.&lt;br /&gt;
 ! Pople, J. Chem. Phys. 62, 2921 (1975).&lt;br /&gt;
 ! Na - Ar: M.M. Francl, W.J. Petro, W.J. Hehre, J.S. Binkley, M.S. Gordon,&lt;br /&gt;
 ! D.J. DeFrees and J.A. Pople, J. Chem. Phys. 77, 3654 (1982)&lt;br /&gt;
 ! K  - Zn: V. Rassolov, J.A. Pople, M. Ratner and T.L. Windus, J. Chem. Phys.&lt;br /&gt;
 ! 109, 1223 (1998)&lt;br /&gt;
 ! Note: He and Ne are unpublished basis sets taken from the Gaussian&lt;br /&gt;
 ! program&lt;br /&gt;
 ! &lt;br /&gt;
 $DATA&amp;lt;br /&amp;gt;&lt;br /&gt;
 CARBON&lt;br /&gt;
 S   6&lt;br /&gt;
   1   3047.5249000              0.0018347        &lt;br /&gt;
   2    457.3695100              0.0140373        &lt;br /&gt;
   3    103.9486900              0.0688426        &lt;br /&gt;
   4     29.2101550              0.2321844        &lt;br /&gt;
   5      9.2866630              0.4679413        &lt;br /&gt;
   6      3.1639270              0.3623120        &lt;br /&gt;
 L   3&lt;br /&gt;
   1      7.8682724             -0.1193324              0.0689991        &lt;br /&gt;
   2      1.8812885             -0.1608542              0.3164240        &lt;br /&gt;
   3      0.5442493              1.1434564              0.7443083        &lt;br /&gt;
 L   1&lt;br /&gt;
   1      0.1687144              1.0000000              1.0000000&amp;lt;br /&amp;gt;      &lt;br /&gt;
 OXYGEN&lt;br /&gt;
 S   6&lt;br /&gt;
   1   5484.6717000              0.0018311        &lt;br /&gt;
   2    825.2349500              0.0139501        &lt;br /&gt;
   3    188.0469600              0.0684451        &lt;br /&gt;
   4     52.9645000              0.2327143        &lt;br /&gt;
   5     16.8975700              0.4701930        &lt;br /&gt;
   6      5.7996353              0.3585209        &lt;br /&gt;
 L   3&lt;br /&gt;
   1     15.5396160             -0.1107775              0.0708743        &lt;br /&gt;
   2      3.5999336             -0.1480263              0.3397528        &lt;br /&gt;
   3      1.0137618              1.1307670              0.7271586        &lt;br /&gt;
 L   1&lt;br /&gt;
   1      0.2700058              1.0000000              1.0000000        &lt;br /&gt;
 $END&lt;br /&gt;
&lt;br /&gt;
3. Now, copy and paste the text between the $DATA and $END headings onto our external text file, CUSTOMMO.  We also need to change the change the name of each element to the corresponding symbol in the periodic table.  Finally, we need to add the name of the external file next to the element symbol, separated by one space.  Note that there should be a blank line separating the basis set information and the first, commented-out line (The line starting with the '!').  The CUSTOMMO should look like this:&lt;br /&gt;
 &lt;br /&gt;
 ! 6-31G on C and O and LANL2D2 ECP on Mo&amp;lt;br /&amp;gt;&lt;br /&gt;
 C CUSTOMMO&lt;br /&gt;
 S   6&lt;br /&gt;
   1   3047.5249000              0.0018347        &lt;br /&gt;
   2    457.3695100              0.0140373        &lt;br /&gt;
   3    103.9486900              0.0688426        &lt;br /&gt;
   4     29.2101550              0.2321844        &lt;br /&gt;
   5      9.2866630              0.4679413        &lt;br /&gt;
   6      3.1639270              0.3623120        &lt;br /&gt;
 L   3&lt;br /&gt;
   1      7.8682724             -0.1193324              0.0689991        &lt;br /&gt;
   2      1.8812885             -0.1608542              0.3164240        &lt;br /&gt;
   3      0.5442493              1.1434564              0.7443083        &lt;br /&gt;
 L   1&lt;br /&gt;
   1      0.1687144              1.0000000              1.0000000&amp;lt;br /&amp;gt;      &lt;br /&gt;
 O CUSTOMMO&lt;br /&gt;
 S   6&lt;br /&gt;
   1   5484.6717000              0.0018311        &lt;br /&gt;
   2    825.2349500              0.0139501        &lt;br /&gt;
   3    188.0469600              0.0684451        &lt;br /&gt;
   4     52.9645000              0.2327143        &lt;br /&gt;
   5     16.8975700              0.4701930        &lt;br /&gt;
   6      5.7996353              0.3585209        &lt;br /&gt;
 L   3&lt;br /&gt;
   1     15.5396160             -0.1107775              0.0708743        &lt;br /&gt;
   2      3.5999336             -0.1480263              0.3397528        &lt;br /&gt;
   3      1.0137618              1.1307670              0.7271586        &lt;br /&gt;
 L   1&lt;br /&gt;
   1      0.2700058              1.0000000              1.0000000 &lt;br /&gt;
&lt;br /&gt;
4. Repeat Step 3 above but choose Mo and select the LANL2DZ ECP instead.  A new window will pop up with the basis set information as well as the ECP data we need, since we specified the LANL2DZ '''ECP'''.  The ECP data is not inserted into the external file, rather it is placed into the input file itself (More on this later).  &lt;br /&gt;
&lt;br /&gt;
[[File:Mo_LANL2DZ_basisset.JPG|centre]]&lt;br /&gt;
&lt;br /&gt;
5.  After copying the molybdenum basis set information, your fiished external basis set file should look like this:&lt;br /&gt;
 ! 6-31G on C and O and LANL2D2 ECP on Mo&amp;lt;br /&amp;gt;&lt;br /&gt;
 C CUSTOMMO&lt;br /&gt;
 S   6&lt;br /&gt;
   1   3047.5249000              0.0018347        &lt;br /&gt;
   2    457.3695100              0.0140373        &lt;br /&gt;
   3    103.9486900              0.0688426        &lt;br /&gt;
   4     29.2101550              0.2321844        &lt;br /&gt;
   5      9.2866630              0.4679413        &lt;br /&gt;
   6      3.1639270              0.3623120        &lt;br /&gt;
 L   3&lt;br /&gt;
   1      7.8682724             -0.1193324              0.0689991        &lt;br /&gt;
   2      1.8812885             -0.1608542              0.3164240        &lt;br /&gt;
   3      0.5442493              1.1434564              0.7443083        &lt;br /&gt;
 L   1&lt;br /&gt;
   1      0.1687144              1.0000000              1.0000000&amp;lt;br /&amp;gt;      &lt;br /&gt;
 O CUSTOMMO&lt;br /&gt;
 S   6&lt;br /&gt;
   1   5484.6717000              0.0018311        &lt;br /&gt;
   2    825.2349500              0.0139501        &lt;br /&gt;
   3    188.0469600              0.0684451        &lt;br /&gt;
   4     52.9645000              0.2327143        &lt;br /&gt;
   5     16.8975700              0.4701930        &lt;br /&gt;
   6      5.7996353              0.3585209        &lt;br /&gt;
 L   3&lt;br /&gt;
   1     15.5396160             -0.1107775              0.0708743        &lt;br /&gt;
   2      3.5999336             -0.1480263              0.3397528        &lt;br /&gt;
   3      1.0137618              1.1307670              0.7271586        &lt;br /&gt;
 L   1&lt;br /&gt;
   1      0.2700058              1.0000000              1.0000000&amp;lt;br /&amp;gt; &lt;br /&gt;
 Mo CUSTOMO&lt;br /&gt;
 S   3&lt;br /&gt;
   1      2.3610000             -0.9121760        &lt;br /&gt;
   2      1.3090000              1.1477453        &lt;br /&gt;
   3      0.4500000              0.6097109        &lt;br /&gt;
 S   4&lt;br /&gt;
   1      2.3610000              0.8139259        &lt;br /&gt;
   2      1.3090000             -1.1360084        &lt;br /&gt;
   3      0.4500000             -1.1611592        &lt;br /&gt;
   4      0.1681000              1.0064786        &lt;br /&gt;
 S   1&lt;br /&gt;
   1      0.0423000              1.0000000        &lt;br /&gt;
 P   3&lt;br /&gt;
   1      4.8950000             -0.0908258        &lt;br /&gt;
   2      1.0440000              0.7042899        &lt;br /&gt;
   3      0.3877000              0.3973179        &lt;br /&gt;
 P   2&lt;br /&gt;
   1      0.4995000             -0.1081945        &lt;br /&gt;
   2      0.0780000              1.0368093        &lt;br /&gt;
 P   1&lt;br /&gt;
   1      0.0247000              1.0000000        &lt;br /&gt;
 D   3&lt;br /&gt;
   1      2.9930000              0.0527063        &lt;br /&gt;
   2      1.0630000              0.5003907        &lt;br /&gt;
   3      0.3721000              0.5794024        &lt;br /&gt;
 D   1&lt;br /&gt;
   1      0.1178000              1.0000000&lt;br /&gt;
&lt;br /&gt;
-- [[User:M.Zimmer-De Iuliis|mzd]]  21 September 2010&lt;br /&gt;
&lt;br /&gt;
====A Modified BASH Script for Runnning GAMESS(US)====&lt;br /&gt;
Below please find the bash script that we use to run GAMESS(US) on a single node with 8 processors.  &lt;br /&gt;
&lt;br /&gt;
One quirk of GAMESS(US) is that it will NOT write over old or failed jobs that have the same name as the input file you are submitting.  For example:  my input file name is &amp;quot;mo_opt.inp&amp;quot; and I submit this job to the queue.  However, it comes back seconds later with an error.  The log file says that I have typed an incorrect keyword, and lo and behold, I have a comma where it shouldn't be.  Such typos can be common.  If you simply try to re-submit, GAMESS(US) will fail again, because it has written a .log file and some other files to the /scratch/user/gamess-scratch/ directory.  These files must all be deleted before you re-submit your fixed input file.&lt;br /&gt;
&lt;br /&gt;
This script takes care of this annoying problem by deleting failed jobs with the same file name for you.&lt;br /&gt;
&lt;br /&gt;
Here it is:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #PBS -l nodes=1:ppn=8,walltime=48:00:00&lt;br /&gt;
 &lt;br /&gt;
 ## To submit type: qsub x.sh&lt;br /&gt;
 &lt;br /&gt;
 # If not an interactive job (i.e. -I), then cd into the directory where&lt;br /&gt;
 # I typed qsub.&lt;br /&gt;
 if [ &amp;quot;$PBS_ENVIRONMENT&amp;quot; != &amp;quot;PBS_INTERACTIVE&amp;quot; ]; then&lt;br /&gt;
   if [ -n &amp;quot;$PBS_O_WORKDIR&amp;quot; ]; then&lt;br /&gt;
     cd $PBS_O_WORKDIR&lt;br /&gt;
   fi&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # the input file is typically named something like &amp;quot;gamesjob.inp&amp;quot;&lt;br /&gt;
 # so the script will be run like &amp;quot;$SCINET_RUNGMS gamessjob 00 8 8&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 find /scratch/user/gamess-scratch -type f -name ${NAME:-safety_net}\* -exec /bin/rm {} \;&lt;br /&gt;
 &lt;br /&gt;
 # loading modules should be done in the submission script.&lt;br /&gt;
 # It is not recommended by SciNet staff to put this command&lt;br /&gt;
 # in the .bashrc file.&lt;br /&gt;
 module load gamess&lt;br /&gt;
 &lt;br /&gt;
 # run the program&lt;br /&gt;
 &lt;br /&gt;
 /scratch/user/rungms $NAME 00 8 8 &amp;gt;&amp;amp; $NAME.log&lt;br /&gt;
&lt;br /&gt;
====A Script to Add the $VIB Group for Hessian Restarts in GAMESS(US)====&lt;br /&gt;
&lt;br /&gt;
Sometimes, a optimization + vibrational analysis or just a plain vibrational analysis must be restarted.  This can be because the two day time limit has been exceeded or perhaps there was an error during calculation.  In any case, when this happens, the job must be restarted.  In GAMESS(US), you can restart a vibrational analysis from a previous one and it will utilize the frequencies that were already computed in the failed run.&lt;br /&gt;
&lt;br /&gt;
For example, if one submits the input file &amp;quot;job_name.inp&amp;quot; and it fails before it has finished, then one must utilize the file &amp;quot;job_name.rst&amp;quot;, which contains data that is required to restart the calculation.  This file is located in the /scratch/user/gamess-scratch directory.  Data from the &amp;quot;job_name.rst&amp;quot; file must be appended at the end of the new input file (after the coordinates and ECP section if it is present) to restart the calculation, letus call it &amp;quot;job_name_restart.inp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A shortened version of the &amp;quot;job_name.rst&amp;quot; file looks like this:&lt;br /&gt;
&lt;br /&gt;
  ENERGY/GRADIENT/DIPOLE RESTART DATA FOR RUNTYP=HESSIAN&lt;br /&gt;
  job_name                           &lt;br /&gt;
  $VIB   &lt;br /&gt;
         IVIB=   0 IATOM=   0 ICOORD=   0 E=    -3717.1435124522&lt;br /&gt;
 -5.165258381E-04 1.584665821E-02-1.206270555E-02-2.241461728E-03 3.176050715E-03&lt;br /&gt;
 -5.706738823E-04 2.502034151E-03 5.130112290E-04-2.716945939E-03 1.357008279E-03&lt;br /&gt;
 -1.059915305E-03 1.693526456E-03-2.957638907E-04-5.994938737E-04 9.684054361E-04&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
 .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The text eventually ends with one blank line. The $VIB heading and all of the text after $VIB must be appended to the end of file &amp;quot;job_name_restart.inp&amp;quot; and then &amp;quot; $END&amp;quot; must be inserted at the very end of the file.&lt;br /&gt;
&lt;br /&gt;
One could do this, one could cut cut and paste in a text editor, but we have written a small script that will do this automatically.  We call it &amp;quot;.vib.sh&amp;quot; but you can call it whatever you like.  Here it is:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # script to add vibrational data for a hessian restart&lt;br /&gt;
 &lt;br /&gt;
 awk '/\$VIB/{p=1}p;END{print &amp;quot; $END&amp;quot;}' /scratch/user/gamess-scratch/$NAME1.rst &amp;gt;&amp;gt; $NAME2.inp&lt;br /&gt;
&lt;br /&gt;
To use it, simply copy it into a new text file with the extension &amp;quot;.sh&amp;quot; and make it executable.  Also, you will need to edit the location of the &amp;quot;/scratch/user/gamess-scratch/ directory to match your user name.  The two variables in the script, NAME1 and NAME2, represent the name of your &amp;quot;.rst&amp;quot; file and your new &amp;quot;.inp&amp;quot; file, respectively.  In the example above, NAME1=job_name (that is, the same name as the .rst file that contains the $VIB data and that was created in the /gamess-scrsatch/ directory) and NAME2=job_name_restart (that is, the name of the new input file that you have prepared and want to copy the $VIB data into).&lt;br /&gt;
&lt;br /&gt;
To run it on a gpc node without submitting it to the job queue, type:&lt;br /&gt;
&lt;br /&gt;
 NAME1=job_name NAME2=job_name_restart ./vib.sh&lt;br /&gt;
&lt;br /&gt;
To run it in the queue, type:&lt;br /&gt;
&lt;br /&gt;
 qsub vib.sh -v NAME1=job_name,NAME2=job_name_restart &lt;br /&gt;
&lt;br /&gt;
-special thanks to Ramses for help with this&lt;br /&gt;
&lt;br /&gt;
-- [[User:M.Zimmer-De Iuliis|mzd]]  30 September 2010&lt;br /&gt;
&lt;br /&gt;
====Most Commonly Used Headers in The Fekl Lab====&lt;br /&gt;
&lt;br /&gt;
After about a year of using GAMESS(US), we have found that we are most often doing optimizations, frequency analyses, transition state searches and IRC calculations using DFT methods.  Here are the input decks thatwe found have worked well for inorganic and organometallic compounds.&lt;br /&gt;
&lt;br /&gt;
=====Optimization Plus Frequency (for a neutral, singlet)=====&lt;br /&gt;
 &lt;br /&gt;
 $CONTRL SCFTYP=RHF RUNTYP=OPTIMIZE DFTTYP=''FILL_IN_YOUR_PREFEENCE_HERE'' MAXIT=199 MULT=1 NOSYM=1&lt;br /&gt;
  ECP=READ $END&lt;br /&gt;
 $SYSTEM TIMLIM=2800 MWORDS=20 MEMDDI=50 PARALL=.TRUE. $END&lt;br /&gt;
 $SCF DIRSCF=.TRUE. FDIFF=.f. DIIS=.T. SOSCF=.F. DAMP=.T. $END&lt;br /&gt;
 $STATPT OPTTOL=0.00001 NSTEP=500 HSSEND=.t. $END&lt;br /&gt;
 $FORCE TEMP=298.15 PURIFY=.t. PROJCT=.t. $END&lt;br /&gt;
 $DATA&lt;br /&gt;
&lt;br /&gt;
=====Frequency Only (for a neutral, singlet)=====&lt;br /&gt;
&lt;br /&gt;
 $CONTRL SCFTYP=RHF RUNTYP=HESSIAN DFTTYP=''FILL_IN_YOUR_PREFEENCE_HERE'' MAXIT=199 MULT=1 NOSYM=1&lt;br /&gt;
  ECP=READ $END&lt;br /&gt;
 $SYSTEM TIMLIM=2800 MWORDS=20 MEMDDI=50 PARALL=.TRUE. $END&lt;br /&gt;
 $SCF DIRSCF=.TRUE. FDIFF=.f. DIIS=.T. SOSCF=.F. DAMP=.T. $END&lt;br /&gt;
 $FORCE METHOD=SEMINUM VIBANL=.TRUE. PROJCT=.T. PURIFY=.T. $END&lt;br /&gt;
 $DATA&lt;br /&gt;
&lt;br /&gt;
=====Transition State Search (for a neutral, singlet)=====&lt;br /&gt;
&lt;br /&gt;
 $CONTRL SCFTYP=RHF RUNTYP=SADPOINT DFTTYP=''FILL_IN_YOUR_PREFEENCE_HERE'' MAXIT=199 MULT=1 NOSYM=1&lt;br /&gt;
  ECP=READ $END&lt;br /&gt;
 $SYSTEM TIMLIM=2850 MWORDS=20 MEMDDI=50 PARALL=.TRUE. $END&lt;br /&gt;
 $SCF DIRSCF=.TRUE. FDIFF=.f. DIIS=.T. SOSCF=.F. $END&lt;br /&gt;
 $STATPT STSTEP=0.05 OPTTOL=0.00001 NSTEP=500 HESS=CALC HSSEND=.t. &lt;br /&gt;
  STPT=.FALSE. $END&lt;br /&gt;
 $FORCE METHOD=SEMINUM VIBANL=.TRUE. PURIFY=.T. PROJCT=.T. $END&lt;br /&gt;
 $DATA&lt;br /&gt;
&lt;br /&gt;
=====IRC (Intrinsic Reaction Coordinate following forward reaction) Calculation (for a neutral, singlet)=====&lt;br /&gt;
&lt;br /&gt;
 $CONTRL SCFTYP=RHF RUNTYP=IRC DFTTYP=''FILL_IN_YOUR_PREFEENCE_HERE'' MAXIT=199 MULT=1 NOSYM=1&lt;br /&gt;
  ECP=READ $END&lt;br /&gt;
 $IRC OPTTOL=0.00001 STRIDE=0.05 NPOINT=5000 SADDLE=.TRUE. FORWRD=.F.&lt;br /&gt;
 $END&lt;br /&gt;
 $SYSTEM TIMLIM=2850 MWORDS=20 MEMDDI=50 PARALL=.TRUE. $END&lt;br /&gt;
 $SCF DIRSCF=.TRUE. FDIFF=.f. $END&lt;br /&gt;
 $FORCE TEMP=298.15 PURIFY=.t. PROJCT=.t. $END&lt;br /&gt;
 $DATA&lt;br /&gt;
&lt;br /&gt;
-- [[User:M.Zimmer-De Iuliis|mzd]]  21 September 2010&lt;br /&gt;
&lt;br /&gt;
====How to Run an IRC Calculation Using GAMESS(US)====&lt;br /&gt;
&lt;br /&gt;
An IRC or Intrinsic Reaction Coordinate calculation follows the imaginary mode of the vibrational analysis of a transition state calculation.  In GAMESS(US), you can choose to follow the forward (towards the products) or backward (toward the reactants) direction.  As shown above in the IRC header that we use, the direction of the IRC calculation is controlled by the &amp;quot;FORWRD&amp;quot; key word.  Using &amp;quot;FORWRD=.T.&amp;quot; means that the IRC is following the forward direction, while using &amp;quot;FORWRD=.F.&amp;quot; means that the IRC calculation is following the backward direction.&lt;br /&gt;
&lt;br /&gt;
Let us say we want to perform an IRC.  In order to perform an IRC calculation, you must first perform a vibrational analysis of you molecule and check to ensure there is only 1 negative frequency.  If that is the case, then the vibrational analysis completed successfully and there will be a file, let us call it &amp;quot;job_name.dat&amp;quot; in the &amp;quot;/users/$USER/gamess-scratch/&amp;quot; directory (where $USER is your user name) with the extension &amp;quot;.dat&amp;quot;.  In this file is data that is required for the IRC input file.&lt;br /&gt;
&lt;br /&gt;
To prepare your IRC input file, prepare an input file using the coordinates of the optimized structure of the transition state.  This can be from ChemCraft or Avogadro or MacMolPlt - what ever you prefer to use.  Then copy and paste the IRC header above or use your own parameters. Call it whatever you want, as long as it has an &amp;quot;.inp&amp;quot; extension. Let us call in &amp;quot;irc_job.inp&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
For example, the &amp;quot;STRIDE&amp;quot; value determines the &amp;quot;size&amp;quot; of the steps between each point on the IRC graph.  If you increase the value of the stride, say from 0.05 to 0.1, then the steps in between each point become larger and you will approach the minimum faster (this will give you fewer data points should you chose to plot the IRC data).  Decreasing the stride value, say from 0.05 to 0.01 will make the steps in between each point become smaller and you may not reach the minimum of the reaction coordinate in the alloted time period.&lt;br /&gt;
&lt;br /&gt;
You should now have an input file with an IRC header, the coordinates of the transition state and basis set and ECP information called &amp;quot;irc_job.inp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now you need to use the &amp;quot;job_name.dat&amp;quot; file in the &amp;quot;/users/$USER/gamess-scratch/&amp;quot; In this file are a number of blocks of data that are sandwiched between a line that contains only &amp;quot; $HESS&amp;quot; and a line that contains only &amp;quot; $END&amp;quot;.  What you need is the LAST of these blocks of text and it has to be copied and pasted directly below the last entry of your input file.&lt;br /&gt;
&lt;br /&gt;
This can be difficult and time consuming, as the .dat files can be very large (sometimes over 150 MB) and cumbersome to navigate through.  However, we have written a script, similar to the .vib.sh script, that can help you out with this.  Basically, this script does all the copying and pasting for you.  &lt;br /&gt;
&lt;br /&gt;
Here it is:&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 # script to add hessian data for an IRC calculation&lt;br /&gt;
 &lt;br /&gt;
 awk '/\$HESS/{arr=&amp;quot;&amp;quot;;f=1} f {arr=(arr)?arr ORS $0:$0} /\$END/{f=0} END {print arr}' /scratch/$USER/gamess-scratch/$DAT.dat &amp;gt;&amp;gt; $IN.inp&lt;br /&gt;
&lt;br /&gt;
To use it, simply copy it into a new text file with the name &amp;quot;irc.sh&amp;quot; and make it executable. Also, you will need to edit the location of the &amp;quot;/scratch/user/gamess-scratch/ directory to match your user name. The two variables in the script, $DAT and $IN, represent the name of your &amp;quot;.dat&amp;quot; file and your new &amp;quot;.inp&amp;quot; file, respectively. Using our current example, $DAT=job_name and In the example above, $IN=irc_job (that is, the same name as the .dat file that contains the $HESS data and that was created in the /gamess-scrsatch/ directory) and IN=irc_job (that is, the name of the new input file that you have prepared and want to copy the $HESS data into). &lt;br /&gt;
&lt;br /&gt;
To run it on a gpc node without submitting it to the job queue, type:&lt;br /&gt;
&lt;br /&gt;
 DAT=job_name IN=irc_job ./irc.sh&lt;br /&gt;
&lt;br /&gt;
To run it in the queue, type:&lt;br /&gt;
&lt;br /&gt;
 qsub irc.sh -v DAT=job_name,IN=irc_job &lt;br /&gt;
&lt;br /&gt;
-- [[User:M.Zimmer-De Iuliis|mzd]]  21 October 2010&lt;br /&gt;
&lt;br /&gt;
===Vienna Ab-initio Simulation Package (VASP)===&lt;br /&gt;
Please refer to the [http://www.vasp.at VASP page].&lt;br /&gt;
&lt;br /&gt;
User-supplied content below.&lt;br /&gt;
&lt;br /&gt;
====Tips from the Polanyi Lab====&lt;br /&gt;
Using VASP on SciNet&lt;br /&gt;
&lt;br /&gt;
Logon using SSH&lt;br /&gt;
login.scinet.utoronto.ca&lt;br /&gt;
&lt;br /&gt;
then ssh to the TCS cluster&lt;br /&gt;
ssh tcs01&lt;br /&gt;
&lt;br /&gt;
change directory to &lt;br /&gt;
cd /scratch/imcnab/test/Si111 - or whatever other directory is convenient.&lt;br /&gt;
&lt;br /&gt;
VASP is contained in the directory imcnab/bin&lt;br /&gt;
&lt;br /&gt;
To submit a job, first edit (at least) the POSCAR file and other VASP&lt;br /&gt;
input files as necessary.&lt;br /&gt;
&lt;br /&gt;
=====Input Files=====&lt;br /&gt;
The minimum set of input files is:&lt;br /&gt;
&lt;br /&gt;
'''vasp.script''' - script file telling TCS to run a VASP job - must be edited to run in current working directory.&lt;br /&gt;
&lt;br /&gt;
'''POSCAR''' - specifies supercell geometry and &amp;quot;ionic&amp;quot; positions (i.e. atomic centres) and whether relaxation allowed. Ionic positions may be given in cartesion coordinates (x,y,z in A) or &amp;quot;absolute&amp;quot;, which are fractions of the unit cell vectors. CONTCAR is always in absolute coords, so after the first run of any job, you'll find yourself running in absolute coords. VMD can be used to change these back to cartesian coordinates.&lt;br /&gt;
&lt;br /&gt;
'''INCAR''' - specifies parameters to run the job. INCAR is free format - can put input commands in ANY order.&lt;br /&gt;
&lt;br /&gt;
'''POTCAR''' - specifies the potentials to use for each atomic type. Must be in the same order as the atoms are first met in POSCAR&lt;br /&gt;
&lt;br /&gt;
'''KPOINTS''' - specifies the number and position of K-points to use in the calculation.&lt;br /&gt;
&lt;br /&gt;
Any change of name or directory needs to be edited into the job script. The job script name is &amp;quot;vasp.script&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
VASP attempts to read initial wavefunctions from WAVECAR, so if a job is run in steps, leaving the WAVECAR file on the working directory is an efficient way to start the next stage of the calculation&lt;br /&gt;
&lt;br /&gt;
VASP also writes CONTCAR which is of the same format as POSCAR, and can simply be renamed if it is to be used as the starting point for a new job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Submit the job to load-leveller with the command llsubmit ./vasp.script from the correct working directory.&lt;br /&gt;
&lt;br /&gt;
can check the status of a job with llq&lt;br /&gt;
&lt;br /&gt;
can cancel a job using llcancel tcs-fXXnYY.$PID where tcs number etc is shown by llq&lt;br /&gt;
&lt;br /&gt;
== &lt;br /&gt;
INPUT FILES ==&lt;br /&gt;
&lt;br /&gt;
The minimum set of input files is:&lt;br /&gt;
&lt;br /&gt;
'''vasp.script''' - script file telling TCS to run a VASP job - must be edited to run in current working directory.&lt;br /&gt;
&lt;br /&gt;
'''POSCAR''' - specifies supercell geometry and &amp;quot;ionic&amp;quot; positions (i.e. atomic centres) and whether relaxation allowed. Ionic positions may be given in cartesion coordinates (x,y,z in A) or &amp;quot;absolute&amp;quot;, which are fractions of the unit cell vectors. CONTCAR is always in absolute coords, so after the first run of any job, you'll find yourself running in absolute coords. VMD can be used to change these back to cartesian coordinates.&lt;br /&gt;
&lt;br /&gt;
'''INCAR'''  - specifies parameters to run the job. INCAR is free format - can put input commands in ANY order.&lt;br /&gt;
&lt;br /&gt;
'''POTCAR''' - specifies the potentials to use for each atomic type. Must be in the same order as the atoms are first met in POSCAR&lt;br /&gt;
&lt;br /&gt;
'''KPOINTS''' - specifies the number and position of K-points to use in the calculation.&lt;br /&gt;
&lt;br /&gt;
Any change of name or directory needs to be edited into the job script.&lt;br /&gt;
The job script name is &amp;quot;'''vasp.script'''&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
VASP attempts to read initial wavefunctions from WAVECAR, so if a job is&lt;br /&gt;
run in steps, leaving the WAVECAR file on the working directory is an &lt;br /&gt;
efficient way to start the next stage of the calculation&lt;br /&gt;
&lt;br /&gt;
VASP also writes CONTCAR which is of the same format as POSCAR, and can&lt;br /&gt;
simply be renamed if it is to be used as the starting point for a new job.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Submit the job to load-leveller with the command&lt;br /&gt;
llsubmit ./vasp.script from the correct working directory.&lt;br /&gt;
&lt;br /&gt;
can check the status of a job with &lt;br /&gt;
llq&lt;br /&gt;
&lt;br /&gt;
can cancel a job using&lt;br /&gt;
llcancel tcs-fXXnYY.$PID    where tcs number etc is shown by llq&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== GENERAL NOTES =====&lt;br /&gt;
&lt;br /&gt;
MUCH faster to use ISPIN=1, no-spin (corresponds to RHF, rather than &lt;br /&gt;
ISPIN=2 which corresponds to URHF). So far, I've not found a system where the atom positions differ, or where the calculated electronic energy differs by more than 1E-4, which is the convergence &lt;br /&gt;
criteria set.&lt;br /&gt;
&lt;br /&gt;
MUCH faster to use real space LREAL = A, NSIM=4. &lt;br /&gt;
&lt;br /&gt;
So, ''always'' optimize in real space first, then re-optimize in reciprocal space. This does NOT guarantee, a one-step optimization in reciprocal space. May still need to progressively&lt;br /&gt;
relax a large system.&lt;br /&gt;
&lt;br /&gt;
'''Relaxing a large system.'''&lt;br /&gt;
If you attempt to relax a large system in one step, it will usually fail.&lt;br /&gt;
&lt;br /&gt;
The starting geometry is usually an unrelaxed molecule above an unrelaxed surface.&lt;br /&gt;
The bottom plane of the surface will NEVER be relaxed, because this corresponds to the fixed boundary condition of REALITY. &lt;br /&gt;
&lt;br /&gt;
First, relax the molecule alone (assuming you have already found a good starting position from single point calcultions, place the molecule closer to the surface than you think it should be (say 0.9 VdW radii away).&lt;br /&gt;
&lt;br /&gt;
Then ALSO allow the top layer of the surface to relax.&lt;br /&gt;
Then ALSO allow the second top layer of the surface to relax... etc... etc.&lt;br /&gt;
&lt;br /&gt;
If this DOESN'T WORK: Then relax X,Y and Z separately in iterations.&lt;br /&gt;
Example. For the following problem, representing layers of the crystal going DOWN from the top (Z pointing to the top of the screen)&lt;br /&gt;
&lt;br /&gt;
Molecule&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
we can try the following relaxation schemes:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Successive relaxation, Layer by Layer:&amp;lt;br /&amp;gt;&lt;br /&gt;
(1) &amp;lt;br /&amp;gt;&lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer.&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(2)&amp;lt;br /&amp;gt; &lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer.&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(3)&amp;lt;br /&amp;gt; &lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer.&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
etc. etc... if this works then you're fine. However, it can happen that even by Layer 2, you're running into real problems, and the ionic relaxation NEVER converges. In which case, I have found the following scheme (and variations thereof) useful:&lt;br /&gt;
&lt;br /&gt;
(1)&amp;lt;br /&amp;gt; &lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(2) &amp;lt;br /&amp;gt;&lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(3) &amp;lt;br /&amp;gt;&lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IF (3) DOESN'T converge THEN TRY&lt;br /&gt;
&lt;br /&gt;
(2')&amp;lt;br /&amp;gt;&lt;br /&gt;
Molecule Z   Relax, XY FIXED&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  Z   Relax, XY FIXED&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- you are allowing the top layers to move only UP or DOWN, while allowing the intermediate&lt;br /&gt;
layer 2 to fully relax (actually, there is no way of telling VASP to move ALL atoms by the SAME deltaZ, but that appears to be the effect.&lt;br /&gt;
Followed by&lt;br /&gt;
&lt;br /&gt;
(2&amp;quot;)&amp;lt;br /&amp;gt;&lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If (2&amp;quot;) doesn't work, you need to go back to the output of (2') and vary the cycle - perhaps something like:&lt;br /&gt;
(2&amp;quot;')&amp;lt;br /&amp;gt;&lt;br /&gt;
Molecule XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 1  XYZ Relax&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 2  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 3  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 4  XYZ fixed&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 5 - fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
Layer 6 - Valence H's, fixed layer&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then try (2&amp;quot;) again.&lt;br /&gt;
&lt;br /&gt;
Repeat as necessary. This scheme does appear to work quite well for big unit cells. It can be very difficult to relax as many layers as necessary in a big unit cell.&lt;br /&gt;
&lt;br /&gt;
Experience on the One Per Corner Hole problem shows that it may be necessary to have a large number of UNRELAXED (i.e. BULK silicon) layers underneath the relaxed layers in order to get physically meaningful answers. This is because silicon is so elastic.&lt;br /&gt;
&lt;br /&gt;
===== Problems and solutions: =====&lt;br /&gt;
&lt;br /&gt;
If getting ZBRENT errors, try changing ALGO. Usually use ALGO = Fast, change to ALGO = Normal. With ALGO = Normal, NFREE now DOES correspond to degrees of freedom (maximum suggested setting is 20). Haven't found this terribly helpful.&lt;br /&gt;
&lt;br /&gt;
Many calculations seem to fail after 20 or 30 ionic steps. I suspect a memory leak.&lt;br /&gt;
&lt;br /&gt;
Sometimes the calculation appears to lose WAVECAR... this is not a disaster, just means a slight increase in start time as the first wavefunction is calculated.&lt;br /&gt;
&lt;br /&gt;
If calculation does not finish nicely, can force a WAVECAR generation by doing a purely electronic calculation (these are pretty fast).&lt;br /&gt;
&lt;br /&gt;
VASP is VERY slow at relaxing molecules at surfaces. This is because it doesn't know a molecule is a connected entity. It treats every atom independently. &lt;br /&gt;
&lt;br /&gt;
THEREFORE, MUCH MUCH faster to try molecular positions by hand first. &lt;br /&gt;
Do some sample calculations at a few geometries to find a good starting point.&lt;br /&gt;
&lt;br /&gt;
ALSO, once you think you know where the molecule is to be placed, put it too close to the surface, and let it relax outwards... the forces close to the surface are repulsive, and much steeper, so relaxation is FASTER in this direction.&lt;br /&gt;
&lt;br /&gt;
=='''Climate Modelling'''==&lt;br /&gt;
&lt;br /&gt;
The Community Earth System Model (CESM) is a fully-coupled, global climate model that provides state-of-the-art computer simulations of the Earth's past, present, and future climate states.&lt;br /&gt;
&lt;br /&gt;
Development of a comprehensive CESM that accurately represents the principal components of the climate system and their couplings requires both wide intellectual participation and computing capabilities beyond those available to most U.S. institutions. The CESM, therefore, must include an improved framework for coupling existing and future component models developed at multiple institutions, to permit rapid exploration of alternate formulations. This framework must be amenable to components of varying complexity and at varying resolutions, in accordance with a balance of scientific needs and resource demands. In particular, the CESM must accommodate an active program of simulations and evaluations, using an evolving model to address scientific issues and problems of national and international policy interest.&lt;br /&gt;
&lt;br /&gt;
User guides and information on each version of the model can be found at the following links:&lt;br /&gt;
&lt;br /&gt;
CCSM3: http://www.cesm.ucar.edu/models/ccsm3.0/&lt;br /&gt;
CCSM4: http://www.cesm.ucar.edu/models/ccsm4.0/&lt;br /&gt;
CESM1: http://www.cesm.ucar.edu/models/cesm1.0/&lt;br /&gt;
&lt;br /&gt;
Please see:&lt;br /&gt;
&lt;br /&gt;
===[[Installing CCSM3]]===&lt;br /&gt;
&lt;br /&gt;
===[[Running CCSM3]]===&lt;br /&gt;
&lt;br /&gt;
===[[Installing CCSM4]]===&lt;br /&gt;
&lt;br /&gt;
===[[Running CCSM4]]===&lt;br /&gt;
&lt;br /&gt;
===[[Post Processing CCSM Output]]===&lt;br /&gt;
&lt;br /&gt;
===[[CCSM4/CESM1 TCS Simulation List]]===&lt;br /&gt;
&lt;br /&gt;
==Engineering==&lt;br /&gt;
&lt;br /&gt;
===ANSYS===&lt;br /&gt;
&lt;br /&gt;
Please refer to the [[Ansys]] page.&lt;br /&gt;
&lt;br /&gt;
==Medicine/Bio==&lt;br /&gt;
&lt;br /&gt;
==High Energy Physics==&lt;br /&gt;
&lt;br /&gt;
==Structural Biology==&lt;br /&gt;
Molecular simulation of proteins, lipids, carbohydrates, and other biologically relevant molecules.&lt;br /&gt;
===Molecular Dynamics (MD) simulation===&lt;br /&gt;
====GROMACS====&lt;br /&gt;
Please refer to the [[gromacs|GROMACS]] page&lt;br /&gt;
====AMBER====&lt;br /&gt;
Please refer to the [[amber|AMBER]] page&lt;br /&gt;
====NAMD====&lt;br /&gt;
'''Note: the instructions below are rather old, and should not be needed by most users. A version of namd is available on the GPC in the module &amp;lt;tt&amp;gt;namd&amp;lt;/tt&amp;gt;. For current information see the [[Namd]] page'''&lt;br /&gt;
&lt;br /&gt;
NAMD is one of the better scaling MD packages out there. With sufficiently large systems, it is able to scale to hundreds or thousands of cores on Scinet. Below are details for compiling and running NAMD on Scinet.&lt;br /&gt;
&lt;br /&gt;
More information regarding performance and different compile options coming soon...&lt;br /&gt;
&lt;br /&gt;
=====Compiling NAMD for GPC=====&lt;br /&gt;
Ensure the proper compiler/mpi modules are loaded.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load intel&lt;br /&gt;
module load openmpi/1.3.3-intel-v11.0-ofed&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Compile Charm++ and NAMD'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#Unpack source files and get required support libraries&lt;br /&gt;
tar -xzf NAMD_2.7b1_Source.tar.gz&lt;br /&gt;
cd NAMD_2.7b1_Source&lt;br /&gt;
tar -xf charm-6.1.tar&lt;br /&gt;
wget http://www.ks.uiuc.edu/Research/namd/libraries/fftw-linux-x86_64.tar.gz&lt;br /&gt;
wget http://www.ks.uiuc.edu/Research/namd/libraries/tcl-linux-x86_64.tar.gz&lt;br /&gt;
tar -xzf fftw-linux-x86_64.tar.gz; mv linux-x86_64 fftw&lt;br /&gt;
tar -xzf tcl-linux-x86_64.tar.gz; mv linux-x86_64 tcl&lt;br /&gt;
#Compile Charm++&lt;br /&gt;
cd charm-6.1&lt;br /&gt;
./build charm++ mpi-linux-x86_64 icc --basedir /scinet/gpc/mpi/openmpi/1.3.3-intel-v11.0-ofed/ --no-shared -O -DCMK_OPTIMIZE=1&lt;br /&gt;
cd ..&lt;br /&gt;
#Compile NAMD. &lt;br /&gt;
#Edit arch/Linux-x86_64-icc.arch and add &amp;quot;-lmpi&amp;quot; to the end of the CXXOPTS and COPTS line.&lt;br /&gt;
#Make a builds directory if you want different versions of NAMD compiled at the same time.&lt;br /&gt;
mkdir builds&lt;br /&gt;
./config builds/Linux-x86_64-icc --charm-arch mpi-linux-x86_64-icc&lt;br /&gt;
cd builds/Linux-x86_64-icc/&lt;br /&gt;
make -j4 namd2 # Adjust value of j as desired to specify number of simultaneous make targets. &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
--[[User:Cmadill|Cmadill]] 16:18, 27 August 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
=====Running Fortran=====&lt;br /&gt;
On the development nodes, there is an old gcc. The associated libraries are not on the compute nodes. Ensure the line:&lt;br /&gt;
&lt;br /&gt;
module load gcc&lt;br /&gt;
&lt;br /&gt;
is in your .bashrc file.&lt;br /&gt;
&lt;br /&gt;
====LAMMPS====&lt;br /&gt;
[[Image:StrongScalingLAMMPS.png|thumb|320px|right|Strong scaling test on GPC with OpenMPI and IntelMPI on Ethernet and InfiniBand]]&lt;br /&gt;
[[Image:WeakScalingLAMMPS.png|thumb|320px|right|Weak scaling test on GPC with OpenMPI and IntelMPI on Ethernet and InfiniBand]]&lt;br /&gt;
LAMMPS is a parallel MD code that can be found [http://lammps.sandia.gov/ here].&lt;br /&gt;
&lt;br /&gt;
'''Compiling LAMMPS on GPC'''&lt;br /&gt;
&lt;br /&gt;
First, make sure the ''intel/intel-v11.1.072'' and ''openmpi/1.4.1-intel-v11.0-ofed'' modules are loaded.&lt;br /&gt;
&lt;br /&gt;
To download LAMMPS into your directory, instructions can be found [http://lammps.sandia.gov/download.html here].&lt;br /&gt;
&lt;br /&gt;
In ''src/MAKE/Makefile.openmpi'', make the following changes:&lt;br /&gt;
&lt;br /&gt;
FFT_INC = -DFFT_NONE&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# FFT_PATH =&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;# FFT_LIB =&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that the FFT library is required for using PPPM from the KSPACE package.&lt;br /&gt;
&lt;br /&gt;
In the ''src'' directory, run ''make openmpi'', which should produce a ''lmp_openmpi'' executable.&lt;br /&gt;
&lt;br /&gt;
--[[User:sellan|sellan]] 14:08 Jul 28 2011&lt;br /&gt;
&lt;br /&gt;
'''Scaling Tests on GPC'''&lt;br /&gt;
&lt;br /&gt;
Results from strong scaling tests for LAMMPS using EAM potentials on GPC are shown in the graph on the right.  Test simulation ran 500 timesteps for 4,000,000 atoms.&lt;br /&gt;
&lt;br /&gt;
Results from weak scaling tests for LAMMPS using EAM potentials on GPC are shown in the graph on the right.  Test simulation ran 500 timesteps for 32,000 atoms per processor.&lt;br /&gt;
&lt;br /&gt;
OpenMPI version used: openmpi/1.4.1-intel-v11.0-ofed&lt;br /&gt;
&lt;br /&gt;
IntelMPI version used: intelmpi/impi-4.0.0.013&lt;br /&gt;
&lt;br /&gt;
LAMMPS version used: 15 Jan 2010&lt;br /&gt;
&lt;br /&gt;
'''Summary of Scaling Tests'''&lt;br /&gt;
&lt;br /&gt;
Results show good scaling for both OpenMPI and IntelMPI on Ethernet up to 16 processors, after which performance begins to suffer.  On Infiniband, excellent scaling is maintained to 512 processors.&lt;br /&gt;
&lt;br /&gt;
IntelMPI shows slightly better performance compared to OpenMPI when running with Infiniband.&lt;br /&gt;
&lt;br /&gt;
--[[User:jchu|jchu]] 14:08 Feb 2, 2010&lt;br /&gt;
&lt;br /&gt;
===Monte Carlo (MC) simulation===&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8641</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8641"/>
		<updated>2016-11-07T17:50:46Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png|up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png|up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:up.png|up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up.png|up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png|up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png|up]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png|up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png|down|link=P8]][[P8]]&lt;br /&gt;
|[[File:up.png|down|link=Knights Landing]][[Knights Landing|KNL]]&lt;br /&gt;
|[[File:up.png|up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:up.png|up|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 7 11:59:00 EST 2016&amp;lt;/b&amp;gt; File system has been restored. Jobs are being scheduled again. Please resubmit jobs if they crashed or had issues last night or this morning.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 7 10:40:00 EST 2016&amp;lt;/b&amp;gt; Due to this issue, many jobs will have either crashed, or have not had a change to write their output; please check any jobs you had running overnight. The scratch file system is expected to be back up soon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 7 9:40:00 EST 2016&amp;lt;/b&amp;gt; Scratch file system filled up overnight. We are investigating how to mitigate this. In the meantime, the job scheduler has been stopped, so no new jobs will start (but will remain in the queue).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Nov 7 8:00:00 EST 2016&amp;lt;/b&amp;gt; Apparent file system issues.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Oct 28 23:00:00 EDT 2016&amp;lt;/b&amp;gt; The login nodes and devel nodes of the GPC, P7 and BGQ, as well as the datamover nodes, will be rebooted between 2 am and 6 am on Sat Oct 29. Running and queued jobs will not be affected, but interactive sessions will be closed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Sep 26 10:33:47 EDT 2016&amp;lt;/b&amp;gt; HPSS schedule is back to normal operations. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Sep 25 12:37:12 EDT 2016&amp;lt;/b&amp;gt; Problems resolved. Systems have started coming online. Check the status &amp;quot;lights&amp;quot; above.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Sep 25 10:16:37 EDT 2016&amp;lt;/b&amp;gt; Power outage tripped main breaker and other circuits. Power has been restored to site but there may be an issue with cooling system power that needs to be resolved before any compute systems can be restarted&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Sep 25 09:28:15 EDT 2016&amp;lt;/b&amp;gt; Staff enroute to site. After assessing situation will give ETA for recovery.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Sep 25 08:46 EDT 2016&amp;lt;/b&amp;gt; Power outage at datacentre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=GPC_Quickstart&amp;diff=8629</id>
		<title>GPC Quickstart</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=GPC_Quickstart&amp;diff=8629"/>
		<updated>2016-10-26T20:52:07Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:University_of_Tor_79284gm-a.jpg|center|300px|thumb]]&lt;br /&gt;
|name=General Purpose Cluster (GPC)&lt;br /&gt;
|installed=June 2009&lt;br /&gt;
|operatingsystem= Linux Centos 6.4&lt;br /&gt;
|loginnode= gpc01..gpc08 (from &amp;lt;tt&amp;gt;login.scinet&amp;lt;/tt&amp;gt;)&lt;br /&gt;
|nnodes=3864 (30,912 cores)&lt;br /&gt;
|rampernode=16 Gb &lt;br /&gt;
|corespernode=8 (16 threads)&lt;br /&gt;
|interconnect=840 nodes 1:1 DDR, 3024 nodes 5:1 QDR&lt;br /&gt;
|vendorcompilers=icc (C) ifort (fortran) icpc (C++)&lt;br /&gt;
|queuetype=[[Moab | Moab/Torque]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Specifications===&lt;br /&gt;
The General Purpose Cluster is an extremely large cluster (ranked [http://www.top500.org/list/2009/06/100 16th] in the world at its inception, currently still at #391) and is where most computations are to be done at SciNet.  &lt;br /&gt;
The GPC consists of 3,780 nodes with 16 GB of memory or more and 8 Intel cores each. The nodes use a shared parallel file system and have no local disks. The compute nodes are accessed through a queuing system that allows jobs with a minimum of 15 minutes and maximum wall time of 48 hours .&lt;br /&gt;
&lt;br /&gt;
Technical details: The GPC is an IBM iDataPlex cluster based on Intel's Nehalem architecture (one of the [http://www.hpcwire.com/features/HPC-Vendors-Jump-On-Nehalem-42360237.html first in the world] to make use of the new chips). The GPC consists of 3,780 nodes (IBM iDataPlex DX360M2) with a total of 30,912  cores (Intel Xeon E5540) at 2.53GHz, with 16GB RAM per node (2GB per core). Approximately one quarter of the cluster is interconnected with non-blocking DDR InfiniBand while the rest of the nodes are connected with 5:1 blocked QDR InfiniBand.&lt;br /&gt;
&lt;br /&gt;
Note: from an operational standpoint, the contributed systems [[Gravity]] and [[Sandy]], as well as the [[Visualization_Nodes|Viz]] system, are more or less part of the GPC.&lt;br /&gt;
&lt;br /&gt;
===Login===&lt;br /&gt;
&lt;br /&gt;
First login via [[Ssh | ssh]] with your SciNet account at &amp;lt;tt&amp;gt;login.scinet.utoronto.ca&amp;lt;/tt&amp;gt;. This puts you on a 'login node', but not yet on the GPC. From the login node, you have to ssh to one of the 8 development nodes (&amp;lt;tt&amp;gt;gpc01&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;gpc02&amp;lt;/tt&amp;gt;, ..., &amp;lt;tt&amp;gt;gpc08&amp;lt;/tt&amp;gt;) to compile/test your code.&lt;br /&gt;
&lt;br /&gt;
===Compile/Devel Nodes===&lt;br /&gt;
&lt;br /&gt;
To get to one of the devel nodes from a scinet login node, you can ssh to &amp;lt;tt&amp;gt;gpc01&amp;lt;/tt&amp;gt;..&amp;lt;tt&amp;gt;gpc08&amp;lt;/tt&amp;gt;.  You may also just use the &amp;lt;tt&amp;gt;gpc&amp;lt;/tt&amp;gt; command to take directly to the dev node with lowest cpu load (reassessed every 5 minutes).&lt;br /&gt;
&lt;br /&gt;
Except for these four development nodes on the GPC, all other nodes are 'compute nodes' that can be used only through the scheduler.  The devel nodes have the same hardware configuration as most of the compute nodes except with more memory -- 8 processing cores with 36 GB RAM and QDR Infiniband.  You can compile and test your codes on these devel nodes. To interactively test on more than 8 processors, you can submit an [[GPC_Quickstart#Submitting_an_Interactive_.28Debug.29_Job | interactive job request]] to get time-limited command-line access to a compute node.&lt;br /&gt;
&lt;br /&gt;
Your [[Storage_Quickstart | home directory]] is in &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt;. You have 50 GB there that is backed up. In addition, you have a larger, non-backed up space in &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt; for temporary files.  Note that your directories are encoded in the environment variables &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt;.  Currently &amp;lt;tt&amp;gt;$HOME=/home/G/GROUP/USER&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$SCRATCH=/scratch/G/GROUP/USER&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;/scratch2/G/GROUP/USER&amp;lt;/tt&amp;gt; (where GROUP is your group's name, G is the first letter of that groups name, and USER is your user name). But the locations can change as the storage system evolves and grows with demand, so please use the environment variables!  &lt;br /&gt;
&lt;br /&gt;
The GPC devel and compute nodes do not have local disks. Instead, &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt; are shared parallel file systems (the file system is called GPFS), which means that your files are seen on all the nodes.&lt;br /&gt;
&lt;br /&gt;
'''Your home directory cannot be written to by the compute nodes!''' Thus, to run jobs, you'll use the &amp;lt;tt&amp;gt;$SCRATCH&amp;lt;/tt&amp;gt; directory (currently &amp;lt;tt&amp;gt;/scratch/g/group/USER&amp;lt;/tt&amp;gt; but again, use the environment variable). Here, there is a large amount of disk space, but it is not backed up. Thus it makes sense to keep your codes in /home, compile there, and then run them in the /scratch directory.&lt;br /&gt;
&lt;br /&gt;
===Modules and Environment Variables===&lt;br /&gt;
&lt;br /&gt;
To use most packages on the SciNet machines - including any of the compilers - , you will have to use the `module' command.  The command &amp;lt;tt&amp;gt;module load some-package&amp;lt;/tt&amp;gt; will set your environment variables (&amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;, etc) to include the default version of that package.   &amp;lt;tt&amp;gt;module load some-package/specific-version&amp;lt;/tt&amp;gt; will load a specific version of that package.  This makes it very easy for different users to use different versions of compilers, MPI versions, libraries etc.&lt;br /&gt;
&lt;br /&gt;
Note that to use even the gcc compilers you will have to do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load gcc&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
but in fact you probably should use the intel compilers installed on this system as they often produce faster executables (and occasionally, much faster.)&lt;br /&gt;
&lt;br /&gt;
A list of the installed software and more information on using the module command is available in [[Software_and_Libraries | Software &amp;amp; Libraries]].  Or, when logged in to the gpc, you can &lt;br /&gt;
see all available modules on the system by typing &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To load a module (for example, the default version of the intel compilers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load intel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload a module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module unload intel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload all modules&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To list all loaded modules&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module list&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These commands should go in your submission scripts to make sure you&lt;br /&gt;
are using the correct packages.  It is possible to load them in your .bashrc files as well, but this is generally not recommended (see [[Important .bashrc guidelines]]), especially if you routinely have to flip back and forth between modules.&lt;br /&gt;
&lt;br /&gt;
Note that a &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; command ''only'' sets the environment variables in your current shell (and any subprocesses that the shell launches).   It does ''not'' affect other shell environments; in particular, a queued job that is running is unaffected by you interactively loading a module, and conversely you loading a module at the prompt and then submitting a job does not ensure that the module is loaded when the job runs.  To ensure that a module is loaded when a job runs, be sure to put your &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; command in your job submission script.&lt;br /&gt;
&lt;br /&gt;
Again more information on modules, and how to resolve dependencies between modules can be found on the [[Software_and_Libraries | Software &amp;amp; Libraries]] page.&lt;br /&gt;
&lt;br /&gt;
===Compilers===&lt;br /&gt;
&lt;br /&gt;
The intel compilers are icc/icpc/ifort for C/C++/Fortran, and are available with the default module &amp;quot;intel&amp;quot;.  The intel compilers are recommended over the GNU compilers.  Documentation about icpc is available at &lt;br /&gt;
http://software.intel.com/en-us/articles/intel-software-technical-documentation/.  The Intel compilers accept many of the options that the GNU compilers accept, but tend to produce faster programs on our system.  If, for some reason, you really need the GNU compilers, the latest version of the GNU compiler collection (currently 4.4.0) is available by loading the &amp;quot;gcc&amp;quot; module, with gcc/g++/gfortran for C/C++/Fortran.  [[Co-array_Fortran_on_the_GPC|Coarray fortran]] is support by the intel compilers from version 12 upwards and by the GNU fortran compiler version 5.2.0. Note that the f77/g77 compilers are not supported, but the available fortran compilers are able to compile fortran 77. &lt;br /&gt;
&lt;br /&gt;
To ensure that the intel compilers are in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; and their libraries are in your &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;, use the command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load intel/15.0.2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optimize your code for the GPC machine using of at least the following compiler flags: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   -O3 -xHost&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
(or &amp;lt;tt&amp;gt;-O3 -march=native&amp;lt;/tt&amp;gt; for the GNU compilers). &lt;br /&gt;
&lt;br /&gt;
*If your program uses openmp, add &amp;lt;tt&amp;gt;-fopenmp&amp;lt;/tt&amp;gt; for GNU compilers.&lt;br /&gt;
*If you get the warning &amp;lt;tt&amp;gt;feupdatreenv is not implemented&amp;lt;/tt&amp;gt;, add -limf to the link line.&lt;br /&gt;
*If you need to link in the MKL libraries, you are well advised to use the Intel(R) Math Kernel Library Link Line Advisor: http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/ for help in devising the list of libraries to link with your code. '''Note that this give the link line for the command prompt. When using this in Makefiles, replace $MKLPATH by ${MKLPATH}.'''&lt;br /&gt;
*More questions about compiling? See the [[FAQ#Compiling_your_Code|FAQ]].&lt;br /&gt;
&lt;br /&gt;
===Debuggers===&lt;br /&gt;
&lt;br /&gt;
* '''ddt''' - Allinea's graphical parallel debugger, in the &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt; module. Highly recommended!&lt;br /&gt;
* '''gdb''' - The GNU Debugger, available in the &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
* '''idbc/idb''' - The intel debuggers, part of the &amp;lt;tt&amp;gt;intel&amp;lt;/tt&amp;gt; module(s).&lt;br /&gt;
* '''ddd''' - A graphical debuggerThe GNU Debugger, available in the &amp;lt;tt&amp;gt;ddd&amp;lt;/tt&amp;gt; module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note that to debug code, you have to give the &amp;lt;tt&amp;gt;-g&amp;lt;/tt&amp;gt; flags to the compiler. The intel compiler needs the additional option &amp;lt;tt&amp;gt;-debug parallel&amp;lt;/tt&amp;gt; to debug threaded/OpenMP code.&lt;br /&gt;
&lt;br /&gt;
===[[ GPC_MPI_Versions | MPI]]===&lt;br /&gt;
&lt;br /&gt;
SciNet currently provides multiple MPI libraries for the GPC; [http://www.open-mpi.org/ OpenMPI], and [http://software.intel.com/en-us/intel-mpi-library/ IntelMPI].  We currently recommend OpenMPI as the default, as it quite reliably demonstrates good performance on the infiniband network (and did so too on the ethernet network).  For full details and options see the complete [[ GPC_MPI_Versions | '''MPI''']] section.&lt;br /&gt;
&lt;br /&gt;
The MPI libraries are compiled with both the gnu compiler suite and the intel compiler suite.   To use (for instance) the intel-compiled OpenMPI libraries, which we recommend as the default (and use for most of our examples here), use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load intel/15.0.2 openmpi/intel/1.6.4&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
in your job submission scripts and on the command-line before compiling.  Putting these in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; is no longer recommended (since Oct 10, 2013).   &lt;br /&gt;
&lt;br /&gt;
Other combinations behave similarly.&lt;br /&gt;
&lt;br /&gt;
The MPI libraries define the wrappers mpicc/mpicxx/mpif90/mpif77 as wrappers around the appropriate compilers, which ensure the appropriate include and library directories are used in the compilation and linking steps.&lt;br /&gt;
&lt;br /&gt;
We currently recommend the Intel + OpenMPI combination.  However, if you require the GNU compilers as well as MPI, you will want to find the most recent openmpi module available with `gcc' in the version name.  This will enable development and runtime with gcc/g++/gfortran and OpenMPI. &lt;br /&gt;
&amp;lt;!-- You can make this your default by putting the module load line in your ~/.bashrc file. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For mixed OpenMP/MPI code using Intel MPI, add the compilation flag -mt_mpi for full thread-safety (no such flag is necessary for OpenMPI).&lt;br /&gt;
&lt;br /&gt;
===Submitting A Batch Job===&lt;br /&gt;
&lt;br /&gt;
The SciNet machines are shared systems, and jobs that are to run on them are submitted to a queue; the&lt;br /&gt;
[[Moab | scheduler]] then orders the jobs in order to make the best use of the machine, and has them launched &lt;br /&gt;
when resources become availble.   The intervention of the scheduler can mean that the jobs aren't&lt;br /&gt;
quite run in a  first-in first-out order. The scheduler used on the GPC is called Moab (with Torque as the 'resource manager').&lt;br /&gt;
&lt;br /&gt;
The scheduler will have the job run on one or more of the compute nodes of the GPC. There are a few important differences between the devel nodes and the compute nodes:&lt;br /&gt;
&lt;br /&gt;
# As stated above already, on compute nodes, your home directory is read-only. You have to run your jobs from the $SCRATCH directory instead.  See [https://support.scinet.utoronto.ca/wiki/index.php/Data_Management  Data Management ] for more details on the file systems at SciNet.&lt;br /&gt;
&lt;br /&gt;
# The available memory on compute nodes is approximately 14GB (16GB - 2GB for the operating system). The devel nodes have 36GB, but this is shared with all the users of the node. &lt;br /&gt;
&lt;br /&gt;
# Some libraries, especially those for graphics, are not installed on the compute nodes. This leaves more memory available for your job, but if you have an application that requires such libraries (notably &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;octave&amp;lt;/tt&amp;gt;), you will need to &amp;quot;&amp;lt;tt&amp;gt;module load extras&amp;lt;/tt&amp;gt;&amp;quot; in your job script to make them work.&lt;br /&gt;
&lt;br /&gt;
The maximum [[wallclock time]] for a job in the queue is 48 hours; computations that will take longer than&lt;br /&gt;
this must be broken into 48-hour chunks and run as several jobs. Also a minimum job length of 15 minutes is enforced and shorter jobs&lt;br /&gt;
should be batched together.  The usual way to do this is with [[checkpoints]],&lt;br /&gt;
writing out the complete state of the computation every so often in such a way that a job can be restarted from&lt;br /&gt;
this state information and continue on from where it left off.  Generating [[checkpoints]] is a good idea anyway,&lt;br /&gt;
as in the unlikely event of a hardware failure during your run, it allows you to restart without having lost much work.&lt;br /&gt;
&lt;br /&gt;
There are limits to how many jobs you can submit.  If your group has a default account, up to 32 nodes at a time for 48 hours per job on the GPC cluster are allowed to be queued. This is a total limit, e.g., you could request 64 nodes for 24 hours.  Jobs of users with an LRAC or NRAC allocation will run at a higher priority than others while their resources last. Because of the group-based allocation, it is conceivable that your jobs won't run if your colleagues have already exhausted your group's limits.&lt;br /&gt;
&lt;br /&gt;
Note that scheduling big jobs greatly affects the queue and other users, so you have to talk to us first to run massively parallel jobs (&amp;gt; 2048 cores). We will help make sure that your jobs start and run efficiently.&lt;br /&gt;
&lt;br /&gt;
If your job should run in fewer than  48 hours, specify that in your script -- your job &lt;br /&gt;
will start sooner.   (It's easier for the [[Moab | scheduler]] to fit in a short job than a long job).  On the downside, the&lt;br /&gt;
job will be killed automatically by the queue manager software at the end of the specified [[wallclock time]], so if you&lt;br /&gt;
guess wrong you might lose some work.  So the standard procedure is to estimate how long your job will take and&lt;br /&gt;
add 10% or so. &lt;br /&gt;
&lt;br /&gt;
You interact with the queuing system through the queue/resource manager, [[Moab | Moab]] and [[Moab | Torque]].  To see all the jobs in the queue use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To submit your own job, you must write a script which describes the job and how it is to be run (a sample script [[GPC_Quickstart#Submission_Script | follows]]) and submit it to the queue, using the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub [SCRIPT-FILE-NAME]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where you will replace &amp;lt;tt&amp;gt;[SCRIPT-FILE-NAME]&amp;lt;/tt&amp;gt; with the file containing the submission script.   This will return a job ID, for example 31415, which is used to identify the jobs.  Information about a queued job can be found using&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qstat [JOB-ID]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
and jobs can be canceled with the command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ canceljob [JOB-ID]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, these commands have many options, which can be read about on their man pages.&lt;br /&gt;
&lt;br /&gt;
Much more information on the queueing system is available on our [[Moab | queue]] page.&lt;br /&gt;
&lt;br /&gt;
====Batch Submission Script: MPI====&lt;br /&gt;
&lt;br /&gt;
A sample submission script is shown below for an mpi job with the &amp;lt;tt&amp;gt; #PBS &amp;lt;/tt&amp;gt; directives at the top and the rest being &lt;br /&gt;
what will be executed on the compute node.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC &lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2 openmpi/intel/1.6.4&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*ppn&lt;br /&gt;
mpirun -np 16 ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The lines that begin &amp;lt;tt&amp;gt;#PBS&amp;lt;/tt&amp;gt; are commands that are parsed and interpreted by qsub at submission time, and control administrative things about your job.   In this example, the script above requests two nodes, using 8 processors per node, for a [[wallclock time]] of one hour.  (The resources required by the job are listed on the &amp;lt;tt&amp;gt;#PBS -l&amp;lt;/tt&amp;gt; line.)   Other options can be given in other &amp;lt;tt&amp;gt;#PBS&amp;lt;/tt&amp;gt; lines, such as &amp;lt;tt&amp;gt;#PBS -N&amp;lt;/tt&amp;gt;, which sets the name of the job.   &lt;br /&gt;
&lt;br /&gt;
The rest of the script is run as a bash script at run time.   A bash shell on the first node of the two nodes that are requested executes these commands as a normal bash script, just as if you had run this as a shell script from the terminal.   The only difference is that PBS sets certain environment variables that you can use in the script.  &amp;lt;tt&amp;gt;$PBS_O_WORKDIR&amp;lt;/tt&amp;gt; is set to be the directory that the command was 'submitted' from - eg,  &amp;lt;tt&amp;gt;$SCRATCH/SOMEDIRECTORY&amp;lt;/tt&amp;gt;.   The script then uses the &amp;lt;tt&amp;gt;mpirun&amp;lt;/tt&amp;gt; command to launch the job. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
* Note: The different versions of MPI require different commands to launch the run, and thus different scripts. The above script is  specific for the openmpi module.  For the intelmpi module on ethernet, the last line of the script should read&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpirun -np 16 -env I_MPI_FABRICS shm:tcp ./a.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For full MPI details see [[ GPC_MPI_Versions | MPI]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Submitting Collections of Serial Jobs====&lt;br /&gt;
&lt;br /&gt;
You cannot run purely serial jobs on the GPC (or any of SciNet's systems), as this would mean only one core out of 8 is used.  If you have serial jobs, you have to bunch them together.&lt;br /&gt;
SciNet-approved methods for running collections of serial jobs can be found on the [[User_Serial|serial run wiki page]].&lt;br /&gt;
&lt;br /&gt;
====Batch Submission Script: OpenMP====&lt;br /&gt;
&lt;br /&gt;
For running OpenMP jobs, the procedure is similar as for MPI jobs:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC (OpenMP)&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=1:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
 &lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
export OMP_NUM_THREADS=8&lt;br /&gt;
./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that [[Introduction_To_Performance#Throughput | in some circumstances]] it can be more efficient to run (say) two jobs each running on four threads than one job running on eight threads.   In that case you can use the same `ampersand-and-wait' technique outlined for serial jobs (see [[User_Serial|serial run wiki page]]) for less-than-eight-core OpenMP jobs.&lt;br /&gt;
&lt;br /&gt;
====Hybrid MPI/OpenMP jobs====&lt;br /&gt;
&lt;br /&gt;
'''Using Intel MPI'''&lt;br /&gt;
&lt;br /&gt;
Here is how to run hybrid codes using intelmpi::&lt;br /&gt;
&lt;br /&gt;
http://software.intel.com/en-us/articles/hybrid-applications-intelmpi-openmp/&lt;br /&gt;
&lt;br /&gt;
Make sure you compile with the -mt_mpi option to the compilers to use the thread safe libraries. &lt;br /&gt;
Set the environment variable I_MPI_PIN_DOMAIN:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export I_MPI_PIN_DOMAIN=omp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This will set the process pinning domain size to be equal to OMP_NUM_THREADS (which you should set to the desired number of threads per mpi process). Therefore, each MPI process can create $OMP_NUM_THREADS number of children threads for running within the corresponding domain. If OMP_NUM_THREADS is not set, each node is treated as a separate domain (which will allow as many threads per MPI processes as there are cores).&lt;br /&gt;
&lt;br /&gt;
In addition, when invoking mpirun, you should add the argument &amp;quot;-ppn X&amp;quot;, where X is the number of MPI processes per node.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ mpirun -ppn 2 -np 8 [executable]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
would start 2 mpi processes of &amp;lt;tt&amp;gt;[executable]&amp;lt;/tt&amp;gt; per node for a total of 8 processes, so mpirun will try to run mpi processes on 4 nodes&lt;br /&gt;
(OMP_NUM_THREADS is then probably best set at 4).&lt;br /&gt;
Your job script should still ask for these 4 nodes with the line&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
     #PBS -l nodes=4:ppn=8,walltime=....&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(&amp;lt;tt&amp;gt;ppn=8&amp;lt;/tt&amp;gt; is not a mistake here; the ppn parameter has a different meaning for PBS and for mpirun)&lt;br /&gt;
&lt;br /&gt;
''The ppn parameter to ''mpirun'' is very important! Without it, eight mpi jobs would get bunched on the first node in this example, leaving 3 nodes unused.''&lt;br /&gt;
&lt;br /&gt;
NOTE: In order to pin OpenMP threads inside the domain, use the corresponding OpenMP feature by setting the KMP_AFFINITY environment variable, see [http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/fortran/lin/compiler_f/optaps/common/optaps_openmp_thread_affinity.htm#KMP_AFFINITY_Environment_Variable|Intel's Compiler User and Reference Guide].&lt;br /&gt;
&lt;br /&gt;
The IntelMPI manual is referenced on the front page of our wiki:&lt;br /&gt;
&lt;br /&gt;
http://software.intel.com/sites/products/documentation/hpc/mpi/linux/reference_manual.pdf&lt;br /&gt;
&lt;br /&gt;
For the above example of a total of 8 processes on 4 nodes, you could use the following script:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC (hybrid job)&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2 intelmpi/4.1.2.040&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# SET THE NUMBER OF THREADS PER PROCESS:&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
&lt;br /&gt;
# PIN THE MPI DOMAINS ACCORDING TO OMP&lt;br /&gt;
export I_MPI_PIN_DOMAIN=omp&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*ppn&lt;br /&gt;
mpirun -ppn 2 -np 8 ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Using Open MPI'''&lt;br /&gt;
&lt;br /&gt;
For mixed MPI/OpenMP jobs using OpenMPI, which is the default for many users, the procedure is similar, but details differ.&lt;br /&gt;
&lt;br /&gt;
* Request the number of nodes in the PBS script.&lt;br /&gt;
* Set OMP_NUM_THREADS to the number of threads per MPI process.&lt;br /&gt;
* In addition to the -np parameter for mpirun, add the argument &amp;lt;tt&amp;gt;--bynode&amp;lt;/tt&amp;gt;, so that the mpi processes are not bunched up.&lt;br /&gt;
&lt;br /&gt;
So for example, to start a total of 8 processes on 4 nodes, you could use the following script&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC (hybrid job)&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=4:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel/15.0.2 openmpi/intel/1.6.4&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# SET THE NUMBER OF THREADS PER PROCESS:&lt;br /&gt;
export OMP_NUM_THREADS=4&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*processes_per_nodes; --byhost forces a round robin of nodes.&lt;br /&gt;
mpirun -np 8 --bynode ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* More questions about running your jobs? See the [[FAQ#Running_your_jobs|FAQs Running your jobs]] and [[FAQ#Errors_in_running_jobs|Errors in running jobs]] sections.&lt;br /&gt;
&lt;br /&gt;
===Automated Email Notifications from Jobs===&lt;br /&gt;
&lt;br /&gt;
By default, you get an email if your job fails ('''a'''borts) when run through the scheduler. You can setup email notifications as well for when the jobs '''b'''egins or '''e'''nds. For this, you use the &amp;lt;tt&amp;gt;-m&amp;lt;/tt&amp;gt; submission option, followed by any combination of '''a''' (to get emails when the job is aborted, e.g. by canceljob or qdel), '''b''' (to get emails when the job starts), and '''e''' (to get emails when the job ends), or '''n''' (for no emails except errors such as going over the walltime limit).&lt;br /&gt;
&lt;br /&gt;
For instance, to get email in all three cases, you could have a job script like this:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# MOAB/Torque submission script for SciNet GPC &lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test&lt;br /&gt;
#PBS -m abe&lt;br /&gt;
&lt;br /&gt;
# load modules (must match modules used for compilation)&lt;br /&gt;
module load intel openmpi&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory job was submitted from&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND; -np = nodes*ppn&lt;br /&gt;
mpirun -np 16 ./a.out&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
* Getting email for every job is not necessarily a good idea, as you may get a lot of email. This is why the default is to send an email only when the job fails&lt;br /&gt;
&lt;br /&gt;
* The email address that the emails are sent to is the one that you gave when you created your account. &lt;br /&gt;
&amp;lt;!-- You cannot have the emails send to another address (even if you there is a '''-M''' scheduler option that would allow you to specify your email address, for security, this option is disabled on the GPC). --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Emails notifying that a job exceeded its walltime cannot be suppressed.  The only way not to get them is to have your jobs stop before the walltime.  If your job uses [[Checkpoints]] properly so that it can restart, it may be safe to have that job script self-terminate just before the walltime is over, by adding, at the top of the script, a line like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sleep $((PBS_WALLTIME-60)) &amp;amp;&amp;amp; (echo &amp;quot;out of time, self-terminating&amp;quot;; kill $$) &amp;amp; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
which terminates the jobs script one minute before the wall time is over. You may want to combine this technique with [[Using Signals]].&lt;br /&gt;
&lt;br /&gt;
===Submitting an Interactive (Debug) Job===&lt;br /&gt;
&lt;br /&gt;
Your development work flow may require a lot of small test runs.   You are allowed to do these on the development nodes, as long as it's very brief (a few minutes), and does not use all cores on the machine. For anything more you will have to use the compute nodes. (In a hurry? Check out the debugjob command below!)&lt;br /&gt;
&lt;br /&gt;
It is sometimes convenient to run a job interactively; this can be very handy for debugging purposes.  In this case, you type a &amp;lt;tt&amp;gt;qsub&amp;lt;/tt&amp;gt; command which submits an interactive job to the queue; when the scheduler selects this job to run, then it starts a shell running on the first node of the job, which connects to your terminal.  You can then type any series of commands (for instance, the same commands listed as in the batch submission script above) to run a job interactively.&lt;br /&gt;
&lt;br /&gt;
For example, to start the same sort of job as in the batch submission script above, but interactively, one would type&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -I -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your interactive job requires graphics, add &amp;quot;-X&amp;quot; to this command.&lt;br /&gt;
&lt;br /&gt;
Note that this is exactly the &amp;lt;tt&amp;gt;#PBS -l&amp;lt;/tt&amp;gt; line in the batch script above (which requests all 8 processors on each of 2 nodes for one hour), but prepended with a &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; for `interactive'.   When this job begins, your terminal will now show you as being logged in to one of the compute nodes, and one can type in any shell command, run &amp;lt;tt&amp;gt;mpirun&amp;lt;/tt&amp;gt;, etc.   When you exit the shell, the job will end.  &lt;br /&gt;
&lt;br /&gt;
Interactive jobs can be used with any of the [[ Moab#GPC | GPC queues ]] however, there is a short&lt;br /&gt;
high turnover queue called [[ Moab#debug | debug ]] which can be especially useful when the system is busy:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -I -l nodes=2:ppn=8,walltime=1:00:00 -q debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because the combination of running interactively and use the high turnover queue is very common, SciNet has the specialized command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ debugjob [NUMBEROFNODES]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where &amp;lt;tt&amp;gt;NUMBEROFNODES&amp;lt;/tt&amp;gt; is an optional argument that defaults to one.  This command requests NUMBEROFNODES compute nodes for a limited time between 30 minutes and 2 hours (less time the more nodes you take), and gives you a shell on the (first) compute node.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*More questions about running test jobs? See the [[FAQ#Testing_your_Code|FAQ]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Ethernet vs. Infiniband===&lt;br /&gt;
&lt;br /&gt;
About 1/4 of the GPC (862 nodes or 6896 cores) is connected with a high bandwidth low-latency fabric called&lt;br /&gt;
[http://en.wikipedia.org/wiki/InfiniBand InfiniBand].  Many jobs which require tight coupling to scale well greatly benefit from this interconnect;&lt;br /&gt;
other types of jobs, which have relatively modest communications, do not require this and run fine on Gigabit ethernet.&lt;br /&gt;
&lt;br /&gt;
Jobs which require the InfiniBand for good performance can request the nodes that have the `&amp;lt;tt&amp;gt;ib&amp;lt;/tt&amp;gt;' feature in the &amp;lt;tt&amp;gt;#PBS -l&amp;lt;/tt&amp;gt; line,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ib:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Furthermore, if your mpirun command specifically requests a fabric in its options (eg. ssm), you will have to change those options as well. See [[GPC MPI Versions]].&lt;br /&gt;
&lt;br /&gt;
Because there are a limited number of these nodes, your job will start running faster if you do not request them (e.g. if you use the scripts as shown above), as this increases the number of nodes available to run your job. In fact, the InfiniBand nodes are to be used only for jobs that are known to scale well and  will benefit from this type of interconnect. As such the minimum number of nodes requested has to be at least 2, as single node jobs will not benefit from using an&lt;br /&gt;
Infiniband node. The MPI libraries provided by SciNet automatically correctly use either the InfiniBand or ethernet interconnect depending on which nodes your job runs on.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===QDR vs. DDR Infiniband===&lt;br /&gt;
&lt;br /&gt;
The GPC Infiniband network GPC has two sections, one connecting 3,024 nodes with 5:1 blocking/oversubscribed QDR and the second connecting 840 nodes 1:1 non-blocking DDR Infiniband. By default a user's job will go to whichever network section best accommodates it, typically smaller jobs to the QDR and larger jobs to the DDR. However a user can override this by simply adding the flags &amp;quot;ddr&amp;quot; or &amp;quot;qdr&amp;quot; to the job resource request.&lt;br /&gt;
&lt;br /&gt;
For example, to request two nodes anywhere on the GPC (QDR or DDR), use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
in your job submission script.&lt;br /&gt;
&lt;br /&gt;
For two nodes using DDR, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ddr:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get two nodes using QDR, instead, you would use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:qdr:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The queueing system also tries its best to keep jobs within the same switch of the QDR thus avoiding the 5:1 blocking. A user can can explicitly request this behaviour if their jobs is less than 30 nodes using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -W x=nodesetisoptional:false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===HyperThreading===&lt;br /&gt;
&lt;br /&gt;
Each GPC compute node has 8 Nehalem cores (2 sockets each with a four-core Intel Xeon E5540 @ 2.53GHz).  Thus, to make full use of the computing power of a GPC node, you must be running least 8 &amp;quot;tasks&amp;quot; -- MPI processes, or OpenMP threads.&lt;br /&gt;
&lt;br /&gt;
Under most circumstances, running exactly 8 tasks is the most efficient way to use these nodes.  However, sometimes software design (eg, having one thread for communication and one for computation) can usefully `oversubscribe' the number of physical cores, and running (say) twice as many tasks as cores can be a useful strategy.   If your code is highly memory-bandwidth bound, having one task ready to run while another waits for memory access can make more effective use of the processor.&lt;br /&gt;
&lt;br /&gt;
The Nehalem processors have hardware support for such two-way overloading of processors, through &amp;quot;HyperThreading&amp;quot;; there are an extra set of registers on each core to facilitate rapid switching between two tasks, making it look to the operating system that there are in fact 16 cores per node.   Depending on the nature of your code, making use of these virtual extra cores may speed up or slow down your computation; you should run small test cases before running production jobs in this manner.  In most cases, the speed difference will be under 10%.  Some of our users have obtained an 8% speedup by running gromacs with 16 tasks instead of 8 on a single node (mpirun -np 16 ./gromacs/mdrun -npme 4 is 108% the speed of mpirun -np 8 ./gromacs/mdrun with -npme 2 or -1).&lt;br /&gt;
&lt;br /&gt;
====HyperThreading with OpenMP====&lt;br /&gt;
&lt;br /&gt;
To use hyperthreading with an OpenMP job, one just runs twice as many threads as one would have previously; eg, if you were running 8 threads before (&amp;lt;tt&amp;gt;export OMP_NUM_THREADS=8&amp;lt;/tt&amp;gt;) you would run with 16 (&amp;lt;tt&amp;gt;export OMP_NUM_THREADS=16&amp;lt;/tt&amp;gt;).  Everything else remains the same, including the job submission script; one still uses &amp;lt;tt&amp;gt;ppn=8&amp;lt;/tt&amp;gt; in the submission of the job, as Torque has no way of knowing (or reason for caring) that you will be running on 16 `virtual' cores rather than 8 physical cores.&lt;br /&gt;
&lt;br /&gt;
====HyperThreading with MPI====&lt;br /&gt;
&lt;br /&gt;
To use hyperthreading with an MPI job, one just runs twice as many MPI processes as one would have previously; eg, if you were running on three nodes using 8 MPI tasks per node and used &amp;lt;tt&amp;gt;mpirun ... -np 24&amp;lt;/tt&amp;gt;, you could run instead with &amp;lt;tt&amp;gt;-np 48&amp;lt;/tt&amp;gt;.  Everything else remains the same, including the job submission script; one still uses &amp;lt;tt&amp;gt;ppn=8&amp;lt;/tt&amp;gt; in the submission of the job, as Torque has no way of knowing (or reason for caring) that you will be running on 16 `virtual' cores rather than 8 physical cores.&lt;br /&gt;
&lt;br /&gt;
Note that if you are using OpenMPI (as is the default), there is another consideration; OpenMPI assumes that there is no oversubscription and each task very aggressively makes full use of a core when it is waiting for a message (eg, the waits are &amp;quot;busywaits&amp;quot;).  If you find a significant slowdown when running multiple MPI tasks per core with OpenMPI, you may want to try adding the additional option to mpirun: &amp;lt;tt&amp;gt;--mca mpi_yield_when_idle 1&amp;lt;/tt&amp;gt;.  This will increase the latency of individual messages, but free up the core to do additional work while waiting.&lt;br /&gt;
&lt;br /&gt;
With IntelMPI, the problem should be less pronounced, but you can still improve things by using &amp;lt;tt&amp;gt;mpirun -genv I_MPI_SPIN_COUNT 1 ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Examples of hyperthreading with MPI'''&lt;br /&gt;
&lt;br /&gt;
Hyperthreading using gromacs: https://support.scinet.utoronto.ca/wiki/index.php/Gromacs#Hyperthreading_with_Gromacs&lt;br /&gt;
&lt;br /&gt;
====HyperThreading with Hybrid MPI/OpenMP codes====&lt;br /&gt;
&lt;br /&gt;
With a hybrid code, one has extra flexibility in how to assign the &amp;quot;extra&amp;quot; cores -- you could run extra MPI tasks or extra OpenMPI threads.  As with all hybrid codes, the combination which results in the best performance depends very strongly on the nature of your code, and you should experiment with different combinations.   In addition, with hybrid codes processor and memory affinity issues become very important; if you're unsure as to how to tune your application for best performance, please make an appointment with the SciNet technical analysts for more help.&lt;br /&gt;
&lt;br /&gt;
===Memory Configuration===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!{{Hl2}}|Number of Nodes&lt;br /&gt;
!{{Hl2}}|Memory &lt;br /&gt;
!{{Hl2}}|Notes&lt;br /&gt;
|-&lt;br /&gt;
|3655&lt;br /&gt;
|16 GB&lt;br /&gt;
|14 GB is available for your application.&lt;br /&gt;
|-&lt;br /&gt;
|205&lt;br /&gt;
|32 GB&lt;br /&gt;
|use the flag m32g to request (see below)&lt;br /&gt;
|-&lt;br /&gt;
|72&lt;br /&gt;
|64 GB&lt;br /&gt;
|part of the contributed system [[Sandy]], but unused cycles are available.&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|128 GB or 256 GB&lt;br /&gt;
|2 x 128 GB and 2x256 GB as part of [[Sandy]], &lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|128 GB &lt;br /&gt;
|2 x older harpertown nodes with 16 cores and 128 GB each.&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|128 GB &lt;br /&gt;
|2 x new haswell nodes with 20 cores and 128 GB each.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''16G'''&lt;br /&gt;
&lt;br /&gt;
There are 3655 nodes which have 16G of memory, and is the primary configuration in the GPC. These nodes will be used by default.&lt;br /&gt;
On these nodes, about 2 GB is taken by the operating system. So for mpi runs with 8 processes per node, this leaves about 1.75GB max per mpi process.  Do not try to use more than the available memory: the node will crash and your job will either die or hang until the requested walltime has elapsed.&lt;br /&gt;
&lt;br /&gt;
If you need more memory per process or per thread, you can either try to use the limit number of larger memory nodes listed below, or you can run with less mpi processes, or use a different decomposition, such that the job fits on a node.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
'''18G'''&lt;br /&gt;
&lt;br /&gt;
There are 24 nodes which have 18G of memory. These nodes have a fully populated memory configuration that maximizes memory bandwidth. Note that also on these nodes, about 2 GB is taken by the operating system. To&lt;br /&gt;
request these nodes use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=2:m18g:ppn=8,walltime=1:00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''32G'''&lt;br /&gt;
&lt;br /&gt;
There are 205 nodes which have 32G of memory. To request these nodes use:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:m32g:ppn=8,walltime=1:00:00 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, also on these nodes, about 2 GB is taken by the operating system, but this is a relatively small amount compared to the total of 32GB.&lt;br /&gt;
&lt;br /&gt;
'''64G/128G/256G'''&lt;br /&gt;
&lt;br /&gt;
There are 72 16-core Intel Sandybridge nodes which have 64G, 2 with 128G, and 2 with 256G of memory available as part of the contributed [[Sandy]] cluster. These nodes are requested through the &amp;lt;tt&amp;gt;sandy&amp;lt;/tt&amp;gt; queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:m64g:ppn=16,walltime=1:00:00 -q sandy&lt;br /&gt;
$ qsub -l nodes=1:m128g:ppn=16,walltime=1:00:00 -q sandy&lt;br /&gt;
$ qsub -l nodes=1:m256g:ppn=16,walltime=1:00:00 -q sandy&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Again, also on these nodes, about 2 GB is taken by the operating system, but this is a relatively small amount compared to the total.&lt;br /&gt;
&lt;br /&gt;
'''128G'''&lt;br /&gt;
&lt;br /&gt;
There are four other stand-alone large memory (128GB) nodes which are primarily to be used for data analysis of runs.  Both are Intel machines running the same linux OS as the compute nodes however, they are of different Intel generations than the regular GPC compute nodes.  Two nodes are 16 core older Harpertown nodes, so codes may have to be compiled separately for these machine, and some modules that work on the other GPC nodes, such as octave, will not work on these nodes.   The two other are 20 core newer Haswell nodes that all of the GPC modules should work on.  &lt;br /&gt;
&lt;br /&gt;
These nodes can be accessed using a specific &amp;lt;tt&amp;gt;largemem&amp;lt;/tt&amp;gt; queue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1,walltime=1:00:00 -q largemem -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To specifically request the older/newer nodes, use the number of processers (16/20) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:ppn=16,walltime=1:00:00 -q largemem -I&lt;br /&gt;
$ qsub -l nodes=1:ppn=20,walltime=1:00:00 -q largemem -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the latter  reqeust to run any code compiled specifically for the GPC nodes (such as the python modules).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' To estimate your time of access to these nodes, use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showq -w class=largemem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====How to run fewer MPI processes per node for memory bound applications====&lt;br /&gt;
&lt;br /&gt;
If your compute job requires more memory than is available, it will crash. In some cases, this will even crash the node itself.&lt;br /&gt;
One way to exceed the memory is if your MPI application is too large for 8 processes to fit in memory. Oftentimes, you can solve this problem by subdividing the computation over more processes (reducing the memory per process) and ask for more nodes.  Sometimes, this does not work, for instance if each MPI process requires a fixed minimum chunk of memory that is too large. In that case, you will want to run with less mpi processes than there are cpus in a nodes (i.e. less than 8 for the GPC). Running in such a mode requires a change in the mpirun command. The mpirun command now should not only specify the total number of mpi processes, but should also specify how these processes will be distributed over the nodes.  The default distribution of processes is such that the first nodes get loaded with 8 processes, than the second nodes gets filled up, etc, and this will clearly lead to the same memory issue that you had before.  Instead, you would want your processes to be distributed evenly over the nodes.  The syntax for specifying that depends on whether you are using openmpi or intelmpi.  For openmpi running on 4 nodes with 3 processes per node, for example, you would invoke mpirun as follows&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun -np 12 --bynode &amp;lt;application&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
For intelmpi, the same setup would be invoked using:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mpirun -np 12 -ppn 3 &amp;lt;application&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====[https://wiki.scinet.utoronto.ca/wiki/index.php/Moab#Checking_the_memory_usage_from_jobs Checking memory usage from jobs]====&lt;br /&gt;
&lt;br /&gt;
===Ram Disk===&lt;br /&gt;
&lt;br /&gt;
On the GPC nodes, there is a `ram disk' available - up to half of the memory on the node may be used as a temporary file system.  This is particularly useful for use in the early stages of migrating destop-computing codes to a High Performance Computing platform such as the GPC.    It is much faster than real disk and does not require network traffic; however, each node sees its own ramdisk and cannot see files on that of other nodes.   This is a very easy way to cache writes (by writing them to fast ram disk instead of slow `real' disk); and then one would periodically copy the files to files on /scratch or /project so that they are available after the job has completed.&lt;br /&gt;
&lt;br /&gt;
To use the ramdisk, create and read to or write from files in /dev/shm/... just as one would to (eg) $SCRATCH.  Only the amount of RAM needed to store the files will be taken up by the temporary file system; thus if you have 8 serial jobs each requiring 1 GB of RAM, and 1GB is taken up by various OS services, you would still have approximately 7GB available to use as ramdisk on a 16GB node.   However, if you were to write 8 GB of data to the RAM disk, this would exceed available memory and your job would likely crash.&lt;br /&gt;
   &lt;br /&gt;
NOTE: it is very important to delete your files from ram disk at the end of your job.   If you do not do this, the next user to use that node will have less RAM available than they might expect, and this might kill their jobs.&lt;br /&gt;
&lt;br /&gt;
More details on how to setup your script to use the ramdisk can be found on the [[User_Ramdisk|Ramdisk wiki page]].&lt;br /&gt;
&lt;br /&gt;
=== Managing jobs on the Queuing system ===&lt;br /&gt;
&lt;br /&gt;
Information on checking available resources, starting, viewing, managing and canceling jobs on [[Moab | Moab/Torque]]. Also check out the [[FAQ#Monitoring_jobs_in_the_queue|FAQ]].&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8594</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8594"/>
		<updated>2016-09-25T13:07:47Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:down.png|up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:down.png|up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:down.png|up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:down.png|up]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:down.png|up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:down.png|up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:down.png|up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:down.png|down|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:down.png|up|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Sep 25 08:46 EDT 2016&amp;lt;/b&amp;gt; Power outage at datacentre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thu Sep  8 10:46:22 EDT 2016&amp;lt;/b&amp;gt; Until further notice HPSS jobs are being manually throttled to ensure the cache does not get overwhelmed. We have new tape drives being added to the system soon, and that will help alleviate the problem when we return to normal operations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Sep  2 17:31:44 EDT 2016&amp;lt;/b&amp;gt; The HPSS disk-based cache is full, and currently being drained to tape. Until enough material has been migrated and purged the system will remain on hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Aug 28 16:10:56 EDT&amp;lt;/b&amp;gt; BGQ racks were shutoff due to environment issue, system being restarted. Please resubmit your jobs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun 28 Aug 2016 10:19:17 EDT&amp;lt;/b&amp;gt; Turning systems on.  Expect to be up in a couple of hours.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Aug 28 09:16:02 EDT 2016&amp;lt;/b&amp;gt; Datacentre was shutdown due to facility power failure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 21:55:20&amp;lt;/b&amp;gt; Cooling restored, filesystem up and OK, bringing up clusters. GPC should be available to users by 11PM (perhaps as early as 1030)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 20:46:37&amp;lt;/b&amp;gt; Water service has been restored to building. Restarting cooling system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 19:52:32&amp;lt;/b&amp;gt;  SciNet-related maintenance and modifications have been completed successfully. Work on the building water valve is expected to be done on time (by 9PM). Once water service is restored we need to restore cooling, power-up filesystems and then restart the clusters. Unlikely that any systems are available to users before 11PM and it will take longer to get everything online.  Check here for updates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 07:07:32&amp;lt;/b&amp;gt;  Shutdown has started&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Scheduled full-day maintenance shutdown begins:&lt;br /&gt;
&lt;br /&gt;
7AM, Tuesday, 16 Aug &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several projects (adding new 208V circuits for storage, cooling tower maintenance etc) are being carried out on same day as the landlord needs to shutdown the main building water supply (and therefore our cooling system as well) for repairs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Expect to start bringing systems up about 10PM depending on when the water work is done.  Check here for further updates during the day &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8593</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8593"/>
		<updated>2016-09-25T13:05:09Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:down.png|up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:down.png|up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:down.png|up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:down.png|up]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:down.png|up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:down.png|up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:down.png|up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:down.png|down|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:down.png|up|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Sep 25 09:04 EDT 2016&amp;lt;/b&amp;gt; Power outage at datacentre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Thu Sep  8 10:46:22 EDT 2016&amp;lt;/b&amp;gt; Until further notice HPSS jobs are being manually throttled to ensure the cache does not get overwhelmed. We have new tape drives being added to the system soon, and that will help alleviate the problem when we return to normal operations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Sep  2 17:31:44 EDT 2016&amp;lt;/b&amp;gt; The HPSS disk-based cache is full, and currently being drained to tape. Until enough material has been migrated and purged the system will remain on hold.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Aug 28 16:10:56 EDT&amp;lt;/b&amp;gt; BGQ racks were shutoff due to environment issue, system being restarted. Please resubmit your jobs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun 28 Aug 2016 10:19:17 EDT&amp;lt;/b&amp;gt; Turning systems on.  Expect to be up in a couple of hours.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Sun Aug 28 09:16:02 EDT 2016&amp;lt;/b&amp;gt; Datacentre was shutdown due to facility power failure.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 21:55:20&amp;lt;/b&amp;gt; Cooling restored, filesystem up and OK, bringing up clusters. GPC should be available to users by 11PM (perhaps as early as 1030)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 20:46:37&amp;lt;/b&amp;gt; Water service has been restored to building. Restarting cooling system.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 19:52:32&amp;lt;/b&amp;gt;  SciNet-related maintenance and modifications have been completed successfully. Work on the building water valve is expected to be done on time (by 9PM). Once water service is restored we need to restore cooling, power-up filesystems and then restart the clusters. Unlikely that any systems are available to users before 11PM and it will take longer to get everything online.  Check here for updates&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Tue 16 Aug 2016 07:07:32&amp;lt;/b&amp;gt;  Shutdown has started&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Scheduled full-day maintenance shutdown begins:&lt;br /&gt;
&lt;br /&gt;
7AM, Tuesday, 16 Aug &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Several projects (adding new 208V circuits for storage, cooling tower maintenance etc) are being carried out on same day as the landlord needs to shutdown the main building water supply (and therefore our cooling system as well) for repairs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Expect to start bringing systems up about 10PM depending on when the water work is done.  Check here for further updates during the day &amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8490</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8490"/>
		<updated>2016-07-29T20:45:20Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png|up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png|up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:up.png|up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:down.png|down]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png|up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png|up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png|up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:up.png|up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png|up|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fri Jul 29 15:10:00 EDT 2016: &amp;lt;/b&amp;gt; /scratch and /project are down.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu Jul  7 10:08:45 EDT 2016: &amp;lt;/b&amp;gt; All compute systems are back.  HPSS will be restarted later today.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu  7 Jul 2016 06:45:20 EDT: &amp;lt;/b&amp;gt; Main power breaker had tripped in response to a large voltage spike. Cooling system being restarted then filesystems and compute systems. Barring unexpected problems, users should have access by mid-late morning&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Thu  7 Jul 2016 06:04:05 EDT: &amp;lt;/b&amp;gt; Power failure at datacentre at 0523 this morning. Staff enroute to assess situation. All systems are down&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt; Fri 17 Jun 2016 14:40:28 EDT: &amp;lt;/b&amp;gt; Normal access to the BGQ has been restored.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Wed Jun 15 16:20:56 EDT 2016:&amp;lt;/b&amp;gt; The HPSS software upgrade is finished.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Jun 13 13:40&amp;lt;/b&amp;gt; File system seems better after rebooting a few troublesome nodes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Mon Jun 13 13:00&amp;lt;/b&amp;gt; File system slow at present.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Fri Jun 10 13:41:43 EDT 2016:&amp;lt;/b&amp;gt; HPSS is scheduled for a software upgrade on Jun/15 (next Wednesday). If you keep submitting jobs requesting 72 hours, they will run only after the upgrade.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro_to_the_unix_shell.pdf&amp;diff=8423</id>
		<title>File:Intro to the unix shell.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro_to_the_unix_shell.pdf&amp;diff=8423"/>
		<updated>2016-07-11T17:07:17Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8422</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8422"/>
		<updated>2016-07-11T17:06:51Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [https://support.scinet.utoronto.ca/~nolta/HPC_intro.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
* [[Media:intro_to_the_unix_shell.pdf | Slides ]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8421</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8421"/>
		<updated>2016-07-11T17:05:07Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [https://support.scinet.utoronto.ca/~nolta/HPC_intro.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8420</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8420"/>
		<updated>2016-07-11T17:04:48Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [https://support.scinet.utoronto.ca/~nolta/HPC_intro.pdf | Slides]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8419</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8419"/>
		<updated>2016-07-11T17:04:12Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[https://support.scinet.utoronto.ca/~nolta/HPC_intro.pdf | Slides]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8418</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8418"/>
		<updated>2016-07-11T17:03:58Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[:https://support.scinet.utoronto.ca/~nolta/HPC_intro.pdf | Slides]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8417</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8417"/>
		<updated>2016-07-11T17:03:28Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:https://support.scinet.utoronto.ca/~nolta/HPC_intro.pdf | Slides]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8416</id>
		<title>2016 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8416"/>
		<updated>2016-07-11T16:20:49Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2016 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 11th to July 15th, 2016, in Toronto.&lt;br /&gt;
&lt;br /&gt;
The location of this version of the summer school is:&lt;br /&gt;
&lt;br /&gt;
'''Wallberg Building'''&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Rooms 116 and 119'''&amp;lt;br /&amp;gt;&lt;br /&gt;
University of Toronto&amp;lt;br /&amp;gt;&lt;br /&gt;
St. George Campus&amp;lt;br /&amp;gt;&lt;br /&gt;
184-200 College Street&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, Ontario, M5S 3E5&amp;lt;br /&amp;gt;&lt;br /&gt;
Canada&lt;br /&gt;
&lt;br /&gt;
More information can be found below and in the [[Media:handout2016.pdf|handout package]].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to HPC and SciNet===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will provide an introduction to basic concepts of high-performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux skills are useful to follow along. If you do not have these, consider taking the &amp;quot;Intro to the Linux Shell&amp;quot; in the afternoon.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:HPC_intro_2016.pdf | Slides]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In these two half-day sessions, lectures and hands-on labs are interspersed, and the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
* [[Media:OpenMP2016.pdf | Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the Linux/UNIX command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. In this half-day session, you can become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 11, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119 &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with R or Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract===== &lt;br /&gt;
In this 1.5-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C and/or Fortran scientific programming; experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[File:MPIssc2016.pdf | Slides]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Parallel R for Data Science===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in R, with a focus on parallel data analysis. Topics covered will include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 12, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for Scientific Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this half-day session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This half-day session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 13, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This two-day session is an introductory course covering programming and computing on GPUs - graphics processing units - which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 116&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this whole-day session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The afternoon part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Thursday July 14, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Thursday July 14, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, xmgr ([http://plasma-gate.weizmann.ac.il/Grace/ Grace],[http://plasma-gate.weizmann.ac.il/Xmgr/ xmgr]), ssh (graphic client), your favorite vnc client (egs. [https://www.realvnc.com/download/viewer/ RealVNC],[http://www.tightvnc.com/download.php TightVNC]), python and matplotlib ([http://matplotlib.org/ matplotlib]); afternoon session: ParaView ([http://www.paraview.org/download/ ParaView]) and VisIt ([https://wci.llnl.gov/simulation/computer-codes/visit/executables VisIt]).&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
======Slides======&lt;br /&gt;
======Datasets======&lt;br /&gt;
[ Morning datasets and scripts]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/datasets.tar.gz Afternoon dataset]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/aneurysm_data.tar.gz Aneurysm dataset]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. In this half-day session, we will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
Note the different room number!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Bring Your Own Code===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The final afternoon of the summer school is your chance to get help with your own code from the SciNet software analysts. Bring your code, explain your problem or concerns, and we'll give you advice and work with you to try to improve it.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 15, 2016, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Wallberg Building, Room 119&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Various SciNet software analysts.&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
None.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Python&amp;diff=8268</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Python&amp;diff=8268"/>
		<updated>2016-05-19T22:09:41Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Python on the GPC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.python.org/ Python] is programing language that continues to grow in popularity for scientific computing.   It is very fast to write code in, but the software that results is much much slower than C or Fortran; one should be wary of doing too much compute-intensive work in Python.     &lt;br /&gt;
&lt;br /&gt;
There is a dizzying amount of documentation available for programming in Python on the [http://python.org/ Python.org webpage]; SciNet has given a mini-course of 8 lectures on [[Research Computing with Python]] in the Fall of 2013.&lt;br /&gt;
An excellent set of material for teaching scientists to program in Python is also available at the [http://software-carpentry.org/4_0/python/ Software Carpentry homepage].&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
== Python on the GPC ==&lt;br /&gt;
&lt;br /&gt;
We currently have several versions of python installed, compiled against fast intel math libraries.  To load the python modules, type the following commands:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Version&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
|2.7.2&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.3&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel/13.1.1 python/2.7.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.5&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel/13.1.1 python/2.7.5&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.8&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load intel/15.0.2 python/2.7.8&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.11&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load anaconda2/4.0.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3.3.4&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel/14.0.1 python/3.3.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3.5.1&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load anaconda3/4.0.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modules installed system-wide ==&lt;br /&gt;
&lt;br /&gt;
Many optional packages are available for Python which greatly extend the language adding important new functionality.  Those packages which are likely to be important to all of our users &amp;amp;mdash; eg, [http://numpy.scipy.org/ NumPy], [http://www.scipy.org/ SciPy], and [http://matplotlib.sourceforge.net/ Matplotlib] are installed system-wide.&lt;br /&gt;
&lt;br /&gt;
Below is a list of the packages currently installed system-wide.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}}| Module  &lt;br /&gt;
!{{Hl2}}| python/2.7.2 &lt;br /&gt;
!{{Hl2}}| python/2.7.3 &lt;br /&gt;
!{{Hl2}}| python/2.7.5 &lt;br /&gt;
!{{Hl2}}| python/2.7.8&lt;br /&gt;
!{{Hl2}}| python/3.3.4&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
|-  &lt;br /&gt;
|[http://www.scipy.org/ SciPy]&lt;br /&gt;
| 0.10.0&lt;br /&gt;
| 0.11.0&lt;br /&gt;
| 0.14.0&lt;br /&gt;
| 0.14.0&lt;br /&gt;
| 0.14.0&lt;br /&gt;
| An Open-source software for mathematics, science, and engineering.  Version in Python 2.7.x is linked against very fast MKL numerical libraries. &lt;br /&gt;
|-&lt;br /&gt;
|[http://numpy.scipy.org/ NumPy]&lt;br /&gt;
| 1.6.1&lt;br /&gt;
| 1.7.0&lt;br /&gt;
| 1.7.0&lt;br /&gt;
| 1.9.1&lt;br /&gt;
| 1.8.1&lt;br /&gt;
| NumPy is the fundamental package needed for scientific computing with Python. Contains fast arrays, tools for integrating C/C++ and Fortran code, linear algebra solvers, etc.  SciPy is built on top of NumPy.&lt;br /&gt;
|-&lt;br /&gt;
| [http://mpi4py.scipy.org/ mpi4py]&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| A pythonic interface to mpi.   Available with openmpi; must load an openmpi module for this to work. (There is an issue with openmpi 1.4.x + infiniband, however it does appear to work fine with IntelMPI)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.scipy.org/SciPyPackages/NumExpr Numexpr]&lt;br /&gt;
| 2.0&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| 2.4&lt;br /&gt;
| 2.4_rc2&lt;br /&gt;
| Fast, memory-efficient elementwise operations on Numpy arrays.&lt;br /&gt;
|-&lt;br /&gt;
| [http://dirac.cnrs-orleans.fr/plone/software/scientificpython/ ScientificPython]&lt;br /&gt;
| 2.8 &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| A collection of scientific python utilities.   Does not include MPI support.  No longer supported.&lt;br /&gt;
|-&lt;br /&gt;
| [http://yt.enzotools.org/ yt]&lt;br /&gt;
| 2.2&lt;br /&gt;
| 2.5.3&lt;br /&gt;
| 2.5.5&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| A collection of python tools for analyzing astrophysical simulation output.&lt;br /&gt;
|-&lt;br /&gt;
| [http://ipython.scipy.org/moin/ iPython]&lt;br /&gt;
| 0.11 &lt;br /&gt;
| 0.13.1&lt;br /&gt;
| 1.0.0&lt;br /&gt;
| 2.3.0&lt;br /&gt;
| 1.2.1&lt;br /&gt;
| An enhanced interactive python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://matplotlib.sourceforge.net/ Matplotlib], pylab&lt;br /&gt;
| 1.1.0&lt;br /&gt;
| 1.2.0&lt;br /&gt;
| 1.3.0&lt;br /&gt;
| 1.4.2&lt;br /&gt;
| 1.3.1&lt;br /&gt;
| Matlab-like plotting for python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.pytables.org/moin PyTables]&lt;br /&gt;
| 2.3.1 &lt;br /&gt;
| 2.4.0&lt;br /&gt;
| 3.0.0&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| Fast and efficient access to HDF5 files (and HDF5-format NetCDF4 files.)   Requires the &amp;lt;tt&amp;gt;hdf5/184-p1-v18-serial-gcc&amp;lt;/tt&amp;gt; module to be loaded. &lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/netcdf4-python/ NetCDF4-python]&lt;br /&gt;
| 0.9.8&lt;br /&gt;
| 1.0.4&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| -&lt;br /&gt;
| 1.1.0&lt;br /&gt;
| Python interface to NetCDF4 files.   Requires the &amp;lt;tt&amp;gt;netcdf/4.0.1_hdf5_v18-serial.shared-nofortran&amp;lt;/tt&amp;gt; module to be loaded. &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.pyngl.ucar.edu/Nio.shtml pyNIO]&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Yet another Python interface to NetCDF4 files; again, requires the &amp;lt;tt&amp;gt;netcdf/4.0.1_hdf5_v18-serial.shared-nofortran&amp;lt;/tt&amp;gt; module.  No longer supported.&lt;br /&gt;
|-&lt;br /&gt;
| [http://alfven.org/wp/hdf5-for-python/ h5py]&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| 2.1.3&lt;br /&gt;
| 2.2.0&lt;br /&gt;
| 2.3.1&lt;br /&gt;
| 2.3.0&lt;br /&gt;
| Yet another Python interface to HDF5 files; again, requires an HDF5 module to be loaded.&lt;br /&gt;
|-&lt;br /&gt;
| [http://pysvn.tigris.org/ PySVN]&lt;br /&gt;
| 1.7.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Python interface to the svn version control system. &lt;br /&gt;
|-&lt;br /&gt;
| [http://mercurial.selenic.com/ Mercurial]&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| 2.6.2&lt;br /&gt;
| 2.7.1&lt;br /&gt;
| 3.2&lt;br /&gt;
| -&lt;br /&gt;
| A distributed version-control system written in Python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://cython.org/ Cython]&lt;br /&gt;
| 0.15.1&lt;br /&gt;
| 0.18&lt;br /&gt;
| 0.19.1&lt;br /&gt;
| 0.21.1&lt;br /&gt;
| 0.20.1&lt;br /&gt;
| Cython is a compiler which compiles Python-like code files to C code and allows them to be easily called from Python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/python-nose/ nose]&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| 1.2.1&lt;br /&gt;
| 1.3.0&lt;br /&gt;
| 1.3.4&lt;br /&gt;
| 1.3.0&lt;br /&gt;
| A unit-testing framework for python.&lt;br /&gt;
|- &lt;br /&gt;
| [http://pypi.python.org/pypi/setuptools setuptools]&lt;br /&gt;
| 0.6c11&lt;br /&gt;
| 0.6c11&lt;br /&gt;
| 1.1&lt;br /&gt;
| 7.0&lt;br /&gt;
| 5.1&lt;br /&gt;
| Enables easy installation of new python modules&lt;br /&gt;
|-&lt;br /&gt;
| [http://pandas.pydata.org/ pandas]&lt;br /&gt;
| 0.13.0&lt;br /&gt;
| 0.13.0&lt;br /&gt;
| 0.13.0&lt;br /&gt;
| 0.15.0&lt;br /&gt;
| 0.14.1&lt;br /&gt;
| high-performance, easy-to-use data structures and data analysis tools.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.astropy.org astropy]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 0.3&lt;br /&gt;
| 0.4.2&lt;br /&gt;
| 0.3.2&lt;br /&gt;
| astronomical routines&lt;br /&gt;
|-&lt;br /&gt;
| [http://briansimulator.org/ brian]&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| -&lt;br /&gt;
| spiking neural network simulator&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installing your own Python Modules ==&lt;br /&gt;
&lt;br /&gt;
Python provides an easy way for users to install the libraries they need in their home directories rather than having them installed system-wide. There are so many optional  packages for Python people could potentially want (see e.g. http://pypi.python.org/pypi), that we recommend users install these additional packages locally in their home directories.  This is almost certainly the easiest way to deal with the wide range of packages, ensure they're up to date, and ensure that users' package choices don't conflict. &lt;br /&gt;
&lt;br /&gt;
To install your own Python modules, follow the instructions below.   Where the instructions say &amp;lt;tt&amp;gt;python2.X&amp;lt;/tt&amp;gt;, type &amp;lt;tt&amp;gt;python2.6&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;python2.7&amp;lt;/tt&amp;gt; depending on the version of python you are using.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory in your home directory, &amp;lt;tt&amp;gt;${HOME}/lib/python2.X/site-packages&amp;lt;/tt&amp;gt;, where the packages will go.&lt;br /&gt;
* Next, in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;, *after* you &amp;lt;tt&amp;gt;module load python&amp;lt;/tt&amp;gt; and in the &amp;quot;GPC&amp;quot; section, add the following line:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
export PYTHONPATH=${PYTHONPATH}:${HOME}/lib/python2.X/site-packages/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Re-load the modified .bashrc by typing &amp;lt;tt&amp;gt;source ~/.bashrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Now, if it's a standard python package and instructions say that you can use easy_intall to install it,&lt;br /&gt;
** install with the following command. where &amp;lt;tt&amp;gt;packagename&amp;lt;/tt&amp;gt; is the name of the package you are installing: &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
easy_install --prefix=${HOME} -O1 [packagename]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
** Continue doing this until all of the packages you need to install are successfully installed.&lt;br /&gt;
** If, upon importing the new python package, you get error messages like &amp;lt;tt&amp;gt;undefined symbol: __stack_chk_guard&amp;lt;/tt&amp;gt;, you may need to use the following command instead:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
LDFLAGS=-fstack-protector easy_install --prefix=${HOME} -O1 [packagename]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* If easy_install isn't an option for your package, and the installation instructions instead talk about downloading a file and using &amp;lt;tt&amp;gt;python setup.py install&amp;lt;/tt&amp;gt; then instead:&lt;br /&gt;
** Download the relevant files&lt;br /&gt;
** You will probably have to uncompress and untar them: &amp;lt;tt&amp;gt;tar -xzvf packagename.tgz&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;tar -xjvf packagename.bz2&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** cd into the newly created directory, and run &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
python setup.py install --prefix=${HOME}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Now, the install process may have added some .egg files or directories to your path.  For each .egg directory, add that to your python path as well in your .bashrc, in the same place as you had updated PYTHONPATH before: eg,&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
export PYTHONPATH=${PYTHONPATH}:${HOME}/lib/python2.X/site-packages:${HOME}/lib/python2.X/site-packages/packagename1-x.y.z-yy2.X.egg:${HOME}/lib/python2.X/site-packages/packagename2-a.b.c-py2.X.egg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* You should now be done!   Now, re-source your .bashrc and test your new python modules.&lt;br /&gt;
&lt;br /&gt;
* In order to keep your .bashrc relatively uncluttered, and to avoid potential conflicts among software modules, we recommend that users create their own  modules (for the &amp;quot;module&amp;quot; system, not specifically python modules).  &lt;br /&gt;
&lt;br /&gt;
[[Brian|Here]] is an example module for the [[Brian]] package, including instructions for the installation of the python [[Brian]] package itself.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Python&amp;diff=8267</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Python&amp;diff=8267"/>
		<updated>2016-05-19T22:05:10Z</updated>

		<summary type="html">&lt;p&gt;Nolta: add python v 2.7.8, 2.7.11, 3.5.1&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.python.org/ Python] is programing language that continues to grow in popularity for scientific computing.   It is very fast to write code in, but the software that results is much much slower than C or Fortran; one should be wary of doing too much compute-intensive work in Python.     &lt;br /&gt;
&lt;br /&gt;
There is a dizzying amount of documentation available for programming in Python on the [http://python.org/ Python.org webpage]; SciNet has given a mini-course of 8 lectures on [[Research Computing with Python]] in the Fall of 2013.&lt;br /&gt;
An excellent set of material for teaching scientists to program in Python is also available at the [http://software-carpentry.org/4_0/python/ Software Carpentry homepage].&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
== Python on the GPC ==&lt;br /&gt;
&lt;br /&gt;
We currently have python 2.7.2, 2.7.3, 2.7.5, and 3.3.4 installed, compiled against fast intel math libraries.  To load the python modules, type the following commands:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Version&lt;br /&gt;
! Command&lt;br /&gt;
|-&lt;br /&gt;
|2.7.2&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.3&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel/13.1.1 python/2.7.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.5&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel/13.1.1 python/2.7.5&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.8&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load intel/15.0.2 python/2.7.8&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|2.7.11&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load anaconda2/4.0.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3.3.4&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load gcc intel/14.0.1 python/3.3.4&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|3.5.1&lt;br /&gt;
|&amp;lt;tt&amp;gt;module load anaconda3/4.0.0&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Modules installed system-wide ==&lt;br /&gt;
&lt;br /&gt;
Many optional packages are available for Python which greatly extend the language adding important new functionality.  Those packages which are likely to be important to all of our users &amp;amp;mdash; eg, [http://numpy.scipy.org/ NumPy], [http://www.scipy.org/ SciPy], and [http://matplotlib.sourceforge.net/ Matplotlib] are installed system-wide.&lt;br /&gt;
&lt;br /&gt;
Below is a list of the packages currently installed system-wide.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}}| Module  &lt;br /&gt;
!{{Hl2}}| python/2.7.2 &lt;br /&gt;
!{{Hl2}}| python/2.7.3 &lt;br /&gt;
!{{Hl2}}| python/2.7.5 &lt;br /&gt;
!{{Hl2}}| python/2.7.8&lt;br /&gt;
!{{Hl2}}| python/3.3.4&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
|-  &lt;br /&gt;
|[http://www.scipy.org/ SciPy]&lt;br /&gt;
| 0.10.0&lt;br /&gt;
| 0.11.0&lt;br /&gt;
| 0.14.0&lt;br /&gt;
| 0.14.0&lt;br /&gt;
| 0.14.0&lt;br /&gt;
| An Open-source software for mathematics, science, and engineering.  Version in Python 2.7.x is linked against very fast MKL numerical libraries. &lt;br /&gt;
|-&lt;br /&gt;
|[http://numpy.scipy.org/ NumPy]&lt;br /&gt;
| 1.6.1&lt;br /&gt;
| 1.7.0&lt;br /&gt;
| 1.7.0&lt;br /&gt;
| 1.9.1&lt;br /&gt;
| 1.8.1&lt;br /&gt;
| NumPy is the fundamental package needed for scientific computing with Python. Contains fast arrays, tools for integrating C/C++ and Fortran code, linear algebra solvers, etc.  SciPy is built on top of NumPy.&lt;br /&gt;
|-&lt;br /&gt;
| [http://mpi4py.scipy.org/ mpi4py]&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| 1.2.2&lt;br /&gt;
| A pythonic interface to mpi.   Available with openmpi; must load an openmpi module for this to work. (There is an issue with openmpi 1.4.x + infiniband, however it does appear to work fine with IntelMPI)&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.scipy.org/SciPyPackages/NumExpr Numexpr]&lt;br /&gt;
| 2.0&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| 2.2.1&lt;br /&gt;
| 2.4&lt;br /&gt;
| 2.4_rc2&lt;br /&gt;
| Fast, memory-efficient elementwise operations on Numpy arrays.&lt;br /&gt;
|-&lt;br /&gt;
| [http://dirac.cnrs-orleans.fr/plone/software/scientificpython/ ScientificPython]&lt;br /&gt;
| 2.8 &lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| A collection of scientific python utilities.   Does not include MPI support.  No longer supported.&lt;br /&gt;
|-&lt;br /&gt;
| [http://yt.enzotools.org/ yt]&lt;br /&gt;
| 2.2&lt;br /&gt;
| 2.5.3&lt;br /&gt;
| 2.5.5&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| A collection of python tools for analyzing astrophysical simulation output.&lt;br /&gt;
|-&lt;br /&gt;
| [http://ipython.scipy.org/moin/ iPython]&lt;br /&gt;
| 0.11 &lt;br /&gt;
| 0.13.1&lt;br /&gt;
| 1.0.0&lt;br /&gt;
| 2.3.0&lt;br /&gt;
| 1.2.1&lt;br /&gt;
| An enhanced interactive python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://matplotlib.sourceforge.net/ Matplotlib], pylab&lt;br /&gt;
| 1.1.0&lt;br /&gt;
| 1.2.0&lt;br /&gt;
| 1.3.0&lt;br /&gt;
| 1.4.2&lt;br /&gt;
| 1.3.1&lt;br /&gt;
| Matlab-like plotting for python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.pytables.org/moin PyTables]&lt;br /&gt;
| 2.3.1 &lt;br /&gt;
| 2.4.0&lt;br /&gt;
| 3.0.0&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| 3.1.1&lt;br /&gt;
| Fast and efficient access to HDF5 files (and HDF5-format NetCDF4 files.)   Requires the &amp;lt;tt&amp;gt;hdf5/184-p1-v18-serial-gcc&amp;lt;/tt&amp;gt; module to be loaded. &lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/netcdf4-python/ NetCDF4-python]&lt;br /&gt;
| 0.9.8&lt;br /&gt;
| 1.0.4&lt;br /&gt;
| 1.1.1&lt;br /&gt;
| -&lt;br /&gt;
| 1.1.0&lt;br /&gt;
| Python interface to NetCDF4 files.   Requires the &amp;lt;tt&amp;gt;netcdf/4.0.1_hdf5_v18-serial.shared-nofortran&amp;lt;/tt&amp;gt; module to be loaded. &lt;br /&gt;
|-&lt;br /&gt;
| [http://www.pyngl.ucar.edu/Nio.shtml pyNIO]&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Yet another Python interface to NetCDF4 files; again, requires the &amp;lt;tt&amp;gt;netcdf/4.0.1_hdf5_v18-serial.shared-nofortran&amp;lt;/tt&amp;gt; module.  No longer supported.&lt;br /&gt;
|-&lt;br /&gt;
| [http://alfven.org/wp/hdf5-for-python/ h5py]&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| 2.1.3&lt;br /&gt;
| 2.2.0&lt;br /&gt;
| 2.3.1&lt;br /&gt;
| 2.3.0&lt;br /&gt;
| Yet another Python interface to HDF5 files; again, requires an HDF5 module to be loaded.&lt;br /&gt;
|-&lt;br /&gt;
| [http://pysvn.tigris.org/ PySVN]&lt;br /&gt;
| 1.7.1&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| Python interface to the svn version control system. &lt;br /&gt;
|-&lt;br /&gt;
| [http://mercurial.selenic.com/ Mercurial]&lt;br /&gt;
| 2.0.1&lt;br /&gt;
| 2.6.2&lt;br /&gt;
| 2.7.1&lt;br /&gt;
| 3.2&lt;br /&gt;
| -&lt;br /&gt;
| A distributed version-control system written in Python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://cython.org/ Cython]&lt;br /&gt;
| 0.15.1&lt;br /&gt;
| 0.18&lt;br /&gt;
| 0.19.1&lt;br /&gt;
| 0.21.1&lt;br /&gt;
| 0.20.1&lt;br /&gt;
| Cython is a compiler which compiles Python-like code files to C code and allows them to be easily called from Python.&lt;br /&gt;
|-&lt;br /&gt;
| [http://code.google.com/p/python-nose/ nose]&lt;br /&gt;
| 1.1.2&lt;br /&gt;
| 1.2.1&lt;br /&gt;
| 1.3.0&lt;br /&gt;
| 1.3.4&lt;br /&gt;
| 1.3.0&lt;br /&gt;
| A unit-testing framework for python.&lt;br /&gt;
|- &lt;br /&gt;
| [http://pypi.python.org/pypi/setuptools setuptools]&lt;br /&gt;
| 0.6c11&lt;br /&gt;
| 0.6c11&lt;br /&gt;
| 1.1&lt;br /&gt;
| 7.0&lt;br /&gt;
| 5.1&lt;br /&gt;
| Enables easy installation of new python modules&lt;br /&gt;
|-&lt;br /&gt;
| [http://pandas.pydata.org/ pandas]&lt;br /&gt;
| 0.13.0&lt;br /&gt;
| 0.13.0&lt;br /&gt;
| 0.13.0&lt;br /&gt;
| 0.15.0&lt;br /&gt;
| 0.14.1&lt;br /&gt;
| high-performance, easy-to-use data structures and data analysis tools.&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.astropy.org astropy]&lt;br /&gt;
| -&lt;br /&gt;
| -&lt;br /&gt;
| 0.3&lt;br /&gt;
| 0.4.2&lt;br /&gt;
| 0.3.2&lt;br /&gt;
| astronomical routines&lt;br /&gt;
|-&lt;br /&gt;
| [http://briansimulator.org/ brian]&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| 1.4.1&lt;br /&gt;
| -&lt;br /&gt;
| spiking neural network simulator&lt;br /&gt;
|- &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installing your own Python Modules ==&lt;br /&gt;
&lt;br /&gt;
Python provides an easy way for users to install the libraries they need in their home directories rather than having them installed system-wide. There are so many optional  packages for Python people could potentially want (see e.g. http://pypi.python.org/pypi), that we recommend users install these additional packages locally in their home directories.  This is almost certainly the easiest way to deal with the wide range of packages, ensure they're up to date, and ensure that users' package choices don't conflict. &lt;br /&gt;
&lt;br /&gt;
To install your own Python modules, follow the instructions below.   Where the instructions say &amp;lt;tt&amp;gt;python2.X&amp;lt;/tt&amp;gt;, type &amp;lt;tt&amp;gt;python2.6&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;python2.7&amp;lt;/tt&amp;gt; depending on the version of python you are using.&lt;br /&gt;
&lt;br /&gt;
* First, create a directory in your home directory, &amp;lt;tt&amp;gt;${HOME}/lib/python2.X/site-packages&amp;lt;/tt&amp;gt;, where the packages will go.&lt;br /&gt;
* Next, in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;, *after* you &amp;lt;tt&amp;gt;module load python&amp;lt;/tt&amp;gt; and in the &amp;quot;GPC&amp;quot; section, add the following line:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
export PYTHONPATH=${PYTHONPATH}:${HOME}/lib/python2.X/site-packages/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Re-load the modified .bashrc by typing &amp;lt;tt&amp;gt;source ~/.bashrc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Now, if it's a standard python package and instructions say that you can use easy_intall to install it,&lt;br /&gt;
** install with the following command. where &amp;lt;tt&amp;gt;packagename&amp;lt;/tt&amp;gt; is the name of the package you are installing: &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
easy_install --prefix=${HOME} -O1 [packagename]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
** Continue doing this until all of the packages you need to install are successfully installed.&lt;br /&gt;
** If, upon importing the new python package, you get error messages like &amp;lt;tt&amp;gt;undefined symbol: __stack_chk_guard&amp;lt;/tt&amp;gt;, you may need to use the following command instead:&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
LDFLAGS=-fstack-protector easy_install --prefix=${HOME} -O1 [packagename]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* If easy_install isn't an option for your package, and the installation instructions instead talk about downloading a file and using &amp;lt;tt&amp;gt;python setup.py install&amp;lt;/tt&amp;gt; then instead:&lt;br /&gt;
** Download the relevant files&lt;br /&gt;
** You will probably have to uncompress and untar them: &amp;lt;tt&amp;gt;tar -xzvf packagename.tgz&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;tar -xjvf packagename.bz2&amp;lt;/tt&amp;gt;.&lt;br /&gt;
** cd into the newly created directory, and run &lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
python setup.py install --prefix=${HOME}&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
* Now, the install process may have added some .egg files or directories to your path.  For each .egg directory, add that to your python path as well in your .bashrc, in the same place as you had updated PYTHONPATH before: eg,&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
export PYTHONPATH=${PYTHONPATH}:${HOME}/lib/python2.X/site-packages:${HOME}/lib/python2.X/site-packages/packagename1-x.y.z-yy2.X.egg:${HOME}/lib/python2.X/site-packages/packagename2-a.b.c-py2.X.egg&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* You should now be done!   Now, re-source your .bashrc and test your new python modules.&lt;br /&gt;
&lt;br /&gt;
* In order to keep your .bashrc relatively uncluttered, and to avoid potential conflicts among software modules, we recommend that users create their own  modules (for the &amp;quot;module&amp;quot; system, not specifically python modules).  &lt;br /&gt;
&lt;br /&gt;
[[Brian|Here]] is an example module for the [[Brian]] package, including instructions for the installation of the python [[Brian]] package itself.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=8260</id>
		<title>SciNet User Support Library</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=8260"/>
		<updated>2016-05-11T15:04:40Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|  style=&amp;quot;border-spacing: 8px;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
{{SciNetWiki:System_Alerts}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
==System News==&lt;br /&gt;
* May 11: GPC: https://my.scinet.utoronto.ca/ is available for testing.&lt;br /&gt;
&lt;br /&gt;
* May 3: GPC: Versions 15.0.6 and 16.0.3 of the Intel Compilers are installed as modules.  &lt;br /&gt;
&lt;br /&gt;
* Feb 12: GPC: Version 6.0 of Allinea Forge (DDT Debugger, MAP, Performance Reports) installed as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 11: The 2016 Resource Allocations for compute cycles are now in effect.&lt;br /&gt;
&lt;br /&gt;
* Nov 23: The quota for home directories has been increased from 10 GB to 50 GB.&lt;br /&gt;
&lt;br /&gt;
* Nov 23, GPC: Two [[Visualization Nodes]], viz01 and viz02, are being setup. They are 8-core Nehalem nodes with 2 graphics cards each, 64 GB of memory, and about 60GB of local hard disk. For now, you can directly log into viz01 to try it out.  We would value users' feedback and request for suitable software, help with visualization projects etc.&lt;br /&gt;
&lt;br /&gt;
* Nov 16: ARC being decommisioned. During a transition period, the ARC head node and two   compute nodes will be kept up. Users are encouraged to start using [[Gravity]] instead.&lt;br /&gt;
&lt;br /&gt;
* Nov 12, GPC: The number of [[GPC_Quickstart#Compile.2FDevel_Nodes | GPC devel]] nodes has been doubled from 4 to 8, and the new ones can be accessed using gpc0[5-8].  &lt;br /&gt;
&lt;br /&gt;
* Nov 12, GPC: Two new [[GPC_Quickstart#Memory_Configuration| 128 GB RAM Haswell]] nodes have been added to the &amp;quot;largemem&amp;quot; queue.   &lt;br /&gt;
&lt;br /&gt;
* Sept 7, GPC: The number of nodes with [[GPC_Quickstart#Memory_Configuration|32 GB of RAM]] has been increased from 84 to 205.&lt;br /&gt;
&lt;br /&gt;
* July 24, GPC: GCC 5.2.0 with [[Co-array_Fortran_on_the_GPC|Coarray Fortran]] support, installed as a module.&lt;br /&gt;
&lt;br /&gt;
([[Previous System News]])&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f6e8e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[SciNet Command Line Utilities]]&lt;br /&gt;
* [[Media:SciNet_Tutorial.pdf|SciNet User Tutorial]]&lt;br /&gt;
* [[GPC_Quickstart|GPC: General Purpose Cluster]]&lt;br /&gt;
* [[TCS_Quickstart|TCS: Tightly Coupled System]]&lt;br /&gt;
* [[Sandy| Sandy: Intel Sandybridge nodes ]]&lt;br /&gt;
* [[Gravity| Gravity: GPU nodes]]&lt;br /&gt;
* [[P7_Linux_Cluster|P7: Power 7 Linux cluster]]&lt;br /&gt;
* [[BGQ|BGQ: BlueGene/Q clusters]]&lt;br /&gt;
* [[Software_and_Libraries|Software and libraries]]&lt;br /&gt;
* [[Data_Management|Data management]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging_SciNet | Acknowledging SciNet]]&lt;br /&gt;
* [[File:Rss.gif|link=http://support.scinet.utoronto.ca/podcasts.xml]]&amp;amp;nbsp;[http://support.scinet.utoronto.ca/podcasts.xml SciNet Training Webcasts]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8f6e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials and Manuals ==&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#SciNet_Basics|SciNet basics]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Linux|Linux]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Batch_job_management|Batch job management]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Programming|Programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Parallel_Programming|Parallel programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#GPU_Computing|GPU computing]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Performance_Tuning|Performance tuning]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Debugging|Debugging]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Math_libraries_.28BLAS.2C_LAPACK.2C_FFT.29|Math libraries (BLAS, LAPACK, FFT)]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#I/O|I/O and databases]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Visualization|Visualization]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Applications|Applications]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Manuals|Manuals (compilers etc)]]&lt;br /&gt;
* [[2015_Ontario_Summer_School_for_High_Performance_Computing_Central]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8e8f6; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What's New On The Wiki ==&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: Updated [[GPC Quickstart]] with info on email notifications from the scheduler.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Hdf5]] compilation page updated.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Research Computing with Python 2014]] lectures 5-8&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: &amp;quot;Modern CUDA Features&amp;quot; TechTalk slides in [[SciNet TechTalks and Seminars]].&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: [[Research Computing with Python 2014]] lectures 1-4&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[User_Tips#Reducing_virtual_memory_consumption_for_multithreaded_programs| Tip on reducing virtual memory consumption for multithreaded programs]]&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Improved information on the [[Python]] versions installed on the GPC, and which modules are included in each version.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Description on using job arrays on the GPC on the [[Scheduler]] page.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[Intro to Tkinter|Tkinter instructions]], [[Media:Tkinter.pdf|slides]] and [[Media:Tkinter_code.tgz|code]] for the TkInter workshop held in September.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Instructions on using [[Hadoop for HPCers|Hadoop]] (for the Hadoop workshop held in September).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Previous new stuff can be found in the [[What's new archive]].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f4f4fa; border-radius:7px&amp;quot; |&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
{{SciNetWiki:Community_Portal}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{#Widget:Twitter|shell.background=#9fb1c2|tweets.links=#4775c1|tweets.color=#000000|tweets.background=#ffffff|user=SciNetHPC}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Old Main Page]] --!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8179</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8179"/>
		<updated>2016-01-14T21:33:01Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:down.png| down|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:down.png| down|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:down.png| down|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:down.png| down]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:down.png| down|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:down.png| down|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:down.png| down|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:down.png| down|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:down.png| down|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style='color:#aa5555'&amp;gt;&amp;lt;b&amp;gt;Jan 14, 3:30 PM: Downtime extended to noon on Friday Jan 15th (estimate).&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our sincere apologies for this extension of the downtime. Unfortunately, a problem has come to light with some of the disks in the file system. Because of the way the file system is set up, no data is lost, but if we put the system back into production now, a single additional failure would run the risks of data loss or corruption, so this needs to be fixed now.&lt;br /&gt;
&lt;br /&gt;
The BGQ file system hasn't suffered from this and may be brought up earlier.&lt;br /&gt;
&lt;br /&gt;
Updates will be posted here.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Jan 13, 7:00 AM:&amp;lt;/b&amp;gt; Downtime in effect.&lt;br /&gt;
&lt;br /&gt;
''SCHEDULED MAINTENANCE DOWNTIME ANNOUNCEMENT''&lt;br /&gt;
&lt;br /&gt;
There will be a full SciNet shutdown from January 13th to January 14th, 2016 for scheduled annual maintenance.&lt;br /&gt;
&lt;br /&gt;
All systems will go down at 7 AM on Wednesday January 13th; all login sessions and jobs will be killed at that time.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8165</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8165"/>
		<updated>2015-12-17T14:51:16Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png| up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png| up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:up.png| up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up.png| up]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png| up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png| up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png| up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:up.png| up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png| up|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wed Dec 16, 23:14 EST 2015: File system restored.&lt;br /&gt;
&lt;br /&gt;
Wed Dec 16, 23:08 EST 2015: File system trouble.&lt;br /&gt;
&lt;br /&gt;
Wed Dec 16, 18:27 EST 2015: File system restored.&lt;br /&gt;
&lt;br /&gt;
Wed Dec 16, 17:01 EST 2015: File system trouble, with nodes unmounting the file system on many nodes.&lt;br /&gt;
&lt;br /&gt;
Mon Dec 7, 17:30 EST 2015: Login restored, file system behaving.&lt;br /&gt;
&lt;br /&gt;
Mon Dec 7, 16:00 EST 2015: File system trouble, with nodes unmounting the file system on many nodes. Some jobs will have crashed, and users may not be able to login. Investigating.&lt;br /&gt;
&lt;br /&gt;
Sun Nov 29 12:03:33 EST 2015: Minor scheduling issue on the GPC caused some queued jobs to get removed.  Running jobs were unaffected.    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8164</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=8164"/>
		<updated>2015-12-16T23:10:20Z</updated>

		<summary type="html">&lt;p&gt;Nolta: file system down&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png| up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png| up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:up.png| up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up50.png| up]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png| up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png| up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png| up|link=Visualization Nodes]][[Visualization Nodes|Viz]]&lt;br /&gt;
|[[File:up.png| up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png| up|link=HPSS]][[HPSS]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Wed Dec 16, 18:00 EST 2015: File system trouble.&lt;br /&gt;
&lt;br /&gt;
Mon Dec 7, 17:30 EST 2015: Login restored, file system behaving.&lt;br /&gt;
&lt;br /&gt;
Mon Dec 7, 16:00 EST 2015: File system trouble, with nodes unmounting the file system on many nodes. Some jobs will have crashed, and users may not be able to login. Investigating.&lt;br /&gt;
&lt;br /&gt;
Sun Nov 29 12:03:33 EST 2015: Minor scheduling issue on the GPC caused some queued jobs to get removed.  Running jobs were unaffected.    &lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages:]  --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7904</id>
		<title>2015 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7904"/>
		<updated>2015-07-17T13:52:50Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Summerschool_hpc_2015.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2015 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 13th to July 17th, 2015, in Toronto.&lt;br /&gt;
&lt;br /&gt;
===Group Photo===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:GroupPhotoSS2015.jpg|800px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
&lt;br /&gt;
Forty students, who completed three out of five days, were awarded an &amp;quot;Ontario Summerschool on HPC Certificate&amp;quot;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the linux/unix command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. Become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
* [[Media:SS2015_Introduction_to_the_Unix_Shell.pdf|Slides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Introduction to High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will provide an introduction to basic concepts of high performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux shell skills Registration for all summer school sessions will become available at https://www.sharcnet.ca/events/ss2015.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[http://www.scinethpc.ca/~mponce/ss2015/HPC_intro-2015.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Data Analysis with R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with a R and Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/7/73/Intro-R.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parallel R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming R, with a focus on parallel data analysis. Topics covered include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/a/ac/Parallel-R.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, in which lectures and hands-on labs are interspersed, the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[Media:OpenMP_SS2015.pdf|Slides]]&lt;br /&gt;
* [[Media:OpenMP_SS2015_code.tar.gz|Code]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Scientific Computing with Python===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/f/f3/Intro-Python.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Python programming experience and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/2/2b/Parallel-Python.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this two-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Programming experience with Fortran or C/C++.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
The slides for this class can be found [http://support.scinet.utoronto.ca/~northrup/SS2015 here].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This is an introductory course covering programming and computing on GPUs---graphics processing units---which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA-C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
''Day 1:''&lt;br /&gt;
* [[Media:CUDA_summer_school_2015_central.pdf|Slides]]&lt;br /&gt;
* [[Media:CUDA_day1.tar.gz|Code]]&lt;br /&gt;
See also [http://ppomorsk.sharcnet.ca http://ppomorsk.sharcnet.ca]&lt;br /&gt;
&lt;br /&gt;
''Day 2:''&lt;br /&gt;
* [[Media:CUDA2.pdf|Slides]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The second part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, ssh (graphic client), vnc client, python and matplotlib; afternoon session: ParaView &amp;amp; VisIt.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
Morning session: [http://www.scinethpc.ca/~mponce/ss2015/ss2015_visualization-morning.pdf Visualization I]&lt;br /&gt;
&lt;br /&gt;
Afternoon session: [http://www.scinethpc.ca/~mponce/ss2015/ss2015_visualization-afternoon.pdf Visualization II]&lt;br /&gt;
&lt;br /&gt;
Samples to use during the tutorial: [http://www.scinethpc.ca/~mponce/ss2015/data.tar.gz Data sets]&lt;br /&gt;
&lt;br /&gt;
To come: An example of a complete visualization session in VisIt&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===Debugging, Optimization, and Best Practices===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. We will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems. Next, we will present general issues, common pitfalls and optimization strategies that are application to HPC systems. By using profiling tools available for parallel programs, we can see when the bottlenecks are. We can try to alleviate them by following common best practices, allowing one to obtain their results more quickly and at the same time minimize their burden on shared system resources. Walk-through examples and case studies will be presented during the session to illustrate the concepts.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon and Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
* [[Media:DebugSS2015.pdf | Slides for the debugging session]]&lt;br /&gt;
* [[Media:DebugSS2015code.tar.gz | Debuggable code ]]&lt;br /&gt;
* [[Media:SSHPC_OBP2013.pdf|Slides for the best practices session]]&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7875</id>
		<title>2015 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7875"/>
		<updated>2015-07-14T13:47:50Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Summerschool_hpc_2015.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2015 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 13th to July 17th, 2015, in Toronto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Forty students, who completed three out of five days, were awarded an &amp;quot;Ontario Summerschool on HPC Certificate&amp;quot;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the linux/unix command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. Become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
* [[Media:SS2015_Introduction_to_the_Unix_Shell.pdf|Slides]]&lt;br /&gt;
&lt;br /&gt;
===Introduction to High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will provide an introduction to basic concepts of high performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux shell skills Registration for all summer school sessions will become available at https://www.sharcnet.ca/events/ss2015.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[http://www.scinethpc.ca/~mponce/HPC_intro-2015.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Data Analysis with R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with a R and Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/7/73/Intro-R.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
===Parallel R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming R, with a focus on parallel data analysis. Topics covered include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/a/ac/Parallel-R.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, in which lectures and hands-on labs are interspersed, the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[[Media:OpenMP_SS2015.pdf|Slides]]&lt;br /&gt;
&lt;br /&gt;
===Scientific Computing with Python===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/f/f3/Intro-Python.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Python programming experience and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/2/2b/Parallel-Python.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this two-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Programming experience with Fortran or C/C++.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This is an introductory course covering programming and computing on GPUs---graphics processing units---which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA-C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The second part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, ssh (graphic client), vnc client, python and matplotlib; afternoon session: paraview.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Debugging, Optimization, and Best Practices===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. We will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems. Next, we will present general issues, common pitfalls and optimization strategies that are application to HPC systems. By using profiling tools available for parallel programs, we can see when the bottlenecks are. We can try to alleviate them by following common best practices, allowing one to obtain their results more quickly and at the same time minimize their burden on shared system resources. Walk-through examples and case studies will be presented during the session to illustrate the concepts.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon and Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:SS2015_Introduction_to_the_Unix_Shell.pdf&amp;diff=7868</id>
		<title>File:SS2015 Introduction to the Unix Shell.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:SS2015_Introduction_to_the_Unix_Shell.pdf&amp;diff=7868"/>
		<updated>2015-07-13T16:54:09Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7867</id>
		<title>2015 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7867"/>
		<updated>2015-07-13T16:53:49Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Summerschool_hpc_2015.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2015 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 13th to July 17th, 2015, in Toronto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Forty students, who completed three out of five days, were awarded an &amp;quot;Ontario Summerschool on HPC Certificate&amp;quot;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the linux/unix command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. Become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
* [[Media:SS2015_Introduction_to_the_Unix_Shell.pdf|Slides]]&lt;br /&gt;
* [[Media:SS2014_IntroToShell.tgz|Files]]&lt;br /&gt;
&lt;br /&gt;
===Introduction to High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will provide an introduction to basic concepts of high performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux shell skills Registration for all summer school sessions will become available at https://www.sharcnet.ca/events/ss2015.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[http://www.scinethpc.ca/~mponce/HPC_intro-2015.pdf Slides]&lt;br /&gt;
&lt;br /&gt;
===Data Analysis with R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with a R and Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/7/73/Intro-R.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
===Parallel R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming R, with a focus on parallel data analysis. Topics covered include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/a/ac/Parallel-R.pdf Slides].&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, in which lectures and hands-on labs are interspersed, the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scientific Computing with Python===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Python programming experience and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this two-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Programming experience with Fortran or C/C++.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This is an introductory course covering programming and computing on GPUs---graphics processing units---which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA-C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The second part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, ssh (graphic client), vnc client, python and matplotlib; afternoon session: paraview.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Debugging, Optimization, and Best Practices===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. We will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems. Next, we will present general issues, common pitfalls and optimization strategies that are application to HPC systems. By using profiling tools available for parallel programs, we can see when the bottlenecks are. We can try to alleviate them by following common best practices, allowing one to obtain their results more quickly and at the same time minimize their burden on shared system resources. Walk-through examples and case studies will be presented during the session to illustrate the concepts.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon and Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7851</id>
		<title>2015 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7851"/>
		<updated>2015-07-13T07:01:49Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* Slides and other material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Summerschool_hpc_2015.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2015 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 13th to July 17th, 2015, in Toronto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Forty students, who completed three out of five days, were awarded an &amp;quot;Ontario Summerschool on HPC Certificate&amp;quot;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the linux/unix command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. Become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
* To come&lt;br /&gt;
* [[Media:SS2014_IntroToShell.tgz|Files]]&lt;br /&gt;
&lt;br /&gt;
===Introduction to High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will provide an introduction to basic concepts of high performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux shell skills Registration for all summer school sessions will become available at https://www.sharcnet.ca/events/ss2015.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Data Analysis with R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with a R and Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parallel R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming R, with a focus on parallel data analysis. Topics covered include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, in which lectures and hands-on labs are interspersed, the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scientific Computing with Python===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Python programming experience and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this two-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Programming experience with Fortran or C/C++.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This is an introductory course covering programming and computing on GPUs---graphics processing units---which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA-C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The second part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, ssh (graphic client), vnc client, python and matplotlib; afternoon session: paraview.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Debugging, Optimization, and Best Practices===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. We will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems. Next, we will present general issues, common pitfalls and optimization strategies that are application to HPC systems. By using profiling tools available for parallel programs, we can see when the bottlenecks are. We can try to alleviate them by following common best practices, allowing one to obtain their results more quickly and at the same time minimize their burden on shared system resources. Walk-through examples and case studies will be presented during the session to illustrate the concepts.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon and Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7850</id>
		<title>2015 Ontario Summer School for High Performance Computing Central</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7850"/>
		<updated>2015-07-13T06:58:24Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Summerschool_hpc_2015.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===About===&lt;br /&gt;
&lt;br /&gt;
The 2015 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, provides attendees with opportunities to learn and share knowledge and experience in high performance and technical computing. The format: a five-day workshop with mixed lectures and hands-on sessions on a number of selected subjects, including shared memory programming, distributed memory programming, parallel data processing, and general purpose graphics processing unit programming. &lt;br /&gt;
&lt;br /&gt;
Below are descriptions and course material for the Central version, given from July 13th to July 17th, 2015, in Toronto.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Forty students, who completed three out of five days, were awarded an &amp;quot;Ontario Summerschool on HPC Certificate&amp;quot;. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
===Introduction to the Linux Shell===&lt;br /&gt;
&lt;br /&gt;
====Abstract====&lt;br /&gt;
&lt;br /&gt;
Working with many of the HPC systems in Ontario involves using the linux/unix command line. This provides a very powerful interface, but it can be quite daunting for the uninitiated. Become initiated with this course. This hands on session will cover basic commands and scripting, as well as touching on some powerful constructs like regular expressions. It could be a great boon for your productivity!&lt;br /&gt;
&lt;br /&gt;
====Details====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
====Prerequisites====&lt;br /&gt;
A laptop with a linux-like environment.&lt;br /&gt;
&lt;br /&gt;
====Slides and other material====&lt;br /&gt;
To come&lt;br /&gt;
[[File:SS2014_IntroToShell.tar.gz]]&lt;br /&gt;
&lt;br /&gt;
===Introduction to High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will provide an introduction to basic concepts of high performance computing. It is intended to be a high level primer for those largely new to HPC, and serve as a foundation upon which to build over the coming days. Topics will include motivation for HPC, essential issues, problem characteristics as they apply to parallelism and a high level overview of parallel programming models. Strategies of running large sets of serial processes using e.g. GNU parallel, will also be presented.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic Linux shell skills Registration for all summer school sessions will become available at https://www.sharcnet.ca/events/ss2015.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Data Analysis with R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session offers a brief introduction to R, with a focus on data analysis and statistics.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
&lt;br /&gt;
Some programming experience in any language. You should have used and written functions. Bring a laptop with a R and Rstudio installed.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Parallel R===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming R, with a focus on parallel data analysis. Topics covered include snow, parallel, and foreach/doparallel.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Monday July 13, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Experience with programming in R and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Shared Memory Systems with OpenMP===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, in which lectures and hands-on labs are interspersed, the students will learn the basics of shared memory programming with OpenMP. In particular, we will discuss the OpenMP's threads, memory, and performance, reductions and load balancing. We will also discuss extensions to heterogeneous systems such as offered by the OpenMP 4.0 and OpenACC standards.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ and/or Fortran scientific programming; Experience editing and compiling code in a Linux environment.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Scientific Computing with Python===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this session, you will be taught how to use python for research computing purposes. Topics include: the basics of python, automation, numpy, scipy, file i/o, and visualization.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date'''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 9:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
A bit of coding experience in any programming or scripting language. Command-line experience in Linux is a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Python for High Performance Computing===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This session will cover parallel programming in python, with a focus on parallel data analysis. We will cover subprocess, multiprocessing, pypar and other parallel-enabling python packages.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Tuesday July 14, 13:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Erik Spence (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Python programming experience and a rudimentary understanding of parallel computing.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming Clusters with MPI===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
In this two-day session, through lectures interspersed with hands-on labs, the students will learn the basics of MPI programming. Examples and exercises will be based on parallelization of common scientific computing problems.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Scott Northrup (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Programming experience with Fortran or C/C++.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Programming GPUs with CUDA===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
This is an introductory course covering programming and computing on GPUs---graphics processing units---which are an increasingly common presence in massively parallel computing architectures. This session will cover both of the available C-like programming frameworks: NVIDIA’s CUDA-C. The basics of GPU programming will be covered, and students will work through a number of hands on examples. Demonstrations of profiling and debugging applications running on the GPU will also be included. The structuring of data and computations that makes full use of the GPU will be discussed in detail. Students should be able to leave the course with the knowledge necessary to begin developing their own GPU applications.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Wednesday July 15, 9:30 - 16:30 &lt;br /&gt;
&lt;br /&gt;
Thursday July 16, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
Dr. Pawel Pomorski and Dr. Sergey Mashchenko (SHARCNET)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
C/C++ scientific programming, experience editing and compiling code in a Linux environment. Some experience with CUDA and/or OpenMP a plus.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other materials=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Visualization===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
The first part of this session will be a basic introduction to general-purpose scientific visualization tools such as gnuplot, grace(xmgr), remote tools (tunneling, VNC), python's matplotlib, and examples from other. The second part will be a mix of lecture and hands-on to introduce more specialized scientific visualization software such as vmd, paraview, and visit.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Time/date''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 404&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
Dr. Marcelo Ponce (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Software installed, for the morning session: gnuplot, ssh (graphic client), vnc client, python and matplotlib; afternoon session: paraview.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Debugging, Optimization, and Best Practices===&lt;br /&gt;
&lt;br /&gt;
=====Abstract=====&lt;br /&gt;
Debugging is an important step in developing a new code, or porting an old one to a new machine. We will discuss the debugging of frequently encountered bugs in serial code with gdb and the debugging of parallel (MPI and threaded) codes with DDT on live systems. Next, we will present general issues, common pitfalls and optimization strategies that are application to HPC systems. By using profiling tools available for parallel programs, we can see when the bottlenecks are. We can try to alleviate them by following common best practices, allowing one to obtain their results more quickly and at the same time minimize their burden on shared system resources. Walk-through examples and case studies will be presented during the session to illustrate the concepts.&lt;br /&gt;
&lt;br /&gt;
=====Details=====&lt;br /&gt;
''Date/time''&lt;br /&gt;
&lt;br /&gt;
Friday July 17, 9:30 - 16:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
Galbraith Building, Room 405&lt;br /&gt;
&lt;br /&gt;
35 St. George Street&lt;br /&gt;
&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructors''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses van Zon and Dr. Mike Nolta (SciNet)&lt;br /&gt;
&lt;br /&gt;
=====Prerequisites=====&lt;br /&gt;
Basic familiarity with a high-level language (C/C++/Fortran) as well as compiling and running programs via the command line environment on a HPC system.&lt;br /&gt;
&lt;br /&gt;
=====Slides and other material=====&lt;br /&gt;
To come&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:SS2014_IntroToShell.tar.gz&amp;diff=7849</id>
		<title>File:SS2014 IntroToShell.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:SS2014_IntroToShell.tar.gz&amp;diff=7849"/>
		<updated>2015-07-13T06:50:51Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_Command_Line_Utilities&amp;diff=7780</id>
		<title>SciNet Command Line Utilities</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_Command_Line_Utilities&amp;diff=7780"/>
		<updated>2015-05-03T16:22:35Z</updated>

		<summary type="html">&lt;p&gt;Nolta: remove scinetUsage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
Below is list of handy command-line utilities written by SciNet to help manage your data and compute. Currently, on the GPC you need to have the '''extras''' module loaded for these to work. Note that in the table, optional arguments are denoted with square brackets (i.e. ''''[]''''), while mandatory arguments are denoted with angular brackets (i.e. ''''&amp;lt;&amp;gt;'''').&lt;br /&gt;
&lt;br /&gt;
= Storage =&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} | Command&lt;br /&gt;
!{{Hl2}}| Arguments&lt;br /&gt;
!{{Hl2}}| Description&lt;br /&gt;
!{{Hl2}}| Cluster&lt;br /&gt;
|-&lt;br /&gt;
|quota&lt;br /&gt;
|&lt;br /&gt;
|Short overview of a user's storage usage.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|diskUsage&lt;br /&gt;
|''-h'' to see all command options&lt;br /&gt;
|Informs about the user and group file system usage.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|topUserDirOver1000list&lt;br /&gt;
|&lt;br /&gt;
|Lists your directories that have over 1,000 files&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|topUserDirOver1GBlist &lt;br /&gt;
|&lt;br /&gt;
|Lists your directories that have over 1 GB of data&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Jobs &amp;amp; Queues =&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} | Command&lt;br /&gt;
!{{Hl2}}| Arguments&lt;br /&gt;
!{{Hl2}}| Description&lt;br /&gt;
!{{Hl2}}| Cluster&lt;br /&gt;
|-&lt;br /&gt;
|qsum&lt;br /&gt;
|most showq arguments work&lt;br /&gt;
|Lists jobs running or in the queue, grouped by user.&lt;br /&gt;
|GPC,TCS&lt;br /&gt;
|-&lt;br /&gt;
|llq1&lt;br /&gt;
|&lt;br /&gt;
|Detailed information on jobs that are actively running.&lt;br /&gt;
|TCS&lt;br /&gt;
|-&lt;br /&gt;
|scinet gpc priority&lt;br /&gt;
|&lt;br /&gt;
|Compute usage in the last 14 days, and how this affects your priority in the queue.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|nodeperf&lt;br /&gt;
|[''userName'']&lt;br /&gt;
|Who is doing what on the current node?&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobperf&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
|Informs about the performance of all nodes of a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobError&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
| Displays realtime error output of a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobOutput&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
| Displays realtime standard output of a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobcd&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
| Allows users to quickly move into the working directory of a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobscript&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
| Displays the submission script used when submitting a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobssh&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
| Allows users to connect to the head-node of a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobtop&lt;br /&gt;
| &amp;lt;''jobId''&amp;lt;nowiki&amp;gt; | &amp;lt;/nowiki&amp;gt;''jobName''&amp;gt;&lt;br /&gt;
| Allows users to &amp;quot;top&amp;quot; on the head-node of a given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobdep&lt;br /&gt;
|&amp;lt;''jobId''&amp;gt;&lt;br /&gt;
|Displays dependencies of given job.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|jobtree&lt;br /&gt;
|[''userName'']&lt;br /&gt;
|Displays the jobs tree of dependencies for a given user.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|debugjob&lt;br /&gt;
|[''nodes'']&lt;br /&gt;
|Requests a time-limited interactive session of up to 8 dedicated nodes&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Modules =&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} | Command&lt;br /&gt;
!{{Hl2}}| Arguments&lt;br /&gt;
!{{Hl2}}| Description&lt;br /&gt;
!{{Hl2}}| Cluster&lt;br /&gt;
|-&lt;br /&gt;
|modulefind&lt;br /&gt;
|[''searchWord'']&lt;br /&gt;
|Finds modules containing ''searchWord'' and indicate their compatibility with already loaded modules.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|moduleadvice&lt;br /&gt;
|&amp;lt;''modulename''&amp;gt;&lt;br /&gt;
|Show the module commands required to load ''modulename'', taking into account prerequisites and conflicts with already loaded modules.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|modulewrap&lt;br /&gt;
|''&amp;lt;comma-separated-modules&amp;gt;'' ''&amp;lt;command&amp;gt;''&lt;br /&gt;
|Load the modules in the ''comma-separated-modules'' list (no spaces!) only to run the given ''command''.&lt;br /&gt;
|GPC&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_Usage_Reports&amp;diff=7779</id>
		<title>SciNet Usage Reports</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_Usage_Reports&amp;diff=7779"/>
		<updated>2015-04-30T14:49:18Z</updated>

		<summary type="html">&lt;p&gt;Nolta: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SciNet usage reports are now available on the CCDB website - &lt;br /&gt;
https://ccdb.computecanada.ca/. Login and then click on &amp;quot;View Group Usage&amp;quot;&lt;br /&gt;
under the &amp;quot;My Account&amp;quot; menu.&lt;br /&gt;
Please let us know if you have comments/questions about these reports.&lt;br /&gt;
 &lt;br /&gt;
PIs and all people that they sponsor will be able to view the reports &lt;br /&gt;
for only their group.&lt;br /&gt;
 &lt;br /&gt;
There is a summary report which gives a high-level &lt;br /&gt;
overview for those groups with RAC allocations as well as more &lt;br /&gt;
detailed cumulative reports which breakdown usage by allocation, system &lt;br /&gt;
and user. These are all updated nightly.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=7770</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=7770"/>
		<updated>2015-04-22T18:25:16Z</updated>

		<summary type="html">&lt;p&gt;Nolta: bgq up&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png| up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png| up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:up.png| up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up.png| up|link=GPU Devel Nodes]][[GPU Devel Nodes|ARC]]&lt;br /&gt;
|[[File:up.png| up| up ]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png| up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png| up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:up.png| up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png| up|link=HPSS]][[HPSS]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mon 13 Apr 2015 23:22:26 EDT:  Most systems available again for users. BGQ should be back within an hour. HPSS will wait until tomorrow morning. Email support if there are issues&lt;br /&gt;
&lt;br /&gt;
Mon Apr 13 2015 20:52:25 EDT:   Utility was missing one phase of power in a large area. Appears to have been restored. Cooling system being restarted. Will likely be at least 2 hrs before any systems are available to users&lt;br /&gt;
&lt;br /&gt;
Mon 13 Apr 2015 20:21:48 EDT:   No power. Utility has multiple issues in the area. Waiting for estimated time for repair&lt;br /&gt;
&lt;br /&gt;
Mon 13 Apr 2015 19:34:32 EDT:   Power issue on-site (at 1925). Cooling and systems down. Staff enroute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages: Previous Messages]&lt;br /&gt;
 --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=7769</id>
		<title>Oldwiki.scinet.utoronto.ca:System Alerts</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Oldwiki.scinet.utoronto.ca:System_Alerts&amp;diff=7769"/>
		<updated>2015-04-22T17:44:20Z</updated>

		<summary type="html">&lt;p&gt;Nolta: bgq down&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== System Status==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
  Notes for updating the system status:&lt;br /&gt;
&lt;br /&gt;
  -  When removing system status entries, please archive them to:&lt;br /&gt;
&lt;br /&gt;
     http://wiki.scinethpc.ca/wiki/index.php/Previous_messages:&lt;br /&gt;
&lt;br /&gt;
     (yes, the trailing colon is part of the url)&lt;br /&gt;
&lt;br /&gt;
  -  The 'status circles' can be one of the following files: &lt;br /&gt;
&lt;br /&gt;
     down.png   for down&lt;br /&gt;
     up25.png   for 25% up&lt;br /&gt;
     up50.png   for 50% up&lt;br /&gt;
     up75.png   for 75% up&lt;br /&gt;
     up.png     for 100% up&lt;br /&gt;
&lt;br /&gt;
 --&amp;gt;&lt;br /&gt;
{| &lt;br /&gt;
|[[File:up.png| up|link=GPC Quickstart]][[GPC Quickstart|GPC]]&lt;br /&gt;
|[[File:up.png| up|link=TCS Quickstart]][[TCS Quickstart|TCS]]&lt;br /&gt;
|[[File:up.png| up|link=Sandy]][[Sandy]]&lt;br /&gt;
|[[File:up.png| up|link=GPU Devel Nodes]][[GPU Devel Nodes|ARC]]&lt;br /&gt;
|[[File:up.png| up| up ]]File System&lt;br /&gt;
|-&lt;br /&gt;
|[[File:up.png| up|link=Gravity]][[Gravity]]&lt;br /&gt;
|[[File:up.png| up|link=P7 Linux Cluster]][[P7 Linux Cluster|P7]]&lt;br /&gt;
|[[File:down.png| up|link=BGQ]][[BGQ]]&lt;br /&gt;
|[[File:up.png| up|link=HPSS]][[HPSS]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Mon 13 Apr 2015 23:22:26 EDT:  Most systems available again for users. BGQ should be back within an hour. HPSS will wait until tomorrow morning. Email support if there are issues&lt;br /&gt;
&lt;br /&gt;
Mon Apr 13 2015 20:52:25 EDT:   Utility was missing one phase of power in a large area. Appears to have been restored. Cooling system being restarted. Will likely be at least 2 hrs before any systems are available to users&lt;br /&gt;
&lt;br /&gt;
Mon 13 Apr 2015 20:21:48 EDT:   No power. Utility has multiple issues in the area. Waiting for estimated time for repair&lt;br /&gt;
&lt;br /&gt;
Mon 13 Apr 2015 19:34:32 EDT:   Power issue on-site (at 1925). Cooling and systems down. Staff enroute.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[https://support.scinet.utoronto.ca/wiki/index.php/Previous_messages: Previous Messages]&lt;br /&gt;
 --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7720</id>
		<title>SciNet User Support Library</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7720"/>
		<updated>2015-03-18T18:25:27Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|  style=&amp;quot;border-spacing: 8px;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
{{SciNetWiki:System_Alerts}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
==System News==&lt;br /&gt;
* Mar 18, BGQ: module hdf5/1812-v18-mpich2-gcc is deprecated; please use hdf5/1814-v18-mpich2-gcc instead.&lt;br /&gt;
&lt;br /&gt;
* Mar 13, BGQ: module fftw/3.3.3-gcc4.8.1 is deprecated; please use fftw/3.3.4-gcc4.8.1 instead.&lt;br /&gt;
&lt;br /&gt;
* Mar 05, BGQ:  modules bgqgcc/4.8.1 and mpich2/gcc-4.8.1 now fixed for V1R2M2.&lt;br /&gt;
&lt;br /&gt;
* Mar 04, GPC: OpenBLAS 0.2.13 installed as modules.&lt;br /&gt;
&lt;br /&gt;
([[Previous System News]])&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f6e8e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[SciNet Command Line Utilities]]&lt;br /&gt;
* [[Media:SciNet_Tutorial.pdf|SciNet User Tutorial]]&lt;br /&gt;
* [[GPC_Quickstart|GPC: General Purpose Cluster]]&lt;br /&gt;
* [[TCS_Quickstart|TCS: Tightly Coupled System]]&lt;br /&gt;
* [[Sandy| Sandy: Intel Sandybridge nodes ]]&lt;br /&gt;
* [[GPU_Devel_Nodes|ARC: GPU nodes]]&lt;br /&gt;
* [[Gravity| Gravity: GPU nodes]]&lt;br /&gt;
* [[P7_Linux_Cluster|P7: Power 7 Linux cluster]]&lt;br /&gt;
* [[BGQ|BGQ: BlueGene/Q clusters]]&lt;br /&gt;
* [[Software_and_Libraries|Software and libraries]]&lt;br /&gt;
* [[Data_Management|Data management]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging_SciNet | Acknowledging SciNet]]&lt;br /&gt;
* [[File:Rss.gif|link=http://support.scinet.utoronto.ca/podcasts.xml]]&amp;amp;nbsp;[http://support.scinet.utoronto.ca/podcasts.xml SciNet Training Webcasts]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8f6e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials and Manuals ==&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#SciNet_Basics|SciNet basics]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Linux|Linux]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Batch_job_management|Batch job management]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Programming|Programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Parallel_Programming|Parallel programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#GPU_Computing|GPU computing]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Performance_Tuning|Performance tuning]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Debugging|Debugging]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Math_libraries_.28BLAS.2C_LAPACK.2C_FFT.29|Math libraries (BLAS, LAPACK, FFT)]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#I/O|I/O and databases]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Visualization|Visualization]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Applications|Applications]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Manuals|Manuals (compilers etc)]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8e8f6; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What's New On The Wiki ==&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: Updated [[GPC Quickstart]] with info on email notifications from the scheduler.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Hdf5]] compilation page updated.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Research Computing with Python 2014]] lectures 5-8&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: &amp;quot;Modern CUDA Features&amp;quot; TechTalk slides in [[SciNet TechTalks and Seminars]].&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: [[Research Computing with Python 2014]] lectures 1-4&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[User_Tips#Reducing_virtual_memory_consumption_for_multithreaded_programs| Tip on reducing virtual memory consumption for multithreaded programs]]&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Improved information on the [[Python]] versions installed on the GPC, and which modules are included in each version.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Description on using job arrays on the GPC on the [[Scheduler]] page.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[Intro to Tkinter|Tkinter instructions]], [[Media:Tkinter.pdf|slides]] and [[Media:Tkinter_code.tgz|code]] for the TkInter workshop held in September.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Instructions on using [[Hadoop for HPCers|Hadoop]] (for the Hadoop workshop held in September).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Previous new stuff can be found in the [[What's new archive]].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f4f4fa; border-radius:7px&amp;quot; |&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
{{SciNetWiki:Community_Portal}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{#Widget:Twitter|shell.background=#9fb1c2|tweets.links=#4775c1|tweets.color=#000000|tweets.background=#ffffff|user=SciNetHPC}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Old Main Page]] --!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7719</id>
		<title>SciNet User Support Library</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7719"/>
		<updated>2015-03-18T18:23:27Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System News */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|  style=&amp;quot;border-spacing: 8px;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
{{SciNetWiki:System_Alerts}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
==System News==&lt;br /&gt;
* Mar 18, BGQ: module hdf5/1812-v18-mpich2-gcc is deprecated; please use hdf5/1814-v18-mpich2-gcc instead.&lt;br /&gt;
&lt;br /&gt;
* Mar 05, BGQ:  modules bgqgcc/4.8.1 and mpich2/gcc-4.8.1 now fixed for V1R2M2.&lt;br /&gt;
&lt;br /&gt;
* Mar 04, GPC: OpenBLAS 0.2.13 installed as modules.&lt;br /&gt;
&lt;br /&gt;
([[Previous System News]])&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f6e8e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[SciNet Command Line Utilities]]&lt;br /&gt;
* [[Media:SciNet_Tutorial.pdf|SciNet User Tutorial]]&lt;br /&gt;
* [[GPC_Quickstart|GPC: General Purpose Cluster]]&lt;br /&gt;
* [[TCS_Quickstart|TCS: Tightly Coupled System]]&lt;br /&gt;
* [[Sandy| Sandy: Intel Sandybridge nodes ]]&lt;br /&gt;
* [[GPU_Devel_Nodes|ARC: GPU nodes]]&lt;br /&gt;
* [[Gravity| Gravity: GPU nodes]]&lt;br /&gt;
* [[P7_Linux_Cluster|P7: Power 7 Linux cluster]]&lt;br /&gt;
* [[BGQ|BGQ: BlueGene/Q clusters]]&lt;br /&gt;
* [[Software_and_Libraries|Software and libraries]]&lt;br /&gt;
* [[Data_Management|Data management]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging_SciNet | Acknowledging SciNet]]&lt;br /&gt;
* [[File:Rss.gif|link=http://support.scinet.utoronto.ca/podcasts.xml]]&amp;amp;nbsp;[http://support.scinet.utoronto.ca/podcasts.xml SciNet Training Webcasts]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8f6e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials and Manuals ==&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#SciNet_Basics|SciNet basics]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Linux|Linux]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Batch_job_management|Batch job management]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Programming|Programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Parallel_Programming|Parallel programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#GPU_Computing|GPU computing]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Performance_Tuning|Performance tuning]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Debugging|Debugging]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Math_libraries_.28BLAS.2C_LAPACK.2C_FFT.29|Math libraries (BLAS, LAPACK, FFT)]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#I/O|I/O and databases]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Visualization|Visualization]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Applications|Applications]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Manuals|Manuals (compilers etc)]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8e8f6; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What's New On The Wiki ==&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: Updated [[GPC Quickstart]] with info on email notifications from the scheduler.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Hdf5]] compilation page updated.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Research Computing with Python 2014]] lectures 5-8&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: &amp;quot;Modern CUDA Features&amp;quot; TechTalk slides in [[SciNet TechTalks and Seminars]].&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: [[Research Computing with Python 2014]] lectures 1-4&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[User_Tips#Reducing_virtual_memory_consumption_for_multithreaded_programs| Tip on reducing virtual memory consumption for multithreaded programs]]&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Improved information on the [[Python]] versions installed on the GPC, and which modules are included in each version.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Description on using job arrays on the GPC on the [[Scheduler]] page.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[Intro to Tkinter|Tkinter instructions]], [[Media:Tkinter.pdf|slides]] and [[Media:Tkinter_code.tgz|code]] for the TkInter workshop held in September.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Instructions on using [[Hadoop for HPCers|Hadoop]] (for the Hadoop workshop held in September).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Previous new stuff can be found in the [[What's new archive]].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f4f4fa; border-radius:7px&amp;quot; |&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
{{SciNetWiki:Community_Portal}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{#Widget:Twitter|shell.background=#9fb1c2|tweets.links=#4775c1|tweets.color=#000000|tweets.background=#ffffff|user=SciNetHPC}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Old Main Page]] --!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7612</id>
		<title>SciNet User Support Library</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7612"/>
		<updated>2015-02-11T14:34:55Z</updated>

		<summary type="html">&lt;p&gt;Nolta: /* System Updates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|  style=&amp;quot;border-spacing: 8px;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
{{SciNetWiki:System_Alerts}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
==System Updates==&lt;br /&gt;
&lt;br /&gt;
* Feb 6, GPC: intel/15.0 module is deprecated -- use 15.0.1 instead.&lt;br /&gt;
&lt;br /&gt;
* Feb 5, GPC, BGQ: git/1.9.5 is available as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 22, [[BGQ]] now a single 4-rack system. bgqdev-fen1 is the single login/devel/submission node.&lt;br /&gt;
&lt;br /&gt;
* Jan 19, GPC: emacs 24.4 available as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 14, GPC: kernel upgraded to 2.6.32-504.3.3.el6.x86_64. Its base OS remains unchanged.&lt;br /&gt;
&lt;br /&gt;
* Jan 10, GPC: Cmake 3.1.0 available as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 7, GPC: ROOT 6.0.02 installed as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 6, GPC: Ruby 1.9.3 installed as a module.&lt;br /&gt;
&lt;br /&gt;
* Dec 12, [[BGQ]]: devel system upgraded to 2 full racks (32,768 cores).&lt;br /&gt;
&lt;br /&gt;
([[Previous_updates:|Previous updates]])&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f6e8e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[Media:SciNet_Tutorial.pdf|SciNet User Tutorial]]&lt;br /&gt;
* [[GPC_Quickstart|GPC: General Purpose Cluster]]&lt;br /&gt;
* [[TCS_Quickstart|TCS: Tightly Coupled System]]&lt;br /&gt;
* [[Sandy| Sandy: Intel Sandybridge nodes ]]&lt;br /&gt;
* [[GPU_Devel_Nodes|ARC: GPU nodes]]&lt;br /&gt;
* [[Gravity| Gravity: GPU nodes]]&lt;br /&gt;
* [[P7_Linux_Cluster|P7: Power 7 Linux cluster]]&lt;br /&gt;
* [[BGQ|BGQ: BlueGene/Q clusters]]&lt;br /&gt;
* [[Software_and_Libraries|Software and libraries]]&lt;br /&gt;
* [[Data_Management|Data management]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging_SciNet | Acknowledging SciNet]]&lt;br /&gt;
* [[File:Rss.gif|link=http://support.scinet.utoronto.ca/podcasts.xml]]&amp;amp;nbsp;[http://support.scinet.utoronto.ca/podcasts.xml SciNet Training Webcasts]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8f6e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials and Manuals ==&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#SciNet_Basics|SciNet basics]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Linux|Linux]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Batch_job_management|Batch job management]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Programming|Programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Parallel_Programming|Parallel programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#GPU_Computing|GPU computing]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Performance_Tuning|Performance tuning]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Debugging|Debugging]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Math_libraries_.28BLAS.2C_LAPACK.2C_FFT.29|Math libraries (BLAS, LAPACK, FFT)]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#I/O|I/O and databases]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Visualization|Visualization]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Applications|Applications]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Manuals|Manuals (compilers etc)]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8e8f6; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What's New On The Wiki ==&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: Updated [[GPC Quickstart]] with info on email notifications from the scheduler.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Hdf5]] compilation page updated.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Research Computing with Python 2014]] lectures 5-8&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: &amp;quot;Modern CUDA Features&amp;quot; TechTalk slides in [[SciNet TechTalks and Seminars]].&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: [[Research Computing with Python 2014]] lectures 1-4&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[User_Tips#Reducing_virtual_memory_consumption_for_multithreaded_programs| Tip on reducing virtual memory consumption for multithreaded programs]]&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Improved information on the [[Python]] versions installed on the GPC, and which modules are included in each version.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Description on using job arrays on the GPC on the [[Scheduler]] page.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[Intro to Tkinter|Tkinter instructions]], [[Media:Tkinter.pdf|slides]] and [[Media:Tkinter_code.tgz|code]] for the TkInter workshop held in September.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Instructions on using [[Hadoop for HPCers|Hadoop]] (for the Hadoop workshop held in September).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Previous new stuff can be found in the [[What's new archive]].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f4f4fa; border-radius:7px&amp;quot; |&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
{{SciNetWiki:Community_Portal}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{#Widget:Twitter|shell.background=#9fb1c2|tweets.links=#4775c1|tweets.color=#000000|tweets.background=#ffffff|user=SciNetHPC}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Old Main Page]] --!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7581</id>
		<title>SciNet User Support Library</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=SciNet_User_Support_Library&amp;diff=7581"/>
		<updated>2015-02-06T20:43:33Z</updated>

		<summary type="html">&lt;p&gt;Nolta: git, intel module updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{|  style=&amp;quot;border-spacing: 8px;&amp;quot;&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
{{SciNetWiki:System_Alerts}}&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;cellpadding:1em; padding:1em; border:3px solid #0645ad; background-color:#f6f6f6; border-radius:7px&amp;quot;|&lt;br /&gt;
==System Updates==&lt;br /&gt;
&lt;br /&gt;
* Feb 6, GPC: intel/15.0 is deprecated -- use 15.0.1 instead.&lt;br /&gt;
&lt;br /&gt;
* Feb 5, GPC, BGQ: git/1.9.5 is available as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 22, [[BGQ]] now a single 4-rack system. bgqdev-fen1 is the single login/devel/submission node.&lt;br /&gt;
&lt;br /&gt;
* Jan 19, GPC: emacs 24.4 available as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 14, GPC: kernel upgraded to 2.6.32-504.3.3.el6.x86_64. Its base OS remains unchanged.&lt;br /&gt;
&lt;br /&gt;
* Jan 10, GPC: Cmake 3.1.0 available as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 7, GPC: ROOT 6.0.02 installed as a module.&lt;br /&gt;
&lt;br /&gt;
* Jan 6, GPC: Ruby 1.9.3 installed as a module.&lt;br /&gt;
&lt;br /&gt;
* Dec 12, [[BGQ]]: devel system upgraded to 2 full racks (32,768 cores).&lt;br /&gt;
&lt;br /&gt;
([[Previous_updates:|Previous updates]])&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; width=&amp;quot;50%&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f6e8e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== QuickStart Guides ==&lt;br /&gt;
* [[Media:SciNet_Tutorial.pdf|SciNet User Tutorial]]&lt;br /&gt;
* [[GPC_Quickstart|GPC: General Purpose Cluster]]&lt;br /&gt;
* [[TCS_Quickstart|TCS: Tightly Coupled System]]&lt;br /&gt;
* [[Sandy| Sandy: Intel Sandybridge nodes ]]&lt;br /&gt;
* [[GPU_Devel_Nodes|ARC: GPU nodes]]&lt;br /&gt;
* [[Gravity| Gravity: GPU nodes]]&lt;br /&gt;
* [[P7_Linux_Cluster|P7: Power 7 Linux cluster]]&lt;br /&gt;
* [[BGQ|BGQ: BlueGene/Q clusters]]&lt;br /&gt;
* [[Software_and_Libraries|Software and libraries]]&lt;br /&gt;
* [[Data_Management|Data management]]&lt;br /&gt;
* [[FAQ | FAQ (frequently asked questions)]]&lt;br /&gt;
* [[Acknowledging_SciNet | Acknowledging SciNet]]&lt;br /&gt;
* [[File:Rss.gif|link=http://support.scinet.utoronto.ca/podcasts.xml]]&amp;amp;nbsp;[http://support.scinet.utoronto.ca/podcasts.xml SciNet Training Webcasts]&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8f6e8; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== Tutorials and Manuals ==&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#SciNet_Basics|SciNet basics]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Linux|Linux]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Batch_job_management|Batch job management]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Programming|Programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Parallel_Programming|Parallel programming]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#GPU_Computing|GPU computing]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Performance_Tuning|Performance tuning]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Debugging|Debugging]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Math_libraries_.28BLAS.2C_LAPACK.2C_FFT.29|Math libraries (BLAS, LAPACK, FFT)]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#I/O|I/O and databases]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Visualization|Visualization]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Applications|Applications]]&lt;br /&gt;
* [[Knowledge_Base:_Tutorials_and_Manuals#Manuals|Manuals (compilers etc)]]&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#e8e8f6; border-radius:7px&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
== What's New On The Wiki ==&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: Updated [[GPC Quickstart]] with info on email notifications from the scheduler.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Hdf5]] compilation page updated.&lt;br /&gt;
&lt;br /&gt;
* Dec 2014: [[Research Computing with Python 2014]] lectures 5-8&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: &amp;quot;Modern CUDA Features&amp;quot; TechTalk slides in [[SciNet TechTalks and Seminars]].&lt;br /&gt;
&lt;br /&gt;
* Nov 2014: [[Research Computing with Python 2014]] lectures 1-4&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[User_Tips#Reducing_virtual_memory_consumption_for_multithreaded_programs| Tip on reducing virtual memory consumption for multithreaded programs]]&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Improved information on the [[Python]] versions installed on the GPC, and which modules are included in each version.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Description on using job arrays on the GPC on the [[Scheduler]] page.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: [[Intro to Tkinter|Tkinter instructions]], [[Media:Tkinter.pdf|slides]] and [[Media:Tkinter_code.tgz|code]] for the TkInter workshop held in September.&lt;br /&gt;
&lt;br /&gt;
* Sept 2014: Instructions on using [[Hadoop for HPCers|Hadoop]] (for the Hadoop workshop held in September).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
Previous new stuff can be found in the [[What's new archive]].&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; style=&amp;quot;padding:1em; border:1px solid #aaaaaa; background-color:#f4f4fa; border-radius:7px&amp;quot; |&lt;br /&gt;
&amp;lt;div style='text-align:left;'&amp;gt;&lt;br /&gt;
{{SciNetWiki:Community_Portal}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{#Widget:Twitter|shell.background=#9fb1c2|tweets.links=#4775c1|tweets.color=#000000|tweets.background=#ffffff|user=SciNetHPC}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- [[Old Main Page]] --!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=BGQ&amp;diff=7576</id>
		<title>BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=BGQ&amp;diff=7576"/>
		<updated>2015-02-05T20:48:58Z</updated>

		<summary type="html">&lt;p&gt;Nolta: add git module&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:Blue_Gene_Cabinet.jpeg|center|300px|thumb]]&lt;br /&gt;
|name=Blue Gene/Q (BGQ)&lt;br /&gt;
|installed=Aug 2012, Nov 2014&lt;br /&gt;
|operatingsystem= RH6.3, CNK (Linux) &lt;br /&gt;
|loginnode= bgqdev-fen1&lt;br /&gt;
|nnodes=  4096 nodes (65,536 cores)&lt;br /&gt;
|rampernode=16 GB &lt;br /&gt;
|corespernode=16 (64 threads)&lt;br /&gt;
|interconnect=5D Torus (jobs), QDR Infiniband (I/O) &lt;br /&gt;
|vendorcompilers= bgxlc, bgxlf&lt;br /&gt;
|queuetype=Loadleveler&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==System Status==&lt;br /&gt;
&lt;br /&gt;
The current BGQ system status can be found on the wiki's [[Main Page]].&lt;br /&gt;
&lt;br /&gt;
==SOSCIP &amp;amp; LKSAVI==&lt;br /&gt;
&lt;br /&gt;
The BGQ is a Southern Ontario Smart Computing&lt;br /&gt;
Innovation Platform ([http://soscip.org/ SOSCIP]) BlueGene/Q supercomputer located at the&lt;br /&gt;
University of Toronto's SciNet HPC facility. The SOSCIP &lt;br /&gt;
multi-university/industry consortium is funded by the Ontario Government &lt;br /&gt;
and the Federal Economic Development Agency for Southern Ontario [http://www.research.utoronto.ca/about/our-research-partners/soscip/].&lt;br /&gt;
&lt;br /&gt;
A half-rack of BlueGene/Q (8,192 cores) was purchased by the [http://likashingvirology.med.ualberta.ca/ Li Ka Shing Institute of Virology] at the University of Alberta in late fall 2014 and integrated into the existing BGQ system.&lt;br /&gt;
&lt;br /&gt;
== Support Email ==&lt;br /&gt;
&lt;br /&gt;
Please use [mailto:bgq-support@scinet.utoronto.ca &amp;lt;bgq-support@scinet.utoronto.ca&amp;gt;] for BGQ-specific inquiries.&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
&lt;br /&gt;
BGQ is an extremely dense and energy efficient 3rd generation Blue Gene IBM supercomputer built around a system-on-a-chip compute node that has a 16core 1.6GHz PowerPC based CPU (PowerPC A2) with 16GB of Ram.  The nodes are bundled in groups of 32 into a node board (512 cores), and 16 boards make up a midplane (8192 cores) with 2 midplanes per rack, or 16,348 cores and 16 TB of RAM per rack. The compute nodes run a very lightweight Linux-based operating system called CNK.  The compute nodes are all connected together using a custom 5D torus highspeed interconnect. Each rack has 16 I/O nodes that run a full Redhat Linux OS that manages the compute nodes and mounts the filesystem.  SciNet's BGQ consists of 8 mdiplanes (four-racks) totalling 65,536 cores and 64TB of RAM.&lt;br /&gt;
&lt;br /&gt;
[[Image:BlueGeneQHardware2.png‎ |center]]&lt;br /&gt;
&lt;br /&gt;
=== 5D Torus Network ===&lt;br /&gt;
&lt;br /&gt;
The network topology of BlueGene/Q is a five-dimensional (5D) torus, with direct links between the nearest neighbors in the ±A, ±B, ±C, ±D, and ±E directions.  As such there are only a few optimum block sizes that will use the network efficiently.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| '''Node Boards '''&lt;br /&gt;
| '''Compute Nodes'''&lt;br /&gt;
| '''Cores'''&lt;br /&gt;
| '''Torus Dimensions'''&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32&lt;br /&gt;
| 512&lt;br /&gt;
| 2x2x2x2x2&lt;br /&gt;
|-&lt;br /&gt;
| 2 (adjacent pairs)&lt;br /&gt;
| 64&lt;br /&gt;
| 1024&lt;br /&gt;
| 2x2x4x2x2&lt;br /&gt;
|-&lt;br /&gt;
| 4 (quadrants)&lt;br /&gt;
| 128&lt;br /&gt;
| 2048&lt;br /&gt;
| 2x2x4x4x2&lt;br /&gt;
|-&lt;br /&gt;
| 8 (halves)&lt;br /&gt;
| 256&lt;br /&gt;
| 4096&lt;br /&gt;
| 4x2x4x4x2&lt;br /&gt;
|-&lt;br /&gt;
| 16 (midplane)&lt;br /&gt;
| 512&lt;br /&gt;
| 8192&lt;br /&gt;
| 4x4x4x4x2&lt;br /&gt;
|-&lt;br /&gt;
| 32 (1 rack)&lt;br /&gt;
| 1024&lt;br /&gt;
| 16384&lt;br /&gt;
| 4x4x4x8x2 &lt;br /&gt;
|-&lt;br /&gt;
| 64 (2 racks)&lt;br /&gt;
| 2048&lt;br /&gt;
| 32768&lt;br /&gt;
| 4x4x8x8x2&lt;br /&gt;
|-&lt;br /&gt;
| 96 (3 racks)&lt;br /&gt;
| 3072&lt;br /&gt;
| 49152&lt;br /&gt;
| 4x4x12x8x2&lt;br /&gt;
|-&lt;br /&gt;
| 128 (4 racks)&lt;br /&gt;
| 4096&lt;br /&gt;
| 65536&lt;br /&gt;
| 8x4x8x8x2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Login/Devel Node ==&lt;br /&gt;
&lt;br /&gt;
The development node is '''bgqdev-fen1''' which one can login to from the regular '''login.scinet.utoronto.ca''' login nodes or directly from outside using '''bgqdev.scinet.utoronto.ca''', e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh -l USERNAME bgqdev.scinet.utoronto.ca -X&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where USERNAME is your username on the BGQ and the &amp;lt;tt&amp;gt;-X&amp;lt;/tt&amp;gt; flag is optional, needed only if you will use X graphics.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note: To learn how to setup ssh keys for logging in please see [[Ssh keys]].&lt;br /&gt;
&lt;br /&gt;
These development node is a Power7 machines running Linux which serve as the compilation and submission host for the BGQ.  Programs are cross-compiled for the BGQ on this node and then submitted to the queue using loadleveler.&lt;br /&gt;
&lt;br /&gt;
===Modules and Environment Variables===&lt;br /&gt;
&lt;br /&gt;
To use most packages on the SciNet machines - including most of the compilers - , you will have to use the `modules' command.  The command &amp;lt;tt&amp;gt;module load some-package&amp;lt;/tt&amp;gt; will set your environment variables (&amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;, etc) to include the default version of that package.   &amp;lt;tt&amp;gt;module load some-package/specific-version&amp;lt;/tt&amp;gt; will load a specific version of that package.  This makes it very easy for different users to use different versions of compilers, MPI versions, libraries etc.&lt;br /&gt;
&lt;br /&gt;
A list of the installed software can be seen on the system by typing &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To load a module (for example, the default version of the intel compilers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load vacpp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload a module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module unload vacpp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload all modules&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These commands can go in your .bashrc files to make sure you are using the correct packages.&lt;br /&gt;
&lt;br /&gt;
Modules that load libraries, define environment variables pointing to the location of library files and include files for use Makefiles. These environment variables follow the naming convention&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $SCINET_[short-module-name]_BASE&lt;br /&gt;
 $SCINET_[short-module-name]_LIB&lt;br /&gt;
 $SCINET_[short-module-name]_INC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
for the base location of the module's files, the location of the libraries binaries and the header files, respectively.&lt;br /&gt;
&lt;br /&gt;
So to compile and link the library, you will have to add &amp;lt;tt&amp;gt;-I${SCINET_[module-basename]_INC}&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-L${SCINET_[module-basename]_LIB}&amp;lt;/tt&amp;gt;, respectively, in addition to the usual &amp;lt;tt&amp;gt;-l[libname]&amp;lt;/tt&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Note that a &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; command ''only'' sets the environment variables in your current shell (and any subprocesses that the shell launches).   It does ''not'' effect other shell environments.&lt;br /&gt;
&lt;br /&gt;
If you always require the same modules, it is easiest to load those modules in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; and then they will always be present in your environment; if you routinely have to flip back and forth between modules, it is easiest to have almost no modules loaded in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; and simply load them as you need them (and have the required &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; commands in your job submission scripts).&lt;br /&gt;
&lt;br /&gt;
=== Compilers ===&lt;br /&gt;
&lt;br /&gt;
The BGQ uses IBM XL compilers to cross-compile code for the BGQ.  Compilers are available for FORTRAN, C, and C++.  They are accessible by default, or by loading the '''xlf''' and '''vacpp''' modules. The compilers by default produce&lt;br /&gt;
static binaries, however with BGQ it is possible to now use dynamic libraries as well.  The compilers follow the XL conventions with the prefix '''bg''',&lt;br /&gt;
so '''bgxlc''' and '''bgxlf90''' are the C and FORTRAN compilers respectively.  &lt;br /&gt;
&lt;br /&gt;
Most users however will use the MPI variants, i.e. '''mpixlf90''' and '''mpixlc''' and  which are available by loading&lt;br /&gt;
the '''mpich2''' module. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load mpich2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommended to use at least the following flags when compiling and linking&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-O3 -qarch=qp -qtune=qp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to build a package for which the configure script tries to run small test jobs, the cross-compiling nature of the bgq can get in the way.  In that case, you should use the interactive [[BGQ#Interactive_Use_.2F_Debugging | &amp;lt;tt&amp;gt;'''debugjob'''&amp;lt;/tt&amp;gt;]] environment as described below.&lt;br /&gt;
&lt;br /&gt;
== Job Submission ==&lt;br /&gt;
&lt;br /&gt;
As the BGQ architecture is different from the development nodes, the only way to test your program is to submit a job to the BGQ.  Jobs are submitted through loadleveler using '''runjob''' which in many ways similar to mpirun or mpiexec.  As shown above in the network topology overview, there are only a few optimum job size configurations which is also further constrained by each block requiring a minimum of one IO node.  In SciNet's configuration (with 8 I/O nodes per midplane) this allows 64 nodes (1024 cores) to be the smallest block size. Normally a block size matches the job size to offer fully dedicated resources to the job.  Smaller jobs can be run within the same block however this results in shared resources (network and IO) and are referred to as sub-block jobs and are described in more detail below.  &lt;br /&gt;
&lt;br /&gt;
=== runjob ===&lt;br /&gt;
&lt;br /&gt;
All BGQ jobs are launced using '''runjob''' which for those familiar with MPI is analogous to mpirun/mpiexec.  Jobs run on a block, which is a predefined group of nodes that have already been configured and booted.  When using loadleveler this is set for you, and you do not have to specify the block name.  For example, if your loadleveler script requests 64 nodes, each with 16 cores (for a total of 1024 cores), you run a job with 16 processes per node and 1024 total processes with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runjob --np 1024 --ranks-per-node=16 --cwd=$PWD : $PWD/code -f file.in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, &amp;lt;tt&amp;gt;--np 1024&amp;lt;/tt&amp;gt; sets the total number of mpi tasks, while &amp;lt;tt&amp;gt;--ranks-per-node=16&amp;lt;/tt&amp;gt; specifies that 16 processes should run on each node.&lt;br /&gt;
For pure mpi jobs, it is advisable always to give the number of ranks per node, because the default value of 1 may leave 15 cores on the node idle. The argument to ranks-per-node may be 1, 2, 4, 8, 16, 32, or 64. &lt;br /&gt;
&lt;br /&gt;
(Note: If this were not a loadleveler job, and the block ID was R00-M0-N03-64, the command would be &amp;quot;&amp;lt;tt&amp;gt;runjob --block R00-M0-N03-64 --np 1024 --ranks-per-node=16 --cwd=$PWD : $PWD/code -f file.in&amp;lt;/tt&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
runjob flags are shown with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runjob -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a particularly useful one is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--verbose #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where # is from 1-7 which can be helpful in debugging an application.&lt;br /&gt;
&lt;br /&gt;
=== How to set ranks-per-node ===&lt;br /&gt;
&lt;br /&gt;
There are 16 cores per node, but the argument to ranks-per-node may be 1, 2, 4, 8, 16, 32, or 64.  While it may seem natural to set ranks-per-node to 16, this is not generally recommended.  On the BGQ, one can efficiently run more than 1 process per node, because each core has four &amp;quot;hardware threads&amp;quot; (similar to HyperThreading on the GPC and Simultaneous Multi Threading on the TCS and P7), which can keep the different parts of each core busy at the same time. One would therefore ideally use 64 ranks per node.  There are two main reason why one might not set ranks-per-node to 64:&lt;br /&gt;
# The memory requirements do not allow 64 ranks (each rank only has 256MB of memory)&lt;br /&gt;
# The application is more efficient in a hybrid MPI/OpenMP mode (or MPI/pthreads). Using less ranks-per-node, the hardware threads are used as OpenMP threads within each process.&lt;br /&gt;
Because threads can share memory, the memory requirements of the hybrid runs is typically smaller than that of pure MPI runs.&lt;br /&gt;
&lt;br /&gt;
Note that the total number of mpi processes in a runjob (i.e., the --np argument) should be the ranks-per-node times the number of nodes (set by bg_size in the loadleveler script). So for the same number of nodes, if you change ranks-per-node by a factor of two, you should also multiply the total number of mpi processes by two.&lt;br /&gt;
&lt;br /&gt;
=== Queue Limits ===&lt;br /&gt;
&lt;br /&gt;
The maximum wall_clock_limit is 24 hours.  Official SOSCIP project jobs are prioritized over all other jobs using a fairshare algorithm with a 14 day rolling window.&lt;br /&gt;
&lt;br /&gt;
A 64 node block is reserved for development and interactive testing from 8AM-12AM everyday including weekends.  This block is accessed by using the [[BGQ#Interactive_Use_.2F_Debugging | &amp;lt;tt&amp;gt;'''debugjob'''&amp;lt;/tt&amp;gt;]] command which has a 30 minute maximum wall_clock_limit. The purpose of this reservation is to ensure short testing jobs are run quickly without being held up by longer production type jobs.&lt;br /&gt;
&lt;br /&gt;
=== BACKFILL scheduling ===&lt;br /&gt;
To optimize the cluster usage, we encourage users to submit jobs according to the available resources on BGQ. The command &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;llAvailableResources&amp;lt;/span&amp;gt; gives for example :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
On the Devel system : only a debugjob can start immediately&lt;br /&gt;
&lt;br /&gt;
On the Prod. system : a job will start immediately if you use 512 nodes requesting a walltime T &amp;lt;= 21 hours and 11 min &lt;br /&gt;
On the Prod. system : a job will start immediately if you use 256 nodes requesting a walltime T &amp;lt;= 21 hours and 11 min &lt;br /&gt;
On the Prod. system : a job will start immediately if you use 128 nodes requesting a walltime T &amp;lt;= 24 hours and 0 min &lt;br /&gt;
On the Prod. system : a job will start immediately if you use 64 nodes requesting a walltime T &amp;lt;= 24 hours and 0 min&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch Jobs ===&lt;br /&gt;
&lt;br /&gt;
Job submission is done through loadleveler with a few blue gene specific commands.  The command &amp;quot;bg_size&amp;quot; is in number of nodes, not cores, so a bg_size=64 would be 64x16=1024 cores.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;bg_size&amp;lt;/span&amp;gt; can only be equal to 64, 128, 256, 512, 1024 and 2048.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;np&amp;lt;/span&amp;gt; &amp;amp;le; ranks-per-node * bg_size&lt;br /&gt;
&lt;br /&gt;
ranks-per-node &amp;amp;le; np&lt;br /&gt;
&lt;br /&gt;
(ranks-per-node * OMP_NUM_THREADS ) &amp;amp;le; 64 &lt;br /&gt;
&lt;br /&gt;
np : number of MPI processes&lt;br /&gt;
&lt;br /&gt;
ranks-per-node : number of MPI processes per node = 1 , 2 , 4 , 8 , 16 , 32 , 64&lt;br /&gt;
&lt;br /&gt;
OMP_NUM_THREADS : number of OpenMP thread per MPI process (for hybrid codes) = 1 , 2 , 4 , 8 , 16 , 32 , 64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ queue &lt;br /&gt;
&lt;br /&gt;
# Launch all BGQ jobs using runjob&lt;br /&gt;
runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To submit to the queue use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llsubmit myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Steps ( Job dependency) ===&lt;br /&gt;
LoadLeveler has a lot of advanced features to control job submission and execution. One of these features is called steps. This feature allows a series of jobs to be submitted using one script with dependencies defined between the jobs. What this allows is for a series of jobs to be run sequentially, waiting for the previous job, called a step, to be finished before the next job is started. The following example uses the same LoadLeveler script as previously shown, however the #@ step_name and #@ dependency directives are used to rerun the same case three times in a row, waiting until each job is finished to start the next.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ step_name = step1                                                                                                                                                                                                                        &lt;br /&gt;
# @ queue&lt;br /&gt;
# Launch the first step :&lt;br /&gt;
if [ $LOADL_STEP_NAME = &amp;quot;step1&amp;quot; ]; then&lt;br /&gt;
    runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ step_name = step2                                                                                                                                                                                                                        &lt;br /&gt;
# @ dependency = step1 == 0                                                                                                                                                                                                                        &lt;br /&gt;
# @ queue&lt;br /&gt;
# Launch the second step if the first one has returned 0 (done successfully) :&lt;br /&gt;
if [ $LOADL_STEP_NAME = &amp;quot;step2&amp;quot; ]; then&lt;br /&gt;
    runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ step_name = step3                                                                                                                                                                                                                        &lt;br /&gt;
# @ dependency = step2 == 0                                                                                                                                                                                                                        &lt;br /&gt;
# @ queue&lt;br /&gt;
# Launch the third step if the second one has returned 0 (done successfully) :&lt;br /&gt;
if [ $LOADL_STEP_NAME = &amp;quot;step3&amp;quot; ]; then&lt;br /&gt;
    runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring Jobs ===&lt;br /&gt;
&lt;br /&gt;
To see running jobs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llq2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llq -b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to cancel a job use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llcancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and to look at details of the bluegene resources use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llbgstatus -M all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note: the loadleveler script commands  are not run on a bgq compute node but on the front-end node. Only programs started with runjob run on the bgq compute nodes. You should therefore keep scripting in the submission script to a bare minimum.'''&lt;br /&gt;
&lt;br /&gt;
=== Interactive Use / Debugging ===&lt;br /&gt;
&lt;br /&gt;
As BGQ codes are cross-compiled they cannot be run direclty on the front-nodes.  &lt;br /&gt;
Users however only have access to the BGQ through loadleveler which is appropriate for batch jobs, &lt;br /&gt;
however an interactive session is typically beneficial when debugging and developing.   As such a &lt;br /&gt;
script has been written to allow a session in which runjob can be run interactively.  The script&lt;br /&gt;
uses loadleveler to setup a block and set all the correct environment variables and then launch a spawned shell on&lt;br /&gt;
the front-end node. The '''debugjob''' session currently allows a 30 minute session on 64 nodes and when run on &lt;br /&gt;
'''&amp;lt;tt&amp;gt;bgqdev&amp;lt;/tt&amp;gt;''' runs in a dedicated reservation as described previously in the [[BGQ#Queue_Limits | queue limits]] section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@bgqdev-fen1]$ debugjob&lt;br /&gt;
&lt;br /&gt;
[user@bgqdev-fen1]$ runjob --np 64 --ranks-per-node=16 --cwd=$PWD : $PWD/my_code -f myflags&lt;br /&gt;
&lt;br /&gt;
[user@bgqdev-fen1]$ exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For debugging, gdb and Allinea DDT are available. The latter is recommended as it automatically attaches to all the processes of a process (instead of attaching a gdbtool by hand (as explained in the BGQ Application Development guide, link below). Simply compile with &amp;lt;tt&amp;gt;-g&amp;lt;/tt&amp;gt;, load the &amp;lt;tt&amp;gt;ddt/4.1&amp;lt;/tt&amp;gt; module, type &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt; and follow the graphical user interface.  The DDT user guide can be found below.&lt;br /&gt;
&lt;br /&gt;
Note: when running a job under ddt, you'll need to add &amp;quot;&amp;lt;tt&amp;gt;--ranks-per-node=X&amp;lt;/tt&amp;gt;&amp;quot; to the &amp;quot;runjob arguments&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
Apart from debugging, this environment is also useful for building libraries and applications that need to run small tests as part of their 'configure' step.   Within the debugjob session, applications compiled with the bgxl compilers or the mpcc/mpCC/mpfort wrappers, will automatically run on the BGQ, skipping the need for the runjob command, provided if you set the following environment variables &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export BG_PGM_LAUNCHER=yes&lt;br /&gt;
$ export RUNJOB_NP=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The latter setting sets the number of mpi processes to run.  Most configure scripts expect only one mpi process, thus, &amp;lt;tt&amp;gt;RUNJOB_NP=1&amp;lt;/tt&amp;gt; is appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
debugjob session with an executable implicitly calls runjob  with 1 mpi task :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debugjob -i&lt;br /&gt;
**********************************************************&lt;br /&gt;
 Interactive BGQ runjob shell using bgq-fen1-ib0.10295.0 and           &lt;br /&gt;
 LL14040718574824 for 30 minutes with 64 NODES (1024 cores). &lt;br /&gt;
 IMPLICIT MODE: running an executable implicitly calls runjob&lt;br /&gt;
                with 1 mpi task&lt;br /&gt;
 Exit shell when finished.                                &lt;br /&gt;
**********************************************************&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sub-block jobs ===&lt;br /&gt;
&lt;br /&gt;
BGQ allows multiple applications to share the same block, which is referred to as sub-block jobs, however this needs to be done from within the same loadleveler submission script using multiple calls to runjob.  To run a sub-block job, you need to specify a &amp;quot;--corner&amp;quot; within the block to start each job and a 5D Torus AxBxCxDxE &amp;quot;--shape&amp;quot;.  The starting corner will depend on the specific block details provided by loadleveler and the shape and size of job trying to be used.  &lt;br /&gt;
&lt;br /&gt;
Figuring out what the corners and shapes should be is very tricky (especially since it depends on the block you get allocated).  For that reason, we've created a script called &amp;lt;tt&amp;gt;subblocks&amp;lt;/tt&amp;gt; that determines the corners and shape of the sub-blocks.  It only handles the (presumable common) case in which you want to subdivide the block into n equally sized sub-blocks, where n may be 1,2,4,8,16 and 32.&lt;br /&gt;
&lt;br /&gt;
Here is an example script calling &amp;lt;tt&amp;gt;subblocks&amp;lt;/tt&amp;gt; with a size of 4 that will return the appropriate $SHAPE argument and an array of 16 starting $CORNER. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# @ job_name           = bgsubblock&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job SUBBLOCK &amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
# Using subblocks script to set $SHAPE and array of ${CORNERS[n]}&lt;br /&gt;
# with size of subblocks in nodes (ie similiar to bg_size)&lt;br /&gt;
&lt;br /&gt;
# In this case 16 sub-blocks of 4 cnodes each (64 total ie bg_size)&lt;br /&gt;
source subblocks 4&lt;br /&gt;
&lt;br /&gt;
# 16 jobs of 4 each&lt;br /&gt;
for (( i=0; i &amp;lt;  16 ; i++)); do&lt;br /&gt;
   runjob --corner ${CORNER[$i]} --shape $SHAPE --np 64 --ranks-per-node=16 :  your_code_here &amp;gt; $i.out &amp;amp;&lt;br /&gt;
done&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Remember that subjobs are not the ideal way to run on the BlueGene/Qs. One needs to consider that these sub-blocks all have to share the same I/O nodes, so for I/O intensive jobs this will be an inefficient setup.  Also consider that if you need to run such small jobs that you have to run in sub-blocks, it may be more efficient to use other clusters such as the GPC.&lt;br /&gt;
&lt;br /&gt;
Let us know if you run into any issues with this technique, please contact bgq-support for help.&lt;br /&gt;
&lt;br /&gt;
== Filesystem ==&lt;br /&gt;
&lt;br /&gt;
The BGQ has its own dedicated 500TB file system based on GPFS (General Parallel File System). There are two main systems for user data: /home, a small, backed-up space where user home directories are located, and /scratch, a large system for input or output data for jobs; data on /scratch is not backed up. The path to your home directory is in the environment variable $HOME, and will look like /home/G/GROUP/USER, .  The path to your scratch directory is in the environment variable $SCRATCH, and will look like /scratch/G/GROUP/USER (following the conventions of the rest of the SciNet systems).  &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! {{Hl2}} | file system &lt;br /&gt;
! {{Hl2}} | purpose &lt;br /&gt;
! {{Hl2}} | user quota &lt;br /&gt;
! {{Hl2}} | backed up&lt;br /&gt;
! {{Hl2}} | purged&lt;br /&gt;
|- &lt;br /&gt;
| /home&lt;br /&gt;
| development&lt;br /&gt;
| 50 GB&lt;br /&gt;
| yes&lt;br /&gt;
| never&lt;br /&gt;
|-&lt;br /&gt;
| /scratch&lt;br /&gt;
| computation&lt;br /&gt;
| first of (20 TB ; 1 million files)&lt;br /&gt;
| no&lt;br /&gt;
| not currently&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transfering files===&lt;br /&gt;
The BGQ GPFS file system,  except for HPSS, is '''not''' shared with the other SciNet systems (gpc, tcs, p7, arc), nor is the other file system mounted on the BGQ.  &lt;br /&gt;
Use scp to copy files from one file system to the other, e.g., from bgqdev-fen1, you could do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ scp -c arcfour login.scinet.utoronto.ca:code.tgz .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or from a login node you could do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ scp -c arcfour code.tgz bgqdev.scinet.utoronto.ca:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The flag &amp;lt;tt&amp;gt;-c arcfour&amp;lt;/tt&amp;gt; is optional. It tells scp (or really, ssh), to use a non-default encryption. The one chosen here, arcfour, has been found to speed up the transfer by a factor of two (you may expect around 85MB/s).  This encryption method is only recommended for copying from the BGQ file system to the regular SciNet GPFS file system or back. &lt;br /&gt;
 &lt;br /&gt;
Note that although these transfers are witihin the same data center, you have to use the full names of the systems, login.scinet.utoronto.ca and bgq.scinet.utoronto.ca, respectively, and that you will be asked you for your password.&lt;br /&gt;
&lt;br /&gt;
===How much Disk Space Do I have left?===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;'''diskUsage'''&amp;lt;/tt&amp;gt; command, available on the bgqdev nodes, provides information in a number of ways on the home and scratch file systems. For instance, how much disk space is being used by yourself and your group (with the -a option), or how much your usage has changed over a certain period (&amp;quot;delta information&amp;quot;) or you may generate plots of your usage over time. Please see the usage help below for more details.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: diskUsage [-h|-?| [-a] [-u &amp;lt;user&amp;gt;] [-de|-plot]&lt;br /&gt;
       -h|-?: help&lt;br /&gt;
       -a: list usages of all members on the group&lt;br /&gt;
       -u &amp;lt;user&amp;gt;: as another user on your group&lt;br /&gt;
       -de: include delta information&lt;br /&gt;
       -plot: create plots of disk usages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that the information on usage and quota is only updated hourly!&lt;br /&gt;
&lt;br /&gt;
===Bridge to HPSS===&lt;br /&gt;
&lt;br /&gt;
BGQ users may transfer material to/from HPSS via the GPC archive queue. On the HPSS gateway node (gpc-archive01), the BGQ GPFS file systems are mounted under a single mounting point /bgq (/bgq/scratch and /bgq/home). For detailed information on the use of HPSS [https://support.scinet.utoronto.ca/wiki/index.php/HPSS please read the HPSS wiki section.]&lt;br /&gt;
&lt;br /&gt;
== Software modules installed on the BGQ ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} |Software  &lt;br /&gt;
!{{Hl2}}| Version&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
!{{Hl2}}| Command/Library&lt;br /&gt;
!{{Hl2}}| Module Name&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Compilers &amp;amp; Development Tools'''''&lt;br /&gt;
|-&lt;br /&gt;
|IBM fortran compiler&lt;br /&gt;
|14.1&lt;br /&gt;
|These are cross compilers&lt;br /&gt;
|&amp;lt;tt&amp;gt;bgxlf,bgxlf_r,bgxlf90,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
|xlf&lt;br /&gt;
|-&lt;br /&gt;
|IBM c/c++ compilers&lt;br /&gt;
|12.1&lt;br /&gt;
|These are cross compilers&lt;br /&gt;
|&amp;lt;tt&amp;gt;bgxlc,bgxlC,bgxlc_r,bgxlC_r,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
|vacpp&lt;br /&gt;
|-&lt;br /&gt;
|MPICH2 MPI library&lt;br /&gt;
|1.4.1&lt;br /&gt;
|There are 4 versions (see BGQ Applications Development document).&lt;br /&gt;
|&amp;lt;tt&amp;gt;mpicc,mpicxx,mpif77,mpif90&amp;lt;/tt&amp;gt;&lt;br /&gt;
|mpich2&lt;br /&gt;
|- &lt;br /&gt;
| GCC Compiler&lt;br /&gt;
| 4.4.6, 4.8.1&lt;br /&gt;
| GNU Compiler Collection for BGQ&amp;lt;br&amp;gt;(4.8.1 requires binutils/2.23 to be loaded)&lt;br /&gt;
| &amp;lt;tt&amp;gt;powerpc64-bgq-linux-gcc, powerpc64-bgq-linux-g++, powerpc64-bgq-linux-gfortran&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;bgqgcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Binutils&lt;br /&gt;
| 2.21.1, 2.23&lt;br /&gt;
| Cross-compilation utilities&lt;br /&gt;
| &amp;lt;tt&amp;gt;addr2line, ar, ld, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;binutils&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CMake	&lt;br /&gt;
| 2.8.8&lt;br /&gt;
| cross-platform, open-source build system&lt;br /&gt;
| &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Git&lt;br /&gt;
| 1.9.5&lt;br /&gt;
| Revision control system&lt;br /&gt;
| &amp;lt;tt&amp;gt;git, gitk&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Debug/performance tools'''''&lt;br /&gt;
|-&lt;br /&gt;
| gdb&lt;br /&gt;
| 7.2&lt;br /&gt;
| GNU Debugger&lt;br /&gt;
| &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.allinea.com/products/ddt/ DDT]&lt;br /&gt;
| 4.1&lt;br /&gt;
| Allinea's Distributed Debugging Tool&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[HPCTW]]&lt;br /&gt;
| 1.0&lt;br /&gt;
| BGQ MPI and Hardware Counters&lt;br /&gt;
| &amp;lt;tt&amp;gt;libmpihpm.a, libmpihpm_smp.a, libmpitrace.a &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hptibm&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[MemP]]&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| BGQ Memory Stats&lt;br /&gt;
| &amp;lt;tt&amp;gt;libmemP.a &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;memP&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Storage tools/libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
| 1.8.9-v18&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;h5ls, h5diff, ..., libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf5/189-v18-serial-xlc*&amp;lt;br/&amp;gt;hdf5/189-v18-mpich2-xlc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
| 1.8.12-v18&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;h5ls, h5diff, ..., libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf5/1812-v18-serial-gcc&amp;lt;br/&amp;gt;hdf5/1812-v18-mpich2-gcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NetCDF&lt;br /&gt;
| 4.2.1.1&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncdump,ncgen,libnetcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;netcdf/4.2.1.1-serial-xlc*&amp;lt;br/&amp;gt;netcdf/4.2.1.1-mpich2-xlc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Parallel NetCDF&lt;br /&gt;
| 1.3.1&lt;br /&gt;
| Parallel scientific data storage and retrieval using MPI-IO&lt;br /&gt;
| &amp;lt;tt&amp;gt;libpnetcdf.a&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;parallel-netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| ESSL&lt;br /&gt;
| 5.1&lt;br /&gt;
| IBM Engineering and Scientific Subroutine Library (manual below)&lt;br /&gt;
| &amp;lt;tt&amp;gt;libesslbg,libesslsmpbg&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;essl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| FFTW&lt;br /&gt;
| 2.1.5, 3.3.2, 3.1.2-esslwrapper&lt;br /&gt;
| Fast fourier transform &lt;br /&gt;
| &amp;lt;tt&amp;gt;libsfftw,libdfftw,libfftw3, libfftw3f&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;fftw/2.1.5, fftw/3.3.2, fftw/3.1.2-esslwrapper&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| LAPACK + ScaLAPACK&lt;br /&gt;
| 3.4.2 + 2.0.2&lt;br /&gt;
| Linear algebra routines. A subset of Lapack may be found in ESSL as well.&lt;br /&gt;
| &amp;lt;tt&amp;gt;liblapack, libscalpack&amp;lt;/tt&amp;gt;&lt;br /&gt;
| lapack&lt;br /&gt;
|-&lt;br /&gt;
| GSL&lt;br /&gt;
| 1.15&lt;br /&gt;
| GNU Scientific Library&lt;br /&gt;
| &amp;lt;tt&amp;gt;libgsl, libgslcblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gsl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| BOOST&lt;br /&gt;
| 1.47.0, 1.54&lt;br /&gt;
| C++ Boost libraries&lt;br /&gt;
| &amp;lt;tt&amp;gt;libboost...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cxxlibraries/boost&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bzip2+szip+zlib&lt;br /&gt;
| 1.0.6,2.1,1.2.3&lt;br /&gt;
| compression libraries&lt;br /&gt;
| &amp;lt;tt&amp;gt;libbz2,libz,libsz&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;compression&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| METIS&lt;br /&gt;
| 5.0.2&lt;br /&gt;
| Serial Graph Partitioning and Fill-reducing Matrix Ordering&lt;br /&gt;
| &amp;lt;tt&amp;gt;libmetis&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;metis&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ParMETIS&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| Parallel graph partitioning and fill-reducing matrix ordering&lt;br /&gt;
| &amp;lt;tt&amp;gt;libparmetis&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;parmetis&amp;lt;/tt&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Scripting/interpreted languages'''''&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 2.6.6&lt;br /&gt;
| Python programming language&lt;br /&gt;
| &amp;lt;tt&amp;gt;/bgsys/tools/Python-2.6/bin/python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 2.7.3&lt;br /&gt;
| Python programming language. Modules included : numpy-1.8.0, pyFFTW-0.9.2, astropy-0.3, scipy-0.13.3, mpi4py-1.3.1, h5py-2.2.1&lt;br /&gt;
| &amp;lt;tt&amp;gt;/scinet/bgq/tools/Python/python2.7.3-20131205/bin/python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 3.2.2&lt;br /&gt;
| Python programming language&lt;br /&gt;
| &amp;lt;tt&amp;gt;/bgsys/tools/Python-3.2/bin/python3&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Applications'''''&lt;br /&gt;
|-&lt;br /&gt;
| gnuplot&lt;br /&gt;
| 4.6.1&lt;br /&gt;
| interactive plotting program to be run on front-end nodes&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| LAMMPS&lt;br /&gt;
| Nov 2012&lt;br /&gt;
| Molecular Dynamics &lt;br /&gt;
| &amp;lt;tt&amp;gt;lmp_bgq&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;lammps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NAMD&lt;br /&gt;
| 2.9&lt;br /&gt;
| Molecular Dynamics &lt;br /&gt;
| &amp;lt;tt&amp;gt;namd2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;namd/2.9-smp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.quantum-espresso.org/index.php Quantum Espresso]&lt;br /&gt;
| 5.0.3&lt;br /&gt;
| Molecular Structure / Quantum Chemistry &lt;br /&gt;
| &amp;lt;tt&amp;gt;qe_pw.x, etc&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;espresso&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[BGQ_OpenFOAM | OpenFOAM]]&lt;br /&gt;
| 2.2.0&lt;br /&gt;
| Computational Fluid Dynamics&lt;br /&gt;
| &amp;lt;tt&amp;gt;icofoam,etc. &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;openfoam&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Python on BlueGene ==&lt;br /&gt;
Python 2.7.3 has been installed on BlueGene. To use &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;Numpy&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;Scipy&amp;lt;/span&amp;gt;, the module &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;essl/5.1&amp;lt;/span&amp;gt; has to be loaded.&lt;br /&gt;
The full python path has to be provided (otherwise the default version is used).&lt;br /&gt;
&lt;br /&gt;
To use python on BlueGene :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load python/2.7.3&lt;br /&gt;
##Only if you need numpy/scipy :&lt;br /&gt;
module load xlf/14.1 essl/5.1&lt;br /&gt;
runjob --np 1 --ranks-per-node=1 --envs HOME=$HOME LD_LIBRARY_PATH=$LD_LIBRARY_PATH PYTHONPATH=/scinet/bgq/tools/Python/python2.7.3-20131205/lib/python2.7/site-packages/ : /scinet/bgq/tools/Python/python2.7.3-20131205/bin/python2.7 /PATHOFYOURSCRIPT.py &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Documentation ==&lt;br /&gt;
#BGQ Day: Intro to Using the BGQ&amp;lt;br/&amp;gt;[[File:BgqIntro-FirstFrame.png|180px|link=http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqintro/bgqintro.html]]&amp;lt;br/&amp;gt;[[Media:Bgqintro.pdf|Slides ]] &amp;amp;nbsp;/ &amp;amp;nbsp; [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqintro/bgqintro.html Video recording] [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqintro/bgqintro.mp4 (direct link)]&lt;br /&gt;
#BGQ Day: BGQ Hardware Overview&amp;lt;br/&amp;gt;[[File:Bgqhardware-FirstFrame.png|180px|link=http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqhardware/bgqhardware.html]]&amp;lt;br/&amp;gt;[https://support.scinet.utoronto.ca/~northrup/bgqhardware.pdf Slides] &amp;amp;nbsp;/ &amp;amp;nbsp; [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqhardware/bgqhardware.html Video recording] [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqhardware/bgqhardware.mp4 (direct link)]&lt;br /&gt;
# [http://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JUQUEEN/Documentation/Documention_node.html Julich BGQ Documentation]&lt;br /&gt;
# [https://wiki.alcf.anl.gov/parts/index.php/Blue_Gene/Q Argonne Mira BGQ Wiki]&lt;br /&gt;
# [https://computing.llnl.gov/tutorials/bgq/ LLNL Sequoia BGQ Info]&lt;br /&gt;
# [https://www.alcf.anl.gov/presentations Argonne MiraCon Presentations]&lt;br /&gt;
# [http://www.redbooks.ibm.com/redbooks/SG247869/wwhelp/wwhimpl/js/html/wwhelp.htm BGQ System Administration Guide]&lt;br /&gt;
# [http://www.redbooks.ibm.com/redbooks/SG247948/wwhelp/wwhimpl/js/html/wwhelp.htm BGQ Application Development ]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqcgetstart.pdf|Getting started]]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqccompiler.pdf|Compiler reference]]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqclangref.pdf|Language reference]]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqcproguide.pdf|Optimization and Programming Guide]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqfgetstart.pdf|Getting started]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqfcompiler.pdf|Compiler reference]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqflangref.pdf|Language reference]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqfproguide.pdf|Optimization and Programming Guide]]&lt;br /&gt;
# [[Media:essl51.pdf|IBM ESSL (Engineering and Scientific Subroutine Library) 5.1 for Linux on Power]]&lt;br /&gt;
# [http://content.allinea.com/downloads/userguide.pdf Allinea DDT 4.1 User Guide]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  PUT IN TRAC !!!&lt;br /&gt;
&lt;br /&gt;
=== *Manual Block Creation* ===&lt;br /&gt;
&lt;br /&gt;
To reconfigure the BGQ nodes you can use the bg_console or the web based navigator from the service node &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bg_console&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various options to create block types (section 3.2 in the BGQ admin manual), but the smallest is created using the&lt;br /&gt;
following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gen_small_block &amp;lt;blockid&amp;gt; &amp;lt;midplane&amp;gt; &amp;lt;cnodes&amp;gt; &amp;lt;nodeboard&amp;gt; &lt;br /&gt;
gen_small_block  R00-M0-N03-32 R00-M0 32 N03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The block then needs to be booted using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
allocate R00-M0-N03-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If those resources are already booted into another block, that block must be freed before the new block can be &lt;br /&gt;
allocated.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
free R00-M0-N03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many other functions in bg_console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
help all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BGQ default nomenclature for hardware is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(R)ack - (M)idplane - (N)ode board or block - (J)node - (C)ore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So R00-M01-N03-J00-C02 would correspond to the first rack, second midplane, 3rd block, 1st node, and second core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Software_and_Libraries&amp;diff=7575</id>
		<title>Software and Libraries</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Software_and_Libraries&amp;diff=7575"/>
		<updated>2015-02-05T20:45:42Z</updated>

		<summary type="html">&lt;p&gt;Nolta: add git 1.9.5&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Software Module System =&lt;br /&gt;
All the software listed on this page is accessed using a modules system.  This means that much of the software is not &lt;br /&gt;
accessible by default but has to be loaded using the module command. The&lt;br /&gt;
reason is that&lt;br /&gt;
* it allows us to easily keep multiple versions of software for different users on the system;&lt;br /&gt;
* it allows users to easily switch between versions.&lt;br /&gt;
The module system works similarly on the GPC and the TCS, although different modules are installed on these two systems.&lt;br /&gt;
&lt;br /&gt;
Note that, generally, if you compile a program with a module loaded, you will have to run it with that same module loaded, to make dynamically linked libraries accessible.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!{{Hl2}}|Function&lt;br /&gt;
!{{Hl2}}|Command&lt;br /&gt;
!{{Hl2}}|Comments&lt;br /&gt;
|-&lt;br /&gt;
|List available software packages:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module avail&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
*If a module is not listed here, it is not supported.&lt;br /&gt;
*The flag &amp;quot;(default)&amp;quot; is never part of the name.&lt;br /&gt;
|-&lt;br /&gt;
|Use particular software:&lt;br /&gt;
|&amp;lt;pre&amp;gt; $ module load [module-name] &amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
*If possible, specify only the short name (the part before the &amp;quot;/&amp;quot;). &lt;br /&gt;
*When ambiguous, this loads the default one. &lt;br /&gt;
|-&lt;br /&gt;
|List available versions of a specific software package:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module avail [short-module-name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|List currently loaded modules:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module list&amp;lt;/pre&amp;gt;&lt;br /&gt;
|For reproducability, it is a good idea to put this in your job scripts, so you know exactly what modules(+version) were used.&lt;br /&gt;
|-&lt;br /&gt;
|Get description of a particular module:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module help [module-name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Remove a module from your shell:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module unload [module-name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Remove all modules:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module purge&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Replace one loaded module with another:&lt;br /&gt;
|&amp;lt;pre&amp;gt;$ module switch [old-module-name] [new-module-name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Modules that load libraries, define environment variables pointing to the location of library files and include files for use Makefiles. These environment variables follow the naming convention&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SCINET_[short-module-name]_BASE&lt;br /&gt;
SCINET_[short-module-name]_LIB&lt;br /&gt;
SCINET_[short-module-name]_INC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
for the base location of the module's files, the location of the libraries binaries and the header files, respectively.&lt;br /&gt;
&lt;br /&gt;
So to compile and link the library, you will have to add &amp;lt;tt&amp;gt;-I${SCINET_[short-module-name]_INC}&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-L${SCINET_[short-module-name]_LIB}&amp;lt;/tt&amp;gt;, respectively, in addition to the usual &amp;lt;tt&amp;gt;-l[libname]&amp;lt;/tt&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Errors in loaded modules can arise for a few reasons, for instance:&lt;br /&gt;
* A module by that name may not exist.&lt;br /&gt;
* Some modules require other modules to have been loaded; it this requirement is not met when you try to load that module, an error message will be printed explaining what module is needed.&lt;br /&gt;
* Some modules cannot be loaded together: an error message will be printed explaining which modules conflict.&lt;br /&gt;
&lt;br /&gt;
It is no longer recommended to load modules in the file [[Important_.bashrc_guidelines|.bashrc]] in your home directory, rather, load them explicitly on the command-line and in your job scripts.&lt;br /&gt;
&lt;br /&gt;
== Default and non-default modules ==&lt;br /&gt;
&lt;br /&gt;
When you load a module with its 'short' name, you will get the ''default'' version, which is the most recent (usually), recommended version of that library or piece of software.  In general, using the short module name is the way to go. However, you may have code that depends on the intricacies of a non-default version.  For that reason, the most common older versions are also available as modules.  You can find all available modules using the &amp;lt;tt&amp;gt;module avail&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
== Naming convention ==&lt;br /&gt;
&lt;br /&gt;
For modules that access applications, the full name of a module is as follows.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  [short-module-name]/[version-number]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To have all modules conform to this convention, a number of modules' name change on Nov 3, 2010:&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| '''old name'''&lt;br /&gt;
| '''new name'''&lt;br /&gt;
| '''remarks'''&lt;br /&gt;
|-&lt;br /&gt;
|autoconf/autoconf-2.64 &amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&lt;br /&gt;
|autoconf/2.64&lt;br /&gt;
|''short name unchanged''&lt;br /&gt;
|-&lt;br /&gt;
|cuda/cuda-3.0           &lt;br /&gt;
|cuda/3.0&lt;br /&gt;
|''default's short name unchanged''&lt;br /&gt;
|-&lt;br /&gt;
|cuda/cuda-3.1          &lt;br /&gt;
|cuda/3.1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|debuggers/ddd-3.3.12   &lt;br /&gt;
|ddd/3.3.12&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|debuggers/gdb-7.1       &lt;br /&gt;
|gdb/7.1&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|editors/nano/2.2.4      &lt;br /&gt;
|nano/2.2.4&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|emacs/emacs-23.1        &lt;br /&gt;
|emacs/23.1.1&lt;br /&gt;
|''short name unchanged''&lt;br /&gt;
|-&lt;br /&gt;
|gcc/gcc-4.4.0           &lt;br /&gt;
|gcc/4.4.0&lt;br /&gt;
|''short name unchanged''&lt;br /&gt;
|-&lt;br /&gt;
|graphics/ncview         &lt;br /&gt;
|ncview/1.93&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|graphics/graphics       &lt;br /&gt;
|grace/5.1.22&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|                        &lt;br /&gt;
|gnuplot/4.2.6&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|svn/svn165              &lt;br /&gt;
|svn/1.6.5&lt;br /&gt;
|''short name unchanged''&lt;br /&gt;
|-&lt;br /&gt;
|visualization/paraview  &lt;br /&gt;
|paraview/3.8&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|amber10/amber10         &lt;br /&gt;
|amber/10.0.30 &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|gamess/gamess           &lt;br /&gt;
|gamess/May2209 &amp;amp;nbsp;&lt;br /&gt;
|''default's short name unchanged''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==modulefind - Finding modules by name==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;module avail&amp;lt;/tt&amp;gt; command will only show you modules whose names start with the argument that you give it, and will alsi return modules that you cannot load due to conflicts with already loaded modules.&lt;br /&gt;
&lt;br /&gt;
A little SciNet utility called &amp;lt;tt&amp;gt;modulefind&amp;lt;/tt&amp;gt; (one word) can do that. It will list all installed modules which contain the arguments, and will determine  whether those modules have &lt;br /&gt;
been loaded, could be loaded, cannot because of conflicts with&lt;br /&gt;
already loaded modules, or have unresolved dependencies &lt;br /&gt;
(i.e. for which other modules need to be loaded first).  This is especially useful in cases like the &amp;quot;boost&amp;quot; libraries, whose module names are cxxlibraries/boost/1.47.0-gcc and cxxlibraries/boost/1.47.0-gcc, for the gcc and intel compiler, respectively.  &amp;lt;tt&amp;gt;modulefind boost&amp;lt;/tt&amp;gt; will find those, whereas &amp;lt;tt&amp;gt;module avail boost&amp;lt;/tt&amp;gt; will not.&lt;br /&gt;
&lt;br /&gt;
Note that just 'modulefind' will list all top-level modules.&lt;br /&gt;
&lt;br /&gt;
== Making your own modules ==&lt;br /&gt;
&lt;br /&gt;
How to make your own modules (e.g. for local installations or to access optional perl modules, ...), is possible and described on the [[Installing your own modules]] page.&lt;br /&gt;
&lt;br /&gt;
== Deprecated modules ==&lt;br /&gt;
&lt;br /&gt;
Some older software modules for which newer versions exist, get deprecated, which means they do not get maintained.  Since deprecated modules should only be needed in rare exceptional cases, they are not listed by the &amp;lt;tt&amp;gt;module avail&amp;lt;/tt&amp;gt; command.  However, if you have a piece of legacy code that really depends on a deprecated version of a library (and we urge you to check that it does not work with newer versions!), then you can load a deprecated version by &amp;lt;pre&amp;gt;module load use.deprecated [deprecated-module-name]&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Currently (Oct 5,2010), the following modules are deprecated on the GPC: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gcc/gcc-4.3.2          hdf5/184-v16-serial     intel/intel-v11.1.046               openmpi/1.3.3-intel-v11.0-ofed&lt;br /&gt;
hdf5/183-v16-openmpi   hdf5/184-v18-intelmpi   intelmpi/impi-3.2.1.009             openmpi/1.3.2-intel-v11.0-ofed.orig&lt;br /&gt;
hdf5/183-v18-openmpi   hdf5/184-v18-openmpi    intelmpi/impi-3.2.2.006             pgplot/5.2.2-gcc.old            &lt;br /&gt;
hdf5/184-v16-intelmpi  hdf5/184-v18-serial     intelmpi/impi-4.0.0.013             pgplot/5.2.2-intel.old&lt;br /&gt;
hdf5/184-v16-openmpi   intel/intel-v11.0.081   intelmpi/impi-4.0.0.025               &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the TCS, currently (Oct 5,2010) the only deprecated module is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ncl/5.1.1old&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Before using any of these deprecated modules, make sure that there is not a regular module that satisfies your needs, likely by a ''very similar name''.&lt;br /&gt;
&lt;br /&gt;
== Commercial software ==&lt;br /&gt;
&lt;br /&gt;
Apart from the compilers on our systems and the ddt parallel debugger, we generally do not provide licensed application software, e.g., no Gaussian, IDL, Matlab, etc. &lt;br /&gt;
See the [https://support.scinet.utoronto.ca/wiki/index.php/FAQ#How_can_I_run_Matlab_.2F_IDL_.2F_Gaussian_.2F_my_favourite_commercial_software_at_SciNet.3F FAQ].&lt;br /&gt;
&lt;br /&gt;
== Other software and libraries ==&lt;br /&gt;
&lt;br /&gt;
If you want to use a piece of software or a library that is not on the list, you can in principle install it yourself in you &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
Note however that building libraries and software from source often uses a lot of files. To avoid running out of disk space, building software is therefore best done from the &amp;lt;tt&amp;gt;/scratch&amp;lt;/tt&amp;gt;, from which&lt;br /&gt;
you can copy/install only the libraries, header files and binaries to your &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
If you suspect that a particular piece of software or a library would be of use to other users of SciNet as well, contact us, and we will consider adding it to the system.&lt;br /&gt;
&lt;br /&gt;
== Software lists ==&lt;br /&gt;
=== ARC/GPU Software ===&lt;br /&gt;
&lt;br /&gt;
The CPUs in the GPU nodes of the ARC cluster are of the same kind as those of the GPC, so all modules available on the GPC are available on the GPU nodes with a CentOS 6 image. This means that the different cuda variants that are available as modules, can be loaded on those GPC nodes as well, although they are of little use on that system.&lt;br /&gt;
&lt;br /&gt;
=== GPC Software ===&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}}| Software  &lt;br /&gt;
!{{Hl2}}| Versions&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
!{{Hl2}}| Command/Library&lt;br /&gt;
!{{Hl2}}| Module Name&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Compilers'''''&lt;br /&gt;
|-  &lt;br /&gt;
|Intel Compiler&lt;br /&gt;
|12.1.3*, 12.1.5, 13.1.1, 14.0.1, 15.0, 15.0.1&lt;br /&gt;
| includes MKL library, which includes BLAS, LAPACK, FFT, ...&lt;br /&gt;
| &amp;lt;tt&amp;gt;icpc,icc,ifort&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;intel&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| GCC Compiler&lt;br /&gt;
| 4.4.6, 4.6.1*, 4.7.0, 4.7.2, 4.8.1, 4.9.0&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;tt&amp;gt;gcc,g++,gfortran&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Cuda&lt;br /&gt;
| 3.2, 4.0, 4.1*, 4.2, 5.0, 5.5, 6.0&lt;br /&gt;
| NVIDIA's extension to C for GPGPU programming&lt;br /&gt;
| &amp;lt;tt&amp;gt;nvcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cuda&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| PGI Compiler&lt;br /&gt;
| 12.5, 12.6*, 13.2&lt;br /&gt;
| supports OpenACC and CUDA Fortran &lt;br /&gt;
| &amp;lt;tt&amp;gt;pgcc,pgcpp,pgfortran&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;pgi&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| IntelMPI&lt;br /&gt;
| 4.0.2, 4.0.3*, 4.1.2, 5.0.1, 5.0.2&lt;br /&gt;
| MPICH2 based MPI&lt;br /&gt;
| &amp;lt;tt&amp;gt;mpicc,mpiCC,mpif77,mpif90&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;intelmpi&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| OpenMPI&lt;br /&gt;
| 1.4.4*, 1.5.4, 1.6.4, 1.8.3&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;tt&amp;gt;mpicc,mpiCC,mpif77,mpif90&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;openmpi&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| UPC&lt;br /&gt;
| 2.12.2&lt;br /&gt;
| Berkley Unified Parallel C Implementation&lt;br /&gt;
| &amp;lt;tt&amp;gt;upcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;upc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Editors'''''&lt;br /&gt;
|- &lt;br /&gt;
| Nano&lt;br /&gt;
| 2.2.4&lt;br /&gt;
| Nano's another editor&lt;br /&gt;
| &amp;lt;tt&amp;gt;nano&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;nano&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| Emacs&lt;br /&gt;
| 23.1.1, 24.4*&lt;br /&gt;
| New version of popular text editor&lt;br /&gt;
| &amp;lt;tt&amp;gt;emacs&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;emacs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| XEmacs&lt;br /&gt;
| 21.4.22&lt;br /&gt;
| XEmacs editor&lt;br /&gt;
| &amp;lt;tt&amp;gt;xemacs&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;xemacs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Development tools'''''&lt;br /&gt;
|-&lt;br /&gt;
| Autoconf&lt;br /&gt;
| 2.68&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;tt&amp;gt;autoconf, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;autoconf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| Automake&lt;br /&gt;
| 1.11.2&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;tt&amp;gt;aclocal, automake&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;automake&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| CMake&lt;br /&gt;
| 2.8.6, 2.8.8*, 3.1.0&lt;br /&gt;
| cross-platform, open-source build system&lt;br /&gt;
| &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Scons&lt;br /&gt;
| 2.0&lt;br /&gt;
| Software construction tool&lt;br /&gt;
| &amp;lt;tt&amp;gt;scons&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;scons&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| Git&lt;br /&gt;
| 1.7.1, 1.7.10*, 1.9.5&lt;br /&gt;
| Revision control system&lt;br /&gt;
| &amp;lt;tt&amp;gt;git,gitk&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;git&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Intel tools&lt;br /&gt;
| 2013, 2015&lt;br /&gt;
| Intel Code Analysis Tools&lt;br /&gt;
| Vtune Amplifier XE, Inspector XE&lt;br /&gt;
| &amp;lt;tt&amp;gt;inteltools&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Mercurial&lt;br /&gt;
| 1.8.2&lt;br /&gt;
| Version control system&amp;lt;br&amp;gt;(part of the python module!)&lt;br /&gt;
| &amp;lt;tt&amp;gt;hg&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Debug and performance tools'''''&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.allinea.com/products/ddt/ DDT]&lt;br /&gt;
| 4.0, 4.1, 4.2.1*&lt;br /&gt;
| Allinea's Distributed Debugging Tool, + MAP MPI Profiler&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt, map&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| DDD&lt;br /&gt;
| 3.3.12&lt;br /&gt;
| Data Display Debugger&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddd&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddd&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| GDB&lt;br /&gt;
| 7.3.1*, 7.6&lt;br /&gt;
| GNU debugger (the intel idbc debugger is available by default)&lt;br /&gt;
| &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| MPE2&lt;br /&gt;
| 2.4.5&lt;br /&gt;
| Multi-Processing Environment with intel + OpenMPI&lt;br /&gt;
| &amp;lt;tt&amp;gt;mpecc, mpefc, jumpshot&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;mpe&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Introduction_To_Performance#OpenSpeedShop_.28profiling.2C_MPI_tracing:_GPC.29 | OpenSpeedShop]]&lt;br /&gt;
| 2.1&lt;br /&gt;
| sampling and MPI tracing&lt;br /&gt;
| &amp;lt;tt&amp;gt;openss, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;openspeedshop&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Introduction_To_Performance#Scalasca_.28profiling.2C_tracing:_TCS.2C_GPC.29 | Scalasca]]&lt;br /&gt;
| 1.3.3, 1.4.3*&lt;br /&gt;
| SCalable performance Analysis of LArge SCale Applications (Compiled with OpenMPI)&lt;br /&gt;
| &amp;lt;tt&amp;gt;scalasca&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;scalasca&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://ipm-hpc.sourceforge.net IPM]&lt;br /&gt;
| 0.983&lt;br /&gt;
| Integrated Performance Monitors http://ipm-hpc.sourceforge.net/]&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipm, ipm_parse, ploticus,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ipm&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[Performance_And_Debugging_Tools:_GPC#Valgrind | Valgrind]]&lt;br /&gt;
| 3.7,0*, 3.9.0&lt;br /&gt;
| Memory checking utility&lt;br /&gt;
| &amp;lt;tt&amp;gt;valgrind,cachegrind&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;valgrind&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Padb&lt;br /&gt;
| 3.2 &lt;br /&gt;
| examine and debug parallel programs&lt;br /&gt;
| &amp;lt;tt&amp;gt;padb&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;padb&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|&amp;lt;span id=&amp;quot;anchor_viz&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;'''''Visualization tools'''''&lt;br /&gt;
|- &lt;br /&gt;
| Grace&lt;br /&gt;
| 5.1.22&lt;br /&gt;
| Plotting utility&lt;br /&gt;
| &amp;lt;tt&amp;gt;xmgrace&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;grace&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| Gnuplot&lt;br /&gt;
| 4.2.6, 4.6.1*&lt;br /&gt;
| Plotting utility&amp;lt;br&amp;gt;Requires 'extras' module if used on compute nodes.&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[ Using_Paraview | ParaView ]]&lt;br /&gt;
| 3.12.0*, 3.14.1, 4.1.0&lt;br /&gt;
| Scientific visualization, server only&lt;br /&gt;
| &amp;lt;tt&amp;gt;pvserver,pvbatch,pvpython&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;paraview&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| VMD&lt;br /&gt;
| 1.8.6, 1.9*&lt;br /&gt;
| Visualization and analysis utility&lt;br /&gt;
| &amp;lt;tt&amp;gt;vmd&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;vmd&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| NCL/NCARG&lt;br /&gt;
| 6.0.0&lt;br /&gt;
| NCARG graphics and ncl utilities&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncl&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| ROOT&lt;br /&gt;
| 5.30.00, 5.30.03*, 5.34.03, 6.02.02&lt;br /&gt;
| ROOT Analysis Framework from CERN&lt;br /&gt;
| &amp;lt;tt&amp;gt;root&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ROOT&amp;lt;/tt&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
| ImageMagick&lt;br /&gt;
| 6.6.7&lt;br /&gt;
| Image manipulation tools&lt;br /&gt;
| &amp;lt;tt&amp;gt;convert,animate,composite,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ImageMagick&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PGPLOT&lt;br /&gt;
| 5.2.2&lt;br /&gt;
| Graphics subroutine library&lt;br /&gt;
| &amp;lt;tt&amp;gt;libcpgplot,libpgplot,libtkpgplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;pgplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Storage tools and libraries'''''&lt;br /&gt;
|- &lt;br /&gt;
| NetCDF&lt;br /&gt;
| 4.1.3*, 4.2.1, 4.3.2&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncdump,ncgen,libnetcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| Ncview&lt;br /&gt;
| 2.1.1, 2.1.&lt;br /&gt;
| Visualization for NetCDF files&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncview&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncview&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| NCO&lt;br /&gt;
| 4.0.8, 4.3.2&lt;br /&gt;
| NCO utilities to manipulate netCDF files&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncap, ncap2, ncatted, etc.&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;nco&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| CDO&lt;br /&gt;
| 1.5.1, 1.5.4*, 1.6.1&lt;br /&gt;
| Climate Data Operators&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdo&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cdo&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| UDUNITS&lt;br /&gt;
| 2.1.11&lt;br /&gt;
| unit conversion utilities&lt;br /&gt;
| &amp;lt;tt&amp;gt;libudunits2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;udunits&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| HDF4&lt;br /&gt;
| 4.2.6&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;h4fc,hdiff,...,libdf,libsz&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf4&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[Hdf5 | HDF5]]&lt;br /&gt;
| 1.8.7-v18*&lt;br /&gt;
| Scientific data storage and retrieval, parallel I/O&lt;br /&gt;
| &amp;lt;tt&amp;gt;h5ls, h5diff, ..., libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.arg0.net/encfs EncFS ]&lt;br /&gt;
| 1.74&lt;br /&gt;
| EncFS provides an encrypted filesystem in user-space, (works ONLY on gpc01..04)&lt;br /&gt;
| &amp;lt;tt&amp;gt;encfs&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;encfs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Applications'''''&lt;br /&gt;
|- &lt;br /&gt;
| [[amber|AMBER 10]]&lt;br /&gt;
| Amber 10 + Amber Tools 1.3&lt;br /&gt;
| Amber Molecular Dynamics Package&lt;br /&gt;
| &amp;lt;tt&amp;gt;sander, sander.MPI&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;amber&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| antlr&lt;br /&gt;
| 2.7.7&lt;br /&gt;
| ANother Tool for Language Recognition&lt;br /&gt;
| &amp;lt;tt&amp;gt;antlr, antlr-config&amp;lt;br&amp;gt;libantlr, antlr.jar, antlr.py&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;antlr&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[gamess|GAMESS (US)]]&lt;br /&gt;
| August 18, 2011 R1&lt;br /&gt;
| General Atomic and Molecular Electronic Structure System&lt;br /&gt;
| &amp;lt;tt&amp;gt;rungms&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gamess&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[gromacs|GROMACS]]&lt;br /&gt;
| 4.5.5, 4.5.7, 4.6.2, 4.6.3&lt;br /&gt;
| GROMACS molecular dynamics, single precision, MPI&lt;br /&gt;
| &amp;lt;tt&amp;gt;grompp, mdrun&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gromacs&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[namd|NAMD]]&lt;br /&gt;
| 2.8, 2.9*&lt;br /&gt;
| NAMD - Scalable Molecular Dynamics&lt;br /&gt;
| &amp;lt;tt&amp;gt;namdmpiexec, namd2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;namd&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[nwchem|NWChem]]&lt;br /&gt;
| 6.0&lt;br /&gt;
| NWChem Quantum Chemistry&lt;br /&gt;
| &amp;lt;tt&amp;gt;nwchem&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;nwchem&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.quantum-espresso.org/index.php Quantum Espresso]&lt;br /&gt;
| 4.3.2, 5.0.3&lt;br /&gt;
| Quantum Chemistry &lt;br /&gt;
| &amp;lt;tt&amp;gt;pw.x, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;espresso&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://blast.ncbi.nlm.nih.gov BLAST]&lt;br /&gt;
| 2.2.23+&lt;br /&gt;
| Basic Local Alignment Search Tool&lt;br /&gt;
| &amp;lt;tt&amp;gt;blastn,blastp,blastx,psiblast,tblastn...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;blast&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| [http://denovoassembler.sourceforge.net RAY]&lt;br /&gt;
| 2.1.0 (small k-mer), 2.2.0, 2.3.1&lt;br /&gt;
| Parallel de novo genome assemblies&lt;br /&gt;
| &amp;lt;tt&amp;gt;Ray&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ray&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[cpmd|CPMD]]&lt;br /&gt;
| 3.13.2&lt;br /&gt;
| Carr-Parinello molecular dynamics, MPI&lt;br /&gt;
| &amp;lt;tt&amp;gt;cpmd.x&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cpmd&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[R Statistical Package|R]] &lt;br /&gt;
| 2.13.1, 2.14.1, 2.15.1*, 3.0.0, 3.0.1, 3.1.1&lt;br /&gt;
| statistical computing&lt;br /&gt;
| &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;R&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Octave&lt;br /&gt;
| 3.4.3*, 3.8.1&lt;br /&gt;
| Matlab-like environment&lt;br /&gt;
| &amp;lt;tt&amp;gt;octave&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;octave&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.openfoam.org OpenFOAM ]&lt;br /&gt;
| 2.1.0, 2.3.0&lt;br /&gt;
| Open Source CFD Package&lt;br /&gt;
| &amp;lt;tt&amp;gt;*foam&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;openfoam&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Bedtools&lt;br /&gt;
| 2.21.0&lt;br /&gt;
| Toolset for genome arithmetic&lt;br /&gt;
| &amp;lt;tt&amp;gt;bedtools ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;bedtools&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Samtools&lt;br /&gt;
| 0.1.19&lt;br /&gt;
| Suite of programs for interacting with high-throughput sequencing data&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;tt&amp;gt;samtools&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Libraries'''''&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.mcs.anl.gov/petsc/petsc-as/  PETSc ]&lt;br /&gt;
| 3.1*, 3.2, 3.3, 3.4.4&lt;br /&gt;
| Portable, Extensible Toolkit for Scientific Computation (PETSc)&lt;br /&gt;
| &amp;lt;tt&amp;gt;libpetsc, etc.. &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;petsc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| BOOST&lt;br /&gt;
| 1.47.0, 1.54, 1.55&lt;br /&gt;
| C++ Boost libraries&lt;br /&gt;
| &amp;lt;tt&amp;gt;libboost...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cxxlibraries/boost&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[Armadillo C++ linear algebra library | Armadillo]]&lt;br /&gt;
| 3.910.0&lt;br /&gt;
| C++ armadillo libraries (implement Matlab-like syntax)&lt;br /&gt;
| &amp;lt;tt&amp;gt;armadillo&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;armadillo&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.tacc.utexas.edu/tacc-projects/gotoblas2/ GotoBLAS]&lt;br /&gt;
| 1.13&lt;br /&gt;
| Optimized BLAS implementation &lt;br /&gt;
| &amp;lt;tt&amp;gt;libgoto2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gotoblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| OpenBLAS&lt;br /&gt;
| 1.13&lt;br /&gt;
| Open BLAS implementation including lapack.&lt;br /&gt;
| &amp;lt;tt&amp;gt;libopenblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;openblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| GSL&lt;br /&gt;
| 1.13*, 1.15&lt;br /&gt;
| GNU Scientific Library&lt;br /&gt;
| &amp;lt;tt&amp;gt;libgsl, libgslcblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gsl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| FFTW&lt;br /&gt;
| 2.1.5, 3.3.0, 3.3.3*&lt;br /&gt;
| fast Fourier transform library&lt;br /&gt;
''Be careful in combining fftw3 and MKL: you need to link fftw3 first, with'' &amp;lt;tt&amp;gt;-L${SCINET_FFTW_LIB} -lfftw3&amp;lt;/tt&amp;gt;, then link MKL&lt;br /&gt;
| &amp;lt;tt&amp;gt;libfftw3&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;fftw&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| LAPACK&lt;br /&gt;
| &lt;br /&gt;
| Provided by the Intel MKL library&lt;br /&gt;
| See http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/&lt;br /&gt;
| &amp;lt;tt&amp;gt;intel&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [http://freshmeat.net/projects/rlog  RLog ]&lt;br /&gt;
| 1.4&lt;br /&gt;
| RLog provides a flexible message logging facility for C++ programs and libraries.&lt;br /&gt;
| &amp;lt;tt&amp;gt;librlog&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cxxlibraries/rlog&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Scripting/interpreted languages'''''&lt;br /&gt;
|-&lt;br /&gt;
| [[GNU Parallel]]&lt;br /&gt;
| 2012-10-22, 20140622*&lt;br /&gt;
| execute commands in parallel&lt;br /&gt;
| &amp;lt;tt&amp;gt;parallel&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnu-parallel&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 2.7.2*, 2.7.3, , 2.7.5, 2.7.8&lt;br /&gt;
| Python programming language. See [[Python]] page for details on installed packages.&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 3.3.4&lt;br /&gt;
| Python programming language. Modules included : numpy 1.8.1 , scipy 0.14.0 , matlotlib 1.3.1 , ipython 1.2.1 , cython 0.20.1 , h5py-2.3.0 , tables-3.1.1 , netCDF4-1.1.0 , astropy-0.3.2 , scikit_learn-0.15.0b1&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| Ruby&lt;br /&gt;
| 1.9.1*, 1.9.3&lt;br /&gt;
| Ruby programming language&lt;br /&gt;
| &amp;lt;tt&amp;gt;ruby&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ruby&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Java&lt;br /&gt;
| 1.6.0, 1.7.1*&lt;br /&gt;
| IBM's Java JRE ad SDK&lt;br /&gt;
| &amp;lt;tt&amp;gt;java&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;javac&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;java&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Other'''''&lt;br /&gt;
|-&lt;br /&gt;
| Xlibraries&lt;br /&gt;
|&lt;br /&gt;
| A collection of X graphics libraries and tools&lt;br /&gt;
| &amp;lt;tt&amp;gt;xterm&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xpdf&amp;lt;/tt&amp;gt;, ...&lt;br /&gt;
| &amp;lt;tt&amp;gt;Xlibraries&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Extras&lt;br /&gt;
|&lt;br /&gt;
| A collection of standard linux and home-grown tools&lt;br /&gt;
| &amp;lt;tt&amp;gt;bc&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;screen&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;xxdiff&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;modulefind&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;ish&amp;lt;/tt&amp;gt;, ...&lt;br /&gt;
| &amp;lt;tt&amp;gt;extras&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''* Several versions of this module are installed; listed is the default version.''&lt;br /&gt;
&lt;br /&gt;
=== TCS Software ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} |Software  &lt;br /&gt;
!{{Hl2}}| Version&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
!{{Hl2}}| Command/Library&lt;br /&gt;
!{{Hl2}}| Module Name&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Compilers'''''&lt;br /&gt;
|-&lt;br /&gt;
|IBM compilers&lt;br /&gt;
|10.1(c/c++)&amp;lt;br&amp;gt;12.1(fortran)&lt;br /&gt;
| See [[TCS Quickstart]]&lt;br /&gt;
| &amp;lt;tt&amp;gt;xlc,xlC,xlf,xlc_r,xlC_r,xlf_r&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ''standard available''&lt;br /&gt;
|-&lt;br /&gt;
|IBM MPI library&lt;br /&gt;
|&lt;br /&gt;
| See [[TCS Quickstart]]&lt;br /&gt;
| &amp;lt;tt&amp;gt;mpcc,mpCC,mpxlf,mpcc_r,mpCC_r,mpxlf_r&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ''standard available''&lt;br /&gt;
|-&lt;br /&gt;
| UPC&lt;br /&gt;
| 1.2&lt;br /&gt;
| Unified Parallel C&lt;br /&gt;
| &amp;lt;tt&amp;gt;xlupc&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;upc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|IBM fortran compiler&lt;br /&gt;
|13.1, 14.1&lt;br /&gt;
| newer version &lt;br /&gt;
| &amp;lt;tt&amp;gt;xlf,xlf_r&amp;lt;/tt&amp;gt;&lt;br /&gt;
| xlf/13.1&lt;br /&gt;
|-&lt;br /&gt;
|IBM c/c++ compilers&lt;br /&gt;
|11.1, 12.1&lt;br /&gt;
| new versions&lt;br /&gt;
| &amp;lt;tt&amp;gt;xlc,xlC,xlc_r,xlC_r&amp;lt;/tt&amp;gt;&lt;br /&gt;
| vacpp&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Debug/performancs tools'''''&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.allinea.com/products/ddt/ DDT]&lt;br /&gt;
| 4.0, 4.1, 4.2.1*&lt;br /&gt;
| Allinea's Distributed Debugging Tool&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| MPE2&lt;br /&gt;
| 1.0.6&lt;br /&gt;
| Performance Visualization for Parallel Programs   &lt;br /&gt;
| &amp;lt;tt&amp;gt;libmpe&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;mpe&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Scalasca&lt;br /&gt;
| 1.2&lt;br /&gt;
| SCalable performance Analysis of LArge SCale Applications&lt;br /&gt;
| &amp;lt;tt&amp;gt;scalasca, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;scalasca&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Storage tools and libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| HDF4&lt;br /&gt;
| 4.2.5&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;h4fc, hdiff, ..., libdf, libsz&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf4&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
|&lt;br /&gt;
| Scientific data storage and retrieval, parallel I/O&amp;lt;br&amp;gt;Part of the extras module on the tcs:&amp;lt;br&amp;gt;compile with &amp;lt;tt&amp;gt;-I${SCINET_EXTRAS_INC}&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt; link with &amp;lt;tt&amp;gt;-L${SCINET_EXTRAS_LIB}&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;extras&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NetCDF + ncview&lt;br /&gt;
| 4.0.1*&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncdump, ncgen, libnetcdf, ncview&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| parallel netCDF&lt;br /&gt;
| 1.1.1*&lt;br /&gt;
| Scientific data storage and retrieval using MPI-IO&lt;br /&gt;
| &amp;lt;tt&amp;gt;libpnetcdf.a&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;parallel-netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NCO&lt;br /&gt;
| 3.9.6*&lt;br /&gt;
| NCO utilities to manipulate netCDF files&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncap, ncap2, ncatted, &amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
| &amp;lt;tt&amp;gt;nco&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| FFTW&lt;br /&gt;
| 3.2.2&lt;br /&gt;
| Fast Fourier transform library&amp;lt;br&amp;gt;Part of the extras module on the tcs:&amp;lt;br&amp;gt;compile with &amp;lt;tt&amp;gt;-I${SCINET_EXTRAS_INC}&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt; link with &amp;lt;tt&amp;gt;-L${SCINET_EXTRAS_LIB}&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;libfftw, libfftw_mpi,libfftw3&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;extras&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| GSL&lt;br /&gt;
| 1.13&lt;br /&gt;
| GNU Scientific Library&lt;br /&gt;
| &amp;lt;tt&amp;gt;libgsl, libgslcblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gsl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| LAPACK+SCALAPACK&lt;br /&gt;
| 3.4.2+2.0.2&lt;br /&gt;
| Linear algebra package. Note that essl, which comes with the ibm compilers contains a large part of lapack as well.&lt;br /&gt;
| &amp;lt;tt&amp;gt;liblapack,libscalapack,libblacs&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;lapack&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| PetSc&lt;br /&gt;
| 3.2&lt;br /&gt;
| Portable, Extensible Toolkit for Scientific Computation. With external packages mumps, chaco, hypre, parmetis, prometheus, plapack, superlu, sprng.&lt;br /&gt;
| &amp;lt;tt&amp;gt;libpetsc,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;petsc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| extras&lt;br /&gt;
|&lt;br /&gt;
| Adds paths to a fuller set of libraries to your user environment&amp;lt;br&amp;gt; compile with &amp;lt;tt&amp;gt;-I${SCINET_EXTRAS_INC}&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt; link with &amp;lt;tt&amp;gt;-L${SCINET_EXTRAS_LIB}&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;libfftw, libfftw_mpi, libfftw3, libhdf5, liblapack, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;extras&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Other'''''&lt;br /&gt;
|-&lt;br /&gt;
| gmake&lt;br /&gt;
| 3.82&lt;br /&gt;
| GNU's make. Replaces AIX make or gmake 3.80.&lt;br /&gt;
| &amp;lt;tt&amp;gt;make&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;gmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| antlr&lt;br /&gt;
| 2.7.7&lt;br /&gt;
| ANother Tool for Language Recognition&lt;br /&gt;
| &amp;lt;tt&amp;gt;antlr, antlr-config&amp;lt;br&amp;gt;libantlr, antlr.jar, antlr.py&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;antlr&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NCL&lt;br /&gt;
| 5.1.1&lt;br /&gt;
| NCAR Command Language&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncl, libncl, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
''* Several versions of this module are installed; listed is the default version.''&lt;br /&gt;
&lt;br /&gt;
=== P7 Software ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} |Software  &lt;br /&gt;
!{{Hl2}}| Version&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
!{{Hl2}}| Command/Library&lt;br /&gt;
!{{Hl2}}| Module Name&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Compilers'''''&lt;br /&gt;
|-&lt;br /&gt;
|IBM fortran compiler&lt;br /&gt;
|14.1, 13.1&lt;br /&gt;
|See [[P7 Linux Cluster]]&lt;br /&gt;
|&amp;lt;tt&amp;gt;xlf,xlf_r,xlf90,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
|xlf&lt;br /&gt;
|-&lt;br /&gt;
|IBM c/c++ compilers&lt;br /&gt;
|12.1, 11.1&lt;br /&gt;
|See [[P7 Linux Cluster]]&lt;br /&gt;
|&amp;lt;tt&amp;gt;xlc,xlC,xlc_r,xlC_r,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
|vacpp&lt;br /&gt;
|-&lt;br /&gt;
| Binutils&lt;br /&gt;
| 2.23.2&lt;br /&gt;
| &lt;br /&gt;
| &amp;lt;tt&amp;gt;addr2line, ar, ld, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;binutils&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|IBM MPI library&lt;br /&gt;
|5.2.2&lt;br /&gt;
|IBM's Parallel Environment&lt;br /&gt;
|&amp;lt;tt&amp;gt;mpcc,mpCC,mpfort,mpiexec&amp;lt;/tt&amp;gt;&lt;br /&gt;
|pe&lt;br /&gt;
|- &lt;br /&gt;
| GCC Compiler&lt;br /&gt;
| 4.6.1 , 4.8.1&lt;br /&gt;
| GNU Compiler Collection&lt;br /&gt;
| &amp;lt;tt&amp;gt;gcc,g++,gfortran&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Java&lt;br /&gt;
| 7.0&lt;br /&gt;
| IBM Java 1.7 implementation&lt;br /&gt;
| &amp;lt;tt&amp;gt;javac&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;jdk&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Debug/performancs tools'''''&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.allinea.com/products/ddt/ DDT]&lt;br /&gt;
| 4.0, 4.1, 4.2.1*&lt;br /&gt;
| Allinea's Distributed Debugging Tool&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Storage tools and libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
| 1.8.7&lt;br /&gt;
| Scientific data storage and retrieval, parallel I/O&lt;br /&gt;
| &amp;lt;tt&amp;gt;libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NetCDF&lt;br /&gt;
| 4.1.3&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncdump, ncgen, libnetcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| parallel netCDF&lt;br /&gt;
| 1.2.0&lt;br /&gt;
| Scientific data storage and retrieval using MPI-IO&lt;br /&gt;
| &amp;lt;tt&amp;gt;libpnetcdf.a&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;parallel-netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NCO&lt;br /&gt;
| 4.0.8&lt;br /&gt;
| NCO utilities to manipulate netCDF files&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncap2, ncatted, &amp;lt;/tt&amp;gt; etc.&lt;br /&gt;
| &amp;lt;tt&amp;gt;nco&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| GSL&lt;br /&gt;
| 1.13&lt;br /&gt;
| GNU Scientific Library&lt;br /&gt;
| &amp;lt;tt&amp;gt;libgsl, libgslcblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gsl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Scripting/interpreted languages'''''&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 2.7.5&lt;br /&gt;
| Python programming language. Modules included : numpy-1.8.0 , scipy-0.13.2 , matplotlib-1.3.1 , pyfits-3.2 , h5py-2.2.1&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Other'''''&lt;br /&gt;
|-&lt;br /&gt;
| gnuplot&lt;br /&gt;
| 4.6.1&lt;br /&gt;
| command-driven interactive function and data plotting program&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| antlr&lt;br /&gt;
| 2.7.7&lt;br /&gt;
| ANother Tool for Language Recognition&lt;br /&gt;
| &amp;lt;tt&amp;gt;antlr, antlr-config&amp;lt;br&amp;gt;libantlr, antlr.jar, antlr.py&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;antlr&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| udunits&lt;br /&gt;
| 2.1.11&lt;br /&gt;
| unit conversion utilities&lt;br /&gt;
| &amp;lt;tt&amp;gt;libudunits2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;udunits&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| extras&lt;br /&gt;
|&lt;br /&gt;
| Adds paths to a fuller set of applications and libraries to your user environment&lt;br /&gt;
| &amp;lt;tt&amp;gt;bindlaunch, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;extras&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Manuals=&lt;br /&gt;
{{:Manuals}}&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=BGQ&amp;diff=7573</id>
		<title>BGQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=BGQ&amp;diff=7573"/>
		<updated>2015-02-04T20:18:09Z</updated>

		<summary type="html">&lt;p&gt;Nolta: small clarification for running jobs under ddt&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Computer&lt;br /&gt;
|image=[[Image:Blue_Gene_Cabinet.jpeg|center|300px|thumb]]&lt;br /&gt;
|name=Blue Gene/Q (BGQ)&lt;br /&gt;
|installed=Aug 2012, Nov 2014&lt;br /&gt;
|operatingsystem= RH6.3, CNK (Linux) &lt;br /&gt;
|loginnode= bgqdev-fen1&lt;br /&gt;
|nnodes=  4096 nodes (65,536 cores)&lt;br /&gt;
|rampernode=16 GB &lt;br /&gt;
|corespernode=16 (64 threads)&lt;br /&gt;
|interconnect=5D Torus (jobs), QDR Infiniband (I/O) &lt;br /&gt;
|vendorcompilers= bgxlc, bgxlf&lt;br /&gt;
|queuetype=Loadleveler&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==System Status==&lt;br /&gt;
&lt;br /&gt;
The current BGQ system status can be found on the wiki's [[Main Page]].&lt;br /&gt;
&lt;br /&gt;
==SOSCIP &amp;amp; LKSAVI==&lt;br /&gt;
&lt;br /&gt;
The BGQ is a Southern Ontario Smart Computing&lt;br /&gt;
Innovation Platform ([http://soscip.org/ SOSCIP]) BlueGene/Q supercomputer located at the&lt;br /&gt;
University of Toronto's SciNet HPC facility. The SOSCIP &lt;br /&gt;
multi-university/industry consortium is funded by the Ontario Government &lt;br /&gt;
and the Federal Economic Development Agency for Southern Ontario [http://www.research.utoronto.ca/about/our-research-partners/soscip/].&lt;br /&gt;
&lt;br /&gt;
A half-rack of BlueGene/Q (8,192 cores) was purchased by the [http://likashingvirology.med.ualberta.ca/ Li Ka Shing Institute of Virology] at the University of Alberta in late fall 2014 and integrated into the existing BGQ system.&lt;br /&gt;
&lt;br /&gt;
== Support Email ==&lt;br /&gt;
&lt;br /&gt;
Please use [mailto:bgq-support@scinet.utoronto.ca &amp;lt;bgq-support@scinet.utoronto.ca&amp;gt;] for BGQ-specific inquiries.&lt;br /&gt;
&lt;br /&gt;
==Specifications==&lt;br /&gt;
&lt;br /&gt;
BGQ is an extremely dense and energy efficient 3rd generation Blue Gene IBM supercomputer built around a system-on-a-chip compute node that has a 16core 1.6GHz PowerPC based CPU (PowerPC A2) with 16GB of Ram.  The nodes are bundled in groups of 32 into a node board (512 cores), and 16 boards make up a midplane (8192 cores) with 2 midplanes per rack, or 16,348 cores and 16 TB of RAM per rack. The compute nodes run a very lightweight Linux-based operating system called CNK.  The compute nodes are all connected together using a custom 5D torus highspeed interconnect. Each rack has 16 I/O nodes that run a full Redhat Linux OS that manages the compute nodes and mounts the filesystem.  SciNet's BGQ consists of 8 mdiplanes (four-racks) totalling 65,536 cores and 64TB of RAM.&lt;br /&gt;
&lt;br /&gt;
[[Image:BlueGeneQHardware2.png‎ |center]]&lt;br /&gt;
&lt;br /&gt;
=== 5D Torus Network ===&lt;br /&gt;
&lt;br /&gt;
The network topology of BlueGene/Q is a five-dimensional (5D) torus, with direct links between the nearest neighbors in the ±A, ±B, ±C, ±D, and ±E directions.  As such there are only a few optimum block sizes that will use the network efficiently.&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;2&amp;quot;&lt;br /&gt;
| '''Node Boards '''&lt;br /&gt;
| '''Compute Nodes'''&lt;br /&gt;
| '''Cores'''&lt;br /&gt;
| '''Torus Dimensions'''&lt;br /&gt;
|-&lt;br /&gt;
| 1&lt;br /&gt;
| 32&lt;br /&gt;
| 512&lt;br /&gt;
| 2x2x2x2x2&lt;br /&gt;
|-&lt;br /&gt;
| 2 (adjacent pairs)&lt;br /&gt;
| 64&lt;br /&gt;
| 1024&lt;br /&gt;
| 2x2x4x2x2&lt;br /&gt;
|-&lt;br /&gt;
| 4 (quadrants)&lt;br /&gt;
| 128&lt;br /&gt;
| 2048&lt;br /&gt;
| 2x2x4x4x2&lt;br /&gt;
|-&lt;br /&gt;
| 8 (halves)&lt;br /&gt;
| 256&lt;br /&gt;
| 4096&lt;br /&gt;
| 4x2x4x4x2&lt;br /&gt;
|-&lt;br /&gt;
| 16 (midplane)&lt;br /&gt;
| 512&lt;br /&gt;
| 8192&lt;br /&gt;
| 4x4x4x4x2&lt;br /&gt;
|-&lt;br /&gt;
| 32 (1 rack)&lt;br /&gt;
| 1024&lt;br /&gt;
| 16384&lt;br /&gt;
| 4x4x4x8x2 &lt;br /&gt;
|-&lt;br /&gt;
| 64 (2 racks)&lt;br /&gt;
| 2048&lt;br /&gt;
| 32768&lt;br /&gt;
| 4x4x8x8x2&lt;br /&gt;
|-&lt;br /&gt;
| 96 (3 racks)&lt;br /&gt;
| 3072&lt;br /&gt;
| 49152&lt;br /&gt;
| 4x4x12x8x2&lt;br /&gt;
|-&lt;br /&gt;
| 128 (4 racks)&lt;br /&gt;
| 4096&lt;br /&gt;
| 65536&lt;br /&gt;
| 8x4x8x8x2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Login/Devel Node ==&lt;br /&gt;
&lt;br /&gt;
The development node is '''bgqdev-fen1''' which one can login to from the regular '''login.scinet.utoronto.ca''' login nodes or directly from outside using '''bgqdev.scinet.utoronto.ca''', e.g.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh -l USERNAME bgqdev.scinet.utoronto.ca -X&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where USERNAME is your username on the BGQ and the &amp;lt;tt&amp;gt;-X&amp;lt;/tt&amp;gt; flag is optional, needed only if you will use X graphics.&amp;lt;br/&amp;gt;&lt;br /&gt;
Note: To learn how to setup ssh keys for logging in please see [[Ssh keys]].&lt;br /&gt;
&lt;br /&gt;
These development node is a Power7 machines running Linux which serve as the compilation and submission host for the BGQ.  Programs are cross-compiled for the BGQ on this node and then submitted to the queue using loadleveler.&lt;br /&gt;
&lt;br /&gt;
===Modules and Environment Variables===&lt;br /&gt;
&lt;br /&gt;
To use most packages on the SciNet machines - including most of the compilers - , you will have to use the `modules' command.  The command &amp;lt;tt&amp;gt;module load some-package&amp;lt;/tt&amp;gt; will set your environment variables (&amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt;, etc) to include the default version of that package.   &amp;lt;tt&amp;gt;module load some-package/specific-version&amp;lt;/tt&amp;gt; will load a specific version of that package.  This makes it very easy for different users to use different versions of compilers, MPI versions, libraries etc.&lt;br /&gt;
&lt;br /&gt;
A list of the installed software can be seen on the system by typing &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module avail&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To load a module (for example, the default version of the intel compilers)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load vacpp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload a module&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module unload vacpp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To unload all modules&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These commands can go in your .bashrc files to make sure you are using the correct packages.&lt;br /&gt;
&lt;br /&gt;
Modules that load libraries, define environment variables pointing to the location of library files and include files for use Makefiles. These environment variables follow the naming convention&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 $SCINET_[short-module-name]_BASE&lt;br /&gt;
 $SCINET_[short-module-name]_LIB&lt;br /&gt;
 $SCINET_[short-module-name]_INC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
for the base location of the module's files, the location of the libraries binaries and the header files, respectively.&lt;br /&gt;
&lt;br /&gt;
So to compile and link the library, you will have to add &amp;lt;tt&amp;gt;-I${SCINET_[module-basename]_INC}&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-L${SCINET_[module-basename]_LIB}&amp;lt;/tt&amp;gt;, respectively, in addition to the usual &amp;lt;tt&amp;gt;-l[libname]&amp;lt;/tt&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Note that a &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; command ''only'' sets the environment variables in your current shell (and any subprocesses that the shell launches).   It does ''not'' effect other shell environments.&lt;br /&gt;
&lt;br /&gt;
If you always require the same modules, it is easiest to load those modules in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; and then they will always be present in your environment; if you routinely have to flip back and forth between modules, it is easiest to have almost no modules loaded in your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt; and simply load them as you need them (and have the required &amp;lt;tt&amp;gt;module load&amp;lt;/tt&amp;gt; commands in your job submission scripts).&lt;br /&gt;
&lt;br /&gt;
=== Compilers ===&lt;br /&gt;
&lt;br /&gt;
The BGQ uses IBM XL compilers to cross-compile code for the BGQ.  Compilers are available for FORTRAN, C, and C++.  They are accessible by default, or by loading the '''xlf''' and '''vacpp''' modules. The compilers by default produce&lt;br /&gt;
static binaries, however with BGQ it is possible to now use dynamic libraries as well.  The compilers follow the XL conventions with the prefix '''bg''',&lt;br /&gt;
so '''bgxlc''' and '''bgxlf90''' are the C and FORTRAN compilers respectively.  &lt;br /&gt;
&lt;br /&gt;
Most users however will use the MPI variants, i.e. '''mpixlf90''' and '''mpixlc''' and  which are available by loading&lt;br /&gt;
the '''mpich2''' module. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load mpich2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is recommended to use at least the following flags when compiling and linking&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-O3 -qarch=qp -qtune=qp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to build a package for which the configure script tries to run small test jobs, the cross-compiling nature of the bgq can get in the way.  In that case, you should use the interactive [[BGQ#Interactive_Use_.2F_Debugging | &amp;lt;tt&amp;gt;'''debugjob'''&amp;lt;/tt&amp;gt;]] environment as described below.&lt;br /&gt;
&lt;br /&gt;
== Job Submission ==&lt;br /&gt;
&lt;br /&gt;
As the BGQ architecture is different from the development nodes, the only way to test your program is to submit a job to the BGQ.  Jobs are submitted through loadleveler using '''runjob''' which in many ways similar to mpirun or mpiexec.  As shown above in the network topology overview, there are only a few optimum job size configurations which is also further constrained by each block requiring a minimum of one IO node.  In SciNet's configuration (with 8 I/O nodes per midplane) this allows 64 nodes (1024 cores) to be the smallest block size. Normally a block size matches the job size to offer fully dedicated resources to the job.  Smaller jobs can be run within the same block however this results in shared resources (network and IO) and are referred to as sub-block jobs and are described in more detail below.  &lt;br /&gt;
&lt;br /&gt;
=== runjob ===&lt;br /&gt;
&lt;br /&gt;
All BGQ jobs are launced using '''runjob''' which for those familiar with MPI is analogous to mpirun/mpiexec.  Jobs run on a block, which is a predefined group of nodes that have already been configured and booted.  When using loadleveler this is set for you, and you do not have to specify the block name.  For example, if your loadleveler script requests 64 nodes, each with 16 cores (for a total of 1024 cores), you run a job with 16 processes per node and 1024 total processes with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runjob --np 1024 --ranks-per-node=16 --cwd=$PWD : $PWD/code -f file.in&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Here, &amp;lt;tt&amp;gt;--np 1024&amp;lt;/tt&amp;gt; sets the total number of mpi tasks, while &amp;lt;tt&amp;gt;--ranks-per-node=16&amp;lt;/tt&amp;gt; specifies that 16 processes should run on each node.&lt;br /&gt;
For pure mpi jobs, it is advisable always to give the number of ranks per node, because the default value of 1 may leave 15 cores on the node idle. The argument to ranks-per-node may be 1, 2, 4, 8, 16, 32, or 64. &lt;br /&gt;
&lt;br /&gt;
(Note: If this were not a loadleveler job, and the block ID was R00-M0-N03-64, the command would be &amp;quot;&amp;lt;tt&amp;gt;runjob --block R00-M0-N03-64 --np 1024 --ranks-per-node=16 --cwd=$PWD : $PWD/code -f file.in&amp;lt;/tt&amp;gt;&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
runjob flags are shown with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
runjob -h&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
a particularly useful one is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--verbose #&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where # is from 1-7 which can be helpful in debugging an application.&lt;br /&gt;
&lt;br /&gt;
=== How to set ranks-per-node ===&lt;br /&gt;
&lt;br /&gt;
There are 16 cores per node, but the argument to ranks-per-node may be 1, 2, 4, 8, 16, 32, or 64.  While it may seem natural to set ranks-per-node to 16, this is not generally recommended.  On the BGQ, one can efficiently run more than 1 process per node, because each core has four &amp;quot;hardware threads&amp;quot; (similar to HyperThreading on the GPC and Simultaneous Multi Threading on the TCS and P7), which can keep the different parts of each core busy at the same time. One would therefore ideally use 64 ranks per node.  There are two main reason why one might not set ranks-per-node to 64:&lt;br /&gt;
# The memory requirements do not allow 64 ranks (each rank only has 256MB of memory)&lt;br /&gt;
# The application is more efficient in a hybrid MPI/OpenMP mode (or MPI/pthreads). Using less ranks-per-node, the hardware threads are used as OpenMP threads within each process.&lt;br /&gt;
Because threads can share memory, the memory requirements of the hybrid runs is typically smaller than that of pure MPI runs.&lt;br /&gt;
&lt;br /&gt;
Note that the total number of mpi processes in a runjob (i.e., the --np argument) should be the ranks-per-node times the number of nodes (set by bg_size in the loadleveler script). So for the same number of nodes, if you change ranks-per-node by a factor of two, you should also multiply the total number of mpi processes by two.&lt;br /&gt;
&lt;br /&gt;
=== Queue Limits ===&lt;br /&gt;
&lt;br /&gt;
The maximum wall_clock_limit is 24 hours.  Official SOSCIP project jobs are prioritized over all other jobs using a fairshare algorithm with a 14 day rolling window.&lt;br /&gt;
&lt;br /&gt;
A 64 node block is reserved for development and interactive testing from 8AM-12AM everyday including weekends.  This block is accessed by using the [[BGQ#Interactive_Use_.2F_Debugging | &amp;lt;tt&amp;gt;'''debugjob'''&amp;lt;/tt&amp;gt;]] command which has a 30 minute maximum wall_clock_limit. The purpose of this reservation is to ensure short testing jobs are run quickly without being held up by longer production type jobs.&lt;br /&gt;
&lt;br /&gt;
=== BACKFILL scheduling ===&lt;br /&gt;
To optimize the cluster usage, we encourage users to submit jobs according to the available resources on BGQ. The command &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;llAvailableResources&amp;lt;/span&amp;gt; gives for example :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
On the Devel system : only a debugjob can start immediately&lt;br /&gt;
&lt;br /&gt;
On the Prod. system : a job will start immediately if you use 512 nodes requesting a walltime T &amp;lt;= 21 hours and 11 min &lt;br /&gt;
On the Prod. system : a job will start immediately if you use 256 nodes requesting a walltime T &amp;lt;= 21 hours and 11 min &lt;br /&gt;
On the Prod. system : a job will start immediately if you use 128 nodes requesting a walltime T &amp;lt;= 24 hours and 0 min &lt;br /&gt;
On the Prod. system : a job will start immediately if you use 64 nodes requesting a walltime T &amp;lt;= 24 hours and 0 min&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Batch Jobs ===&lt;br /&gt;
&lt;br /&gt;
Job submission is done through loadleveler with a few blue gene specific commands.  The command &amp;quot;bg_size&amp;quot; is in number of nodes, not cores, so a bg_size=64 would be 64x16=1024 cores.&lt;br /&gt;
&lt;br /&gt;
The parameter &amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;bg_size&amp;lt;/span&amp;gt; can only be equal to 64, 128, 256, 512, 1024 and 2048.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-weight: bold;&amp;quot;&amp;gt;np&amp;lt;/span&amp;gt; &amp;amp;le; ranks-per-node * bg_size&lt;br /&gt;
&lt;br /&gt;
ranks-per-node &amp;amp;le; np&lt;br /&gt;
&lt;br /&gt;
(ranks-per-node * OMP_NUM_THREADS ) &amp;amp;le; 64 &lt;br /&gt;
&lt;br /&gt;
np : number of MPI processes&lt;br /&gt;
&lt;br /&gt;
ranks-per-node : number of MPI processes per node = 1 , 2 , 4 , 8 , 16 , 32 , 64&lt;br /&gt;
&lt;br /&gt;
OMP_NUM_THREADS : number of OpenMP thread per MPI process (for hybrid codes) = 1 , 2 , 4 , 8 , 16 , 32 , 64&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ queue &lt;br /&gt;
&lt;br /&gt;
# Launch all BGQ jobs using runjob&lt;br /&gt;
runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To submit to the queue use &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llsubmit myscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Steps ( Job dependency) ===&lt;br /&gt;
LoadLeveler has a lot of advanced features to control job submission and execution. One of these features is called steps. This feature allows a series of jobs to be submitted using one script with dependencies defined between the jobs. What this allows is for a series of jobs to be run sequentially, waiting for the previous job, called a step, to be finished before the next job is started. The following example uses the same LoadLeveler script as previously shown, however the #@ step_name and #@ dependency directives are used to rerun the same case three times in a row, waiting until each job is finished to start the next.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ step_name = step1                                                                                                                                                                                                                        &lt;br /&gt;
# @ queue&lt;br /&gt;
# Launch the first step :&lt;br /&gt;
if [ $LOADL_STEP_NAME = &amp;quot;step1&amp;quot; ]; then&lt;br /&gt;
    runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ step_name = step2                                                                                                                                                                                                                        &lt;br /&gt;
# @ dependency = step1 == 0                                                                                                                                                                                                                        &lt;br /&gt;
# @ queue&lt;br /&gt;
# Launch the second step if the first one has returned 0 (done successfully) :&lt;br /&gt;
if [ $LOADL_STEP_NAME = &amp;quot;step2&amp;quot; ]; then&lt;br /&gt;
    runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
# @ job_name           = bgsample&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job By Size&amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ step_name = step3                                                                                                                                                                                                                        &lt;br /&gt;
# @ dependency = step2 == 0                                                                                                                                                                                                                        &lt;br /&gt;
# @ queue&lt;br /&gt;
# Launch the third step if the second one has returned 0 (done successfully) :&lt;br /&gt;
if [ $LOADL_STEP_NAME = &amp;quot;step3&amp;quot; ]; then&lt;br /&gt;
    runjob --np 1024 --ranks-per-node=16 --envs OMP_NUM_THREADS=1 --cwd=$SCRATCH/ : $HOME/mycode.exe myflags&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Monitoring Jobs ===&lt;br /&gt;
&lt;br /&gt;
To see running jobs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llq2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llq -b&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
to cancel a job use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llcancel JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and to look at details of the bluegene resources use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
llbgstatus -M all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note: the loadleveler script commands  are not run on a bgq compute node but on the front-end node. Only programs started with runjob run on the bgq compute nodes. You should therefore keep scripting in the submission script to a bare minimum.'''&lt;br /&gt;
&lt;br /&gt;
=== Interactive Use / Debugging ===&lt;br /&gt;
&lt;br /&gt;
As BGQ codes are cross-compiled they cannot be run direclty on the front-nodes.  &lt;br /&gt;
Users however only have access to the BGQ through loadleveler which is appropriate for batch jobs, &lt;br /&gt;
however an interactive session is typically beneficial when debugging and developing.   As such a &lt;br /&gt;
script has been written to allow a session in which runjob can be run interactively.  The script&lt;br /&gt;
uses loadleveler to setup a block and set all the correct environment variables and then launch a spawned shell on&lt;br /&gt;
the front-end node. The '''debugjob''' session currently allows a 30 minute session on 64 nodes and when run on &lt;br /&gt;
'''&amp;lt;tt&amp;gt;bgqdev&amp;lt;/tt&amp;gt;''' runs in a dedicated reservation as described previously in the [[BGQ#Queue_Limits | queue limits]] section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[user@bgqdev-fen1]$ debugjob&lt;br /&gt;
&lt;br /&gt;
[user@bgqdev-fen1]$ runjob --np 64 --ranks-per-node=16 --cwd=$PWD : $PWD/my_code -f myflags&lt;br /&gt;
&lt;br /&gt;
[user@bgqdev-fen1]$ exit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For debugging, gdb and Allinea DDT are available. The latter is recommended as it automatically attaches to all the processes of a process (instead of attaching a gdbtool by hand (as explained in the BGQ Application Development guide, link below). Simply compile with &amp;lt;tt&amp;gt;-g&amp;lt;/tt&amp;gt;, load the &amp;lt;tt&amp;gt;ddt/4.1&amp;lt;/tt&amp;gt; module, type &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt; and follow the graphical user interface.  The DDT user guide can be found below.&lt;br /&gt;
&lt;br /&gt;
Note: when running a job under ddt, you'll need to add &amp;quot;&amp;lt;tt&amp;gt;--ranks-per-node=X&amp;lt;/tt&amp;gt;&amp;quot; to the &amp;quot;runjob arguments&amp;quot; field.&lt;br /&gt;
&lt;br /&gt;
Apart from debugging, this environment is also useful for building libraries and applications that need to run small tests as part of their 'configure' step.   Within the debugjob session, applications compiled with the bgxl compilers or the mpcc/mpCC/mpfort wrappers, will automatically run on the BGQ, skipping the need for the runjob command, provided if you set the following environment variables &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ export BG_PGM_LAUNCHER=yes&lt;br /&gt;
$ export RUNJOB_NP=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The latter setting sets the number of mpi processes to run.  Most configure scripts expect only one mpi process, thus, &amp;lt;tt&amp;gt;RUNJOB_NP=1&amp;lt;/tt&amp;gt; is appropriate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
debugjob session with an executable implicitly calls runjob  with 1 mpi task :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
debugjob -i&lt;br /&gt;
**********************************************************&lt;br /&gt;
 Interactive BGQ runjob shell using bgq-fen1-ib0.10295.0 and           &lt;br /&gt;
 LL14040718574824 for 30 minutes with 64 NODES (1024 cores). &lt;br /&gt;
 IMPLICIT MODE: running an executable implicitly calls runjob&lt;br /&gt;
                with 1 mpi task&lt;br /&gt;
 Exit shell when finished.                                &lt;br /&gt;
**********************************************************&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sub-block jobs ===&lt;br /&gt;
&lt;br /&gt;
BGQ allows multiple applications to share the same block, which is referred to as sub-block jobs, however this needs to be done from within the same loadleveler submission script using multiple calls to runjob.  To run a sub-block job, you need to specify a &amp;quot;--corner&amp;quot; within the block to start each job and a 5D Torus AxBxCxDxE &amp;quot;--shape&amp;quot;.  The starting corner will depend on the specific block details provided by loadleveler and the shape and size of job trying to be used.  &lt;br /&gt;
&lt;br /&gt;
Figuring out what the corners and shapes should be is very tricky (especially since it depends on the block you get allocated).  For that reason, we've created a script called &amp;lt;tt&amp;gt;subblocks&amp;lt;/tt&amp;gt; that determines the corners and shape of the sub-blocks.  It only handles the (presumable common) case in which you want to subdivide the block into n equally sized sub-blocks, where n may be 1,2,4,8,16 and 32.&lt;br /&gt;
&lt;br /&gt;
Here is an example script calling &amp;lt;tt&amp;gt;subblocks&amp;lt;/tt&amp;gt; with a size of 4 that will return the appropriate $SHAPE argument and an array of 16 starting $CORNER. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# @ job_name           = bgsubblock&lt;br /&gt;
# @ job_type           = bluegene&lt;br /&gt;
# @ comment            = &amp;quot;BGQ Job SUBBLOCK &amp;quot;&lt;br /&gt;
# @ error              = $(job_name).$(Host).$(jobid).err&lt;br /&gt;
# @ output             = $(job_name).$(Host).$(jobid).out&lt;br /&gt;
# @ bg_size            = 64&lt;br /&gt;
# @ wall_clock_limit   = 30:00&lt;br /&gt;
# @ bg_connectivity    = Torus&lt;br /&gt;
# @ queue&lt;br /&gt;
&lt;br /&gt;
# Using subblocks script to set $SHAPE and array of ${CORNERS[n]}&lt;br /&gt;
# with size of subblocks in nodes (ie similiar to bg_size)&lt;br /&gt;
&lt;br /&gt;
# In this case 16 sub-blocks of 4 cnodes each (64 total ie bg_size)&lt;br /&gt;
source subblocks 4&lt;br /&gt;
&lt;br /&gt;
# 16 jobs of 4 each&lt;br /&gt;
for (( i=0; i &amp;lt;  16 ; i++)); do&lt;br /&gt;
   runjob --corner ${CORNER[$i]} --shape $SHAPE --np 64 --ranks-per-node=16 :  your_code_here &amp;gt; $i.out &amp;amp;&lt;br /&gt;
done&lt;br /&gt;
wait&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Remember that subjobs are not the ideal way to run on the BlueGene/Qs. One needs to consider that these sub-blocks all have to share the same I/O nodes, so for I/O intensive jobs this will be an inefficient setup.  Also consider that if you need to run such small jobs that you have to run in sub-blocks, it may be more efficient to use other clusters such as the GPC.&lt;br /&gt;
&lt;br /&gt;
Let us know if you run into any issues with this technique, please contact bgq-support for help.&lt;br /&gt;
&lt;br /&gt;
== Filesystem ==&lt;br /&gt;
&lt;br /&gt;
The BGQ has its own dedicated 500TB file system based on GPFS (General Parallel File System). There are two main systems for user data: /home, a small, backed-up space where user home directories are located, and /scratch, a large system for input or output data for jobs; data on /scratch is not backed up. The path to your home directory is in the environment variable $HOME, and will look like /home/G/GROUP/USER, .  The path to your scratch directory is in the environment variable $SCRATCH, and will look like /scratch/G/GROUP/USER (following the conventions of the rest of the SciNet systems).  &lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! {{Hl2}} | file system &lt;br /&gt;
! {{Hl2}} | purpose &lt;br /&gt;
! {{Hl2}} | user quota &lt;br /&gt;
! {{Hl2}} | backed up&lt;br /&gt;
! {{Hl2}} | purged&lt;br /&gt;
|- &lt;br /&gt;
| /home&lt;br /&gt;
| development&lt;br /&gt;
| 50 GB&lt;br /&gt;
| yes&lt;br /&gt;
| never&lt;br /&gt;
|-&lt;br /&gt;
| /scratch&lt;br /&gt;
| computation&lt;br /&gt;
| first of (20 TB ; 1 million files)&lt;br /&gt;
| no&lt;br /&gt;
| not currently&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Transfering files===&lt;br /&gt;
The BGQ GPFS file system,  except for HPSS, is '''not''' shared with the other SciNet systems (gpc, tcs, p7, arc), nor is the other file system mounted on the BGQ.  &lt;br /&gt;
Use scp to copy files from one file system to the other, e.g., from bgqdev-fen1, you could do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ scp -c arcfour login.scinet.utoronto.ca:code.tgz .&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or from a login node you could do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  $ scp -c arcfour code.tgz bgqdev.scinet.utoronto.ca:&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The flag &amp;lt;tt&amp;gt;-c arcfour&amp;lt;/tt&amp;gt; is optional. It tells scp (or really, ssh), to use a non-default encryption. The one chosen here, arcfour, has been found to speed up the transfer by a factor of two (you may expect around 85MB/s).  This encryption method is only recommended for copying from the BGQ file system to the regular SciNet GPFS file system or back. &lt;br /&gt;
 &lt;br /&gt;
Note that although these transfers are witihin the same data center, you have to use the full names of the systems, login.scinet.utoronto.ca and bgq.scinet.utoronto.ca, respectively, and that you will be asked you for your password.&lt;br /&gt;
&lt;br /&gt;
===How much Disk Space Do I have left?===&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;'''diskUsage'''&amp;lt;/tt&amp;gt; command, available on the bgqdev nodes, provides information in a number of ways on the home and scratch file systems. For instance, how much disk space is being used by yourself and your group (with the -a option), or how much your usage has changed over a certain period (&amp;quot;delta information&amp;quot;) or you may generate plots of your usage over time. Please see the usage help below for more details.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: diskUsage [-h|-?| [-a] [-u &amp;lt;user&amp;gt;] [-de|-plot]&lt;br /&gt;
       -h|-?: help&lt;br /&gt;
       -a: list usages of all members on the group&lt;br /&gt;
       -u &amp;lt;user&amp;gt;: as another user on your group&lt;br /&gt;
       -de: include delta information&lt;br /&gt;
       -plot: create plots of disk usages&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note that the information on usage and quota is only updated hourly!&lt;br /&gt;
&lt;br /&gt;
===Bridge to HPSS===&lt;br /&gt;
&lt;br /&gt;
BGQ users may transfer material to/from HPSS via the GPC archive queue. On the HPSS gateway node (gpc-archive01), the BGQ GPFS file systems are mounted under a single mounting point /bgq (/bgq/scratch and /bgq/home). For detailed information on the use of HPSS [https://support.scinet.utoronto.ca/wiki/index.php/HPSS please read the HPSS wiki section.]&lt;br /&gt;
&lt;br /&gt;
== Software modules installed on the BGQ ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;10&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!{{Hl2}} |Software  &lt;br /&gt;
!{{Hl2}}| Version&lt;br /&gt;
!{{Hl2}}| Comments&lt;br /&gt;
!{{Hl2}}| Command/Library&lt;br /&gt;
!{{Hl2}}| Module Name&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Compilers'''''&lt;br /&gt;
|-&lt;br /&gt;
|IBM fortran compiler&lt;br /&gt;
|14.1&lt;br /&gt;
|These are cross compilers&lt;br /&gt;
|&amp;lt;tt&amp;gt;bgxlf,bgxlf_r,bgxlf90,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
|xlf&lt;br /&gt;
|-&lt;br /&gt;
|IBM c/c++ compilers&lt;br /&gt;
|12.1&lt;br /&gt;
|These are cross compilers&lt;br /&gt;
|&amp;lt;tt&amp;gt;bgxlc,bgxlC,bgxlc_r,bgxlC_r,...&amp;lt;/tt&amp;gt;&lt;br /&gt;
|vacpp&lt;br /&gt;
|-&lt;br /&gt;
|MPICH2 MPI library&lt;br /&gt;
|1.4.1&lt;br /&gt;
|There are 4 versions (see BGQ Applications Development document).&lt;br /&gt;
|&amp;lt;tt&amp;gt;mpicc,mpicxx,mpif77,mpif90&amp;lt;/tt&amp;gt;&lt;br /&gt;
|mpich2&lt;br /&gt;
|- &lt;br /&gt;
| GCC Compiler&lt;br /&gt;
| 4.4.6, 4.8.1&lt;br /&gt;
| GNU Compiler Collection for BGQ&amp;lt;br&amp;gt;(4.8.1 requires binutils/2.23 to be loaded)&lt;br /&gt;
| &amp;lt;tt&amp;gt;powerpc64-bgq-linux-gcc, powerpc64-bgq-linux-g++, powerpc64-bgq-linux-gfortran&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;bgqgcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Binutils&lt;br /&gt;
| 2.21.1, 2.23&lt;br /&gt;
| Cross-compilation utilities&lt;br /&gt;
| &amp;lt;tt&amp;gt;addr2line, ar, ld, ...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;binutils&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| CMake	&lt;br /&gt;
| 2.8.8&lt;br /&gt;
| cross-platform, open-source build system&lt;br /&gt;
| &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cmake&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Debug/performance tools'''''&lt;br /&gt;
|-&lt;br /&gt;
| gdb&lt;br /&gt;
| 7.2&lt;br /&gt;
| GNU Debugger&lt;br /&gt;
| &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gdb&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [http://www.allinea.com/products/ddt/ DDT]&lt;br /&gt;
| 4.1&lt;br /&gt;
| Allinea's Distributed Debugging Tool&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;ddt&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[HPCTW]]&lt;br /&gt;
| 1.0&lt;br /&gt;
| BGQ MPI and Hardware Counters&lt;br /&gt;
| &amp;lt;tt&amp;gt;libmpihpm.a, libmpihpm_smp.a, libmpitrace.a &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hptibm&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| [[MemP]]&lt;br /&gt;
| 1.0.3&lt;br /&gt;
| BGQ Memory Stats&lt;br /&gt;
| &amp;lt;tt&amp;gt;libmemP.a &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;memP&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Storage tools/libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
| 1.8.9-v18&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;h5ls, h5diff, ..., libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf5/189-v18-serial-xlc*&amp;lt;br/&amp;gt;hdf5/189-v18-mpich2-xlc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
| 1.8.12-v18&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;h5ls, h5diff, ..., libhdf5&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;hdf5/1812-v18-serial-gcc&amp;lt;br/&amp;gt;hdf5/1812-v18-mpich2-gcc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NetCDF&lt;br /&gt;
| 4.2.1.1&lt;br /&gt;
| Scientific data storage and retrieval&lt;br /&gt;
| &amp;lt;tt&amp;gt;ncdump,ncgen,libnetcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;netcdf/4.2.1.1-serial-xlc*&amp;lt;br/&amp;gt;netcdf/4.2.1.1-mpich2-xlc&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Parallel NetCDF&lt;br /&gt;
| 1.3.1&lt;br /&gt;
| Parallel scientific data storage and retrieval using MPI-IO&lt;br /&gt;
| &amp;lt;tt&amp;gt;libpnetcdf.a&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;parallel-netcdf&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Libraries'''''&lt;br /&gt;
|-&lt;br /&gt;
| ESSL&lt;br /&gt;
| 5.1&lt;br /&gt;
| IBM Engineering and Scientific Subroutine Library (manual below)&lt;br /&gt;
| &amp;lt;tt&amp;gt;libesslbg,libesslsmpbg&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;essl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| FFTW&lt;br /&gt;
| 2.1.5, 3.3.2, 3.1.2-esslwrapper&lt;br /&gt;
| Fast fourier transform &lt;br /&gt;
| &amp;lt;tt&amp;gt;libsfftw,libdfftw,libfftw3, libfftw3f&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;fftw/2.1.5, fftw/3.3.2, fftw/3.1.2-esslwrapper&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| LAPACK + ScaLAPACK&lt;br /&gt;
| 3.4.2 + 2.0.2&lt;br /&gt;
| Linear algebra routines. A subset of Lapack may be found in ESSL as well.&lt;br /&gt;
| &amp;lt;tt&amp;gt;liblapack, libscalpack&amp;lt;/tt&amp;gt;&lt;br /&gt;
| lapack&lt;br /&gt;
|-&lt;br /&gt;
| GSL&lt;br /&gt;
| 1.15&lt;br /&gt;
| GNU Scientific Library&lt;br /&gt;
| &amp;lt;tt&amp;gt;libgsl, libgslcblas&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gsl&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| BOOST&lt;br /&gt;
| 1.47.0, 1.54&lt;br /&gt;
| C++ Boost libraries&lt;br /&gt;
| &amp;lt;tt&amp;gt;libboost...&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;cxxlibraries/boost&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| bzip2+szip+zlib&lt;br /&gt;
| 1.0.6,2.1,1.2.3&lt;br /&gt;
| compression libraries&lt;br /&gt;
| &amp;lt;tt&amp;gt;libbz2,libz,libsz&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;compression&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| METIS&lt;br /&gt;
| 5.0.2&lt;br /&gt;
| Serial Graph Partitioning and Fill-reducing Matrix Ordering&lt;br /&gt;
| &amp;lt;tt&amp;gt;libmetis&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;metis&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ParMETIS&lt;br /&gt;
| 4.0.2&lt;br /&gt;
| Parallel graph partitioning and fill-reducing matrix ordering&lt;br /&gt;
| &amp;lt;tt&amp;gt;libparmetis&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;parmetis&amp;lt;/tt&amp;gt; &lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Scripting/interpreted languages'''''&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 2.6.6&lt;br /&gt;
| Python programming language&lt;br /&gt;
| &amp;lt;tt&amp;gt;/bgsys/tools/Python-2.6/bin/python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 2.7.3&lt;br /&gt;
| Python programming language. Modules included : numpy-1.8.0, pyFFTW-0.9.2, astropy-0.3, scipy-0.13.3, mpi4py-1.3.1, h5py-2.2.1&lt;br /&gt;
| &amp;lt;tt&amp;gt;/scinet/bgq/tools/Python/python2.7.3-20131205/bin/python&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[Python]]&lt;br /&gt;
| 3.2.2&lt;br /&gt;
| Python programming language&lt;br /&gt;
| &amp;lt;tt&amp;gt;/bgsys/tools/Python-3.2/bin/python3&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;python&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=5 style='background: #E0E0E0'|'''''Applications'''''&lt;br /&gt;
|-&lt;br /&gt;
| gnuplot&lt;br /&gt;
| 4.6.1&lt;br /&gt;
| interactive plotting program to be run on front-end nodes&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;gnuplot&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| LAMMPS&lt;br /&gt;
| Nov 2012&lt;br /&gt;
| Molecular Dynamics &lt;br /&gt;
| &amp;lt;tt&amp;gt;lmp_bgq&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;lammps&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| NAMD&lt;br /&gt;
| 2.9&lt;br /&gt;
| Molecular Dynamics &lt;br /&gt;
| &amp;lt;tt&amp;gt;namd2&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;namd/2.9-smp&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [http://www.quantum-espresso.org/index.php Quantum Espresso]&lt;br /&gt;
| 5.0.3&lt;br /&gt;
| Molecular Structure / Quantum Chemistry &lt;br /&gt;
| &amp;lt;tt&amp;gt;qe_pw.x, etc&amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;espresso&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| [[BGQ_OpenFOAM | OpenFOAM]]&lt;br /&gt;
| 2.2.0&lt;br /&gt;
| Computational Fluid Dynamics&lt;br /&gt;
| &amp;lt;tt&amp;gt;icofoam,etc. &amp;lt;/tt&amp;gt;&lt;br /&gt;
| &amp;lt;tt&amp;gt;openfoam&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Python on BlueGene ==&lt;br /&gt;
Python 2.7.3 has been installed on BlueGene. To use &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;Numpy&amp;lt;/span&amp;gt; and &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;Scipy&amp;lt;/span&amp;gt;, the module &amp;lt;span style=&amp;quot;color: red;font-weight: bold;&amp;quot;&amp;gt;essl/5.1&amp;lt;/span&amp;gt; has to be loaded.&lt;br /&gt;
The full python path has to be provided (otherwise the default version is used).&lt;br /&gt;
&lt;br /&gt;
To use python on BlueGene :&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
module load python/2.7.3&lt;br /&gt;
##Only if you need numpy/scipy :&lt;br /&gt;
module load xlf/14.1 essl/5.1&lt;br /&gt;
runjob --np 1 --ranks-per-node=1 --envs HOME=$HOME LD_LIBRARY_PATH=$LD_LIBRARY_PATH PYTHONPATH=/scinet/bgq/tools/Python/python2.7.3-20131205/lib/python2.7/site-packages/ : /scinet/bgq/tools/Python/python2.7.3-20131205/bin/python2.7 /PATHOFYOURSCRIPT.py &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
== Documentation ==&lt;br /&gt;
#BGQ Day: Intro to Using the BGQ&amp;lt;br/&amp;gt;[[File:BgqIntro-FirstFrame.png|180px|link=http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqintro/bgqintro.html]]&amp;lt;br/&amp;gt;[[Media:Bgqintro.pdf|Slides ]] &amp;amp;nbsp;/ &amp;amp;nbsp; [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqintro/bgqintro.html Video recording] [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqintro/bgqintro.mp4 (direct link)]&lt;br /&gt;
#BGQ Day: BGQ Hardware Overview&amp;lt;br/&amp;gt;[[File:Bgqhardware-FirstFrame.png|180px|link=http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqhardware/bgqhardware.html]]&amp;lt;br/&amp;gt;[https://support.scinet.utoronto.ca/~northrup/bgqhardware.pdf Slides] &amp;amp;nbsp;/ &amp;amp;nbsp; [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqhardware/bgqhardware.html Video recording] [http://support.scinet.utoronto.ca/CourseVideo/BGQ/bgqhardware/bgqhardware.mp4 (direct link)]&lt;br /&gt;
# [http://www.fz-juelich.de/ias/jsc/EN/Expertise/Supercomputers/JUQUEEN/Documentation/Documention_node.html Julich BGQ Documentation]&lt;br /&gt;
# [https://wiki.alcf.anl.gov/parts/index.php/Blue_Gene/Q Argonne Mira BGQ Wiki]&lt;br /&gt;
# [https://computing.llnl.gov/tutorials/bgq/ LLNL Sequoia BGQ Info]&lt;br /&gt;
# [https://www.alcf.anl.gov/presentations Argonne MiraCon Presentations]&lt;br /&gt;
# [http://www.redbooks.ibm.com/redbooks/SG247869/wwhelp/wwhimpl/js/html/wwhelp.htm BGQ System Administration Guide]&lt;br /&gt;
# [http://www.redbooks.ibm.com/redbooks/SG247948/wwhelp/wwhimpl/js/html/wwhelp.htm BGQ Application Development ]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqcgetstart.pdf|Getting started]]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqccompiler.pdf|Compiler reference]]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqclangref.pdf|Language reference]]&lt;br /&gt;
# IBM XL C/C++ for Blue Gene/Q: [[Media:bgqcproguide.pdf|Optimization and Programming Guide]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqfgetstart.pdf|Getting started]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqfcompiler.pdf|Compiler reference]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqflangref.pdf|Language reference]]&lt;br /&gt;
# IBM XL Fortran for Blue Gene/Q: [[Media:bgqfproguide.pdf|Optimization and Programming Guide]]&lt;br /&gt;
# [[Media:essl51.pdf|IBM ESSL (Engineering and Scientific Subroutine Library) 5.1 for Linux on Power]]&lt;br /&gt;
# [http://content.allinea.com/downloads/userguide.pdf Allinea DDT 4.1 User Guide]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--  PUT IN TRAC !!!&lt;br /&gt;
&lt;br /&gt;
=== *Manual Block Creation* ===&lt;br /&gt;
&lt;br /&gt;
To reconfigure the BGQ nodes you can use the bg_console or the web based navigator from the service node &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bg_console&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various options to create block types (section 3.2 in the BGQ admin manual), but the smallest is created using the&lt;br /&gt;
following command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gen_small_block &amp;lt;blockid&amp;gt; &amp;lt;midplane&amp;gt; &amp;lt;cnodes&amp;gt; &amp;lt;nodeboard&amp;gt; &lt;br /&gt;
gen_small_block  R00-M0-N03-32 R00-M0 32 N03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The block then needs to be booted using:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
allocate R00-M0-N03-32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If those resources are already booted into another block, that block must be freed before the new block can be &lt;br /&gt;
allocated.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
free R00-M0-N03&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are many other functions in bg_console:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
help all&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The BGQ default nomenclature for hardware is as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(R)ack - (M)idplane - (N)ode board or block - (J)node - (C)ore&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
So R00-M01-N03-J00-C02 would correspond to the first rack, second midplane, 3rd block, 1st node, and second core.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--!&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Scheduler&amp;diff=7572</id>
		<title>Scheduler</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Scheduler&amp;diff=7572"/>
		<updated>2015-02-04T16:34:25Z</updated>

		<summary type="html">&lt;p&gt;Nolta: better link to moab command list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The queueing system used at SciNet is based around Cluster Resources [http://www.adaptivecomputing.com/products/hpc-products/moab-hpc-basic-edition/ Moab Workload Manager].&lt;br /&gt;
Moab is used on both the GPC and TCS however [http://www.adaptivecomputing.com/products/open-source/torque/ Torque] is used as the backend resource manager on the GPC and IBM's [http://www.ibm.com/software/products/en/tivoliworkloadschedulerloadleveler/ LoadLeveler] is used on the TCS.&lt;br /&gt;
&lt;br /&gt;
This page outlines some of the most common Moab commands with full documentation available from Moab [http://docs.adaptivecomputing.com/mwm/7-2-9/help.htm#a.gcommandoverview.html%3FTocPath%3D4.0%2520Scheduler%2520Commands|_____0 here], the torque (pbs) commands full documentation is [http://docs.adaptivecomputing.com/torque/4-2-9/help.htm here].&lt;br /&gt;
&lt;br /&gt;
Some common questions about the queuing system can be found on the [[FAQ]] as well.&lt;br /&gt;
&lt;br /&gt;
=== Queues ===&lt;br /&gt;
&lt;br /&gt;
==== GPC ====&lt;br /&gt;
&lt;br /&gt;
===== batch =====&lt;br /&gt;
&lt;br /&gt;
The batch queue is the default queue on the GPC allowing the user access to all the &lt;br /&gt;
resources for jobs between 15 minutes and upto 48 hours.  If a specific queue is not specified, &amp;lt;tt&amp;gt;-q&amp;lt;/tt&amp;gt; flag,&lt;br /&gt;
then a job is submitted to the batch queue.  Most jobs will run in batch, and user's can use&lt;br /&gt;
feature flags to determine the type of nodes they require.&lt;br /&gt;
&lt;br /&gt;
For example, to request two nodes anywhere on the GPC (QDR or DDR), use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For two nodes using DDR, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:ddr:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To get two nodes using QDR, instead, you would use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -l nodes=2:qdr:ppn=8,walltime=1:00:00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== debug =====&lt;br /&gt;
&lt;br /&gt;
A debug queue has been set up primarily for code developers to quickly test&lt;br /&gt;
and evaluate their codes and configurations without having to wait in the batch queue.  There are 10 nodes&lt;br /&gt;
currently reserved for the debug queue.  It has quite restrictive limits to promote high turnover&lt;br /&gt;
and availability thus a user can only use 2 nodes (16 cores) for 2 hours, to a maximum&lt;br /&gt;
of 8 nodes (64 cores) for 1/2 an hour and can only have one job in the debug queue at a time.  There&lt;br /&gt;
is no minimum time limit on this queue.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:ppn=8,walltime=1:00:00 -q debug -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== largemem =====&lt;br /&gt;
&lt;br /&gt;
The largemem queue is used for accessing one of two 16 core with 128 GB memory intel Xeon (non-nehalem) nodes. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=1:ppn=16,walltime=1:00:00 -q largemem -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TCS ====&lt;br /&gt;
&lt;br /&gt;
The TCS currently only has one queue, or class, in use called &amp;quot;verylong&amp;quot; and its only&lt;br /&gt;
limitation is that jobs must be under 48 hours.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#@ class           = verylong&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Job Info===&lt;br /&gt;
&lt;br /&gt;
To see all jobs queued on a system use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Three sections are shown; running, idle, and blocked.  Idle jobs are commonly referred to as queued jobs &lt;br /&gt;
as they meet all the requirements, however they are waiting for available resources.  Blocked jobs &lt;br /&gt;
are either caused by improper resource requests or more commonly by exceeding a user or groups allowable&lt;br /&gt;
resources.   For example if you are allowed to submit 10 jobs and you submit 20, the first 10&lt;br /&gt;
jobs will be submitted properly and either run right away or be queued, however the other 10 jobs&lt;br /&gt;
will be blocked and the jobs won't be submitted to the queue until one of the first 10 finishes.&lt;br /&gt;
&lt;br /&gt;
=== Available Resources ===&lt;br /&gt;
&lt;br /&gt;
Determining when your job will run can be tricky as it involves a combination of queue type, node type, system reservations, and job priority. The following commands are provided to help you figure out what resources are currently available, however they may not tell you exactly when your job will run for the aforementioned reasons.&lt;br /&gt;
&lt;br /&gt;
==== GPC ====&lt;br /&gt;
To show how many qdr nodes are currently free, use the show back fill command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showbf -f qdr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To show how many ddr nodes are free, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showbf -f ddr&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== TCS ====&lt;br /&gt;
To show how many TCS nodes are free, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showbf -c verylong&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example checking for a qdr job&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showbf -f qdr&lt;br /&gt;
Partition     Tasks  Nodes      Duration   StartOffset       StartDate&lt;br /&gt;
---------     -----  -----  ------------  ------------  --------------&lt;br /&gt;
ALL           14728   1839       7:36:23      00:00:00  00:23:37_09/24&lt;br /&gt;
ALL             256     30      INFINITY      00:00:00  00:23:37_09/24&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
shows that for jobs under 7:36:23 you can use 1839 nodes, but if you submit&lt;br /&gt;
a job over that time only 30 will be available.  In this case this is&lt;br /&gt;
due to a large reservation made my SciNet staff, but from a users point&lt;br /&gt;
of view, showbf tells you very simply what is available and at what time point.&lt;br /&gt;
In this case, a user may wish to set #PBS -l walltime=7:30:00 in their script, or add -l walltime=7:30:00 to their qsub command in order to ensure that the jobs backfill the reserved nodes.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' showbf shows currently available nodes, however just because nodes are available&lt;br /&gt;
doesn't mean that your job will start right away.  Job priority, system reservations &lt;br /&gt;
along with dedicated nodes, such as those for the debug queue, will alter when jobs &lt;br /&gt;
run so even if enough nodes appear &amp;quot;free&amp;quot;, it doesn't mean your job will actually run right &lt;br /&gt;
away.&lt;br /&gt;
&lt;br /&gt;
=== Job Submission ===&lt;br /&gt;
&lt;br /&gt;
==== Interactive ====&lt;br /&gt;
&lt;br /&gt;
On the GPC an interactive queue session can be requested using the following &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=2:ppn=8,walltime=1:00:00 -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In case you may experience longer than usual delays when requesting an interactive session, try specifying the &amp;quot;debug&amp;quot; queue:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub -l nodes=2:ppn=8,walltime=1:00:00 -I -q debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Non-interactive (Batch) ====&lt;br /&gt;
&lt;br /&gt;
For a non-interactive job submission you require a submission script formatted for the appropriate resource manger. Examples&lt;br /&gt;
are provided for the [[GPC_Quickstart#Submitting_A_Batch_Job | GPC]] and [[TCS_Quickstart#Submitting_A_Job | TCS]].&lt;br /&gt;
&lt;br /&gt;
=== Job Status ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qstat jobid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To see the status of all your jobs, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
showq -u username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qstat -u username&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your job appears to be blocked, you can try the following command&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ checkjob jobid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
which gives more verbose and often a bit confusing output.&lt;br /&gt;
&lt;br /&gt;
=== Cancel a Job ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ canceljob jobid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Accounting ===&lt;br /&gt;
&lt;br /&gt;
For any user with an NRAC/LRAC allocation, a special account with the Resource Allocation Project (RAP) identifier (RAPI) from Compute Canada Database (CCDB) is set up in order to access the allocated resources.  Please use the following instructions to run your job using your special allocation.  This is necessary both for accounting purposes as well as to assign the appropriate priority to your jobs.&lt;br /&gt;
&lt;br /&gt;
Each job run on the system will have a default RAP associated with it.  Most users already have their default RAP properly set.  However, if you have more than one allocation (different RAPs),  you may need/want to change your default RAP in order to charge your jobs to a particular RAP.&lt;br /&gt;
&lt;br /&gt;
==== Changing your default RAP ====&lt;br /&gt;
&lt;br /&gt;
# Go to the [https://portal.scinet.utoronto.ca portal], login with your SciNet username and password.&lt;br /&gt;
# Click on &amp;quot;Change SciNet default RAP&amp;quot; and change your default RAP.&lt;br /&gt;
&lt;br /&gt;
==== Specifying the RAP for GPC ====&lt;br /&gt;
&lt;br /&gt;
Alternatively, you may want to assign a RAP for each particular job you run.  There are two ways to specify an account for Moab/Torque: From the command line or inside the batch submission script.&lt;br /&gt;
&lt;br /&gt;
===== Command line =====&lt;br /&gt;
&lt;br /&gt;
Use the '-A RAPI' flag when you submit your job using qsub.  Note that the command line option will override the submission script if an account is specified on both the submission script and the command line.  &amp;quot;RAPI&amp;quot; is the RAP Identifier, e.g. abc-123-de.&lt;br /&gt;
&lt;br /&gt;
===== Submission Script =====&lt;br /&gt;
&lt;br /&gt;
Add a line in your submit script as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -A RAPI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please replace &amp;quot;RAPI&amp;quot; with your RAP Identifier.&lt;br /&gt;
&lt;br /&gt;
==== Specifiying the RAP for TCS ====&lt;br /&gt;
&lt;br /&gt;
Add a line in your submit script as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# @ account_no = RAPI&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please replace &amp;quot;RAPI&amp;quot; with your RAP Identifier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== User Stats ===&lt;br /&gt;
&lt;br /&gt;
Show current usage stats for a $USER&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showstats -u $USER&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reservations ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ showres&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Standard users can only see their reservations not other users or system ones.&lt;br /&gt;
To determine what is available a user can use &amp;quot;showbf&amp;quot;, it shows what resources are&lt;br /&gt;
available and at what time level, taking into account running jobs and all the reservations. Refer to the [[Moab#Available_Resources | Available Resources]] section of this page for more details.&lt;br /&gt;
&lt;br /&gt;
=== Job Dependencies ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you may want one job not to start until another job finishes, however&lt;br /&gt;
you would like to submit them both at the same time.  This can be done&lt;br /&gt;
using job dependencies on both the GPC and TCS, however the commands &lt;br /&gt;
are different due to the underlying resource managers being different.&lt;br /&gt;
&lt;br /&gt;
==== GPC ====&lt;br /&gt;
&lt;br /&gt;
Use the -W flag with the following syntax in your submission script to have this job not start&lt;br /&gt;
until the job with jobid or jobName (given with -N jobName) has successfully finished&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-W depend=afterok:{jobid | jobName}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More detailed syntax and examples can be found &lt;br /&gt;
[[http://docs.adaptivecomputing.com/torque/4-1-4/Content/topics/commands/qsub.htm#-W here]].&lt;br /&gt;
&lt;br /&gt;
==== TCS ====&lt;br /&gt;
&lt;br /&gt;
Loadleveler does job dependencies using what they call steps.&lt;br /&gt;
See the [[TCS_Quickstart#Steps | TCS Quickstart]] guide for an example.&lt;br /&gt;
&lt;br /&gt;
=== Adjusting Job Priority ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The ability to adjust job priorities downwards can also be of use to adjust relative priorities of jobs between users who are running jobs of the same allocation (eg, a default or NRAC allocation of the same PI).   Priorities are determined by how much of the time of that allocation been currently used, and all users using that account will have identical priorities.   This mechanism allows users to voluntarily reduce their priority to allow other users of the same allocation to run ahead of them.&lt;br /&gt;
&lt;br /&gt;
In principle, by adjusting a jobs priority downwards, you could reduce your jobs priority to the point that someone elses job entirely could go ahead of yours.  In practice, however, this is extremely unlikely.   Users with NRAC allocations have priorities that are extremely large positive numbers that depend on their allocation and how much of it they have already used during the past fairshare window (2 weeks); it is very unlikely that two groups would have priorities that are within 10 or 100 or 1000 of each other.&lt;br /&gt;
&lt;br /&gt;
Note that at the moment, we do not allow priorities to go negative; they are integers that can go no lower than 1.  (This may change in the future)  That means that users of accounts that have already used their full allocation during the current fairshare period (eg, over the past two weeks), and so whose priority would normally be negative but is capped at 1, can not lower their priority any further.   Similar, users with a `default' allocation have priority 1, and cannot lower their priorities any further.&lt;br /&gt;
&lt;br /&gt;
==== GPC ====&lt;br /&gt;
&lt;br /&gt;
Moab allows users to adjust their jobs' priority moderately downwards, with the &amp;lt;tt&amp;gt;-p&amp;lt;/tt&amp;gt; flag; that is, on a qsub line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qsub ... -p -10  JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
or in a script&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
#PBS -p -10&lt;br /&gt;
..&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The number used (-10 in the examples above) can be any negative number down to -1024.   &lt;br /&gt;
&lt;br /&gt;
The ability to adjust job priorities downwards can be useful when you are running a number of jobs and want some to enter the queue at higher priorities than others.   Note that if you absolutely require some jobs to start before others, you could use [[#Job Dependencies | job dependencies]] instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a job that is currently queued, one can adjust its priority with&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ qalter -p -10 JOBID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
This is OLD, pre-fairshare info&lt;br /&gt;
&lt;br /&gt;
==== TCS ====&lt;br /&gt;
&lt;br /&gt;
TCS users can adjust their priorities by putting the following line in their scripts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#@ user_priority = XXX&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the number can be between 0 (which is 50 below the default priority) to 1 (the default priority).&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Suspending a Running Job ===&lt;br /&gt;
&lt;br /&gt;
Separate from, and in addition to, the ability to place a hold on a queued job, you may want to suspend a running job. For example, you may want to test the timing of events in a weakly coupled parallel environment.&lt;br /&gt;
&lt;br /&gt;
==== GPC ====&lt;br /&gt;
&lt;br /&gt;
To suspend a job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsig -s STOP &amp;lt;jobid&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and to start it again:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsig -s CONT &amp;lt;jobid&amp;gt;.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scripts are suspendable by default, so you don't need to add any signal handling for this to work.&lt;br /&gt;
As far as we can tell, the result is identical to using fg and ctrl-Z (or kill -STOP &amp;lt;PID&amp;gt;) in an interactive run.&lt;br /&gt;
&lt;br /&gt;
More about using (and trapping) signals can be found on the [[Using Signals]] page.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== QDR Network Switch Affinity ===&lt;br /&gt;
&lt;br /&gt;
The QDR network is globally 5:1 oversubscribed, but on switch it has full 1:1 cross-section whereas the DDR is completely 1:1 non-blocking. &lt;br /&gt;
When a job is submitted to the GPC QDR nodes, the queuing system tries to fulfill the requirements with nodes on the same switch to improve network &lt;br /&gt;
performance. If not enough nodes are available on the same switch to satisfy the job request, the queue will then use any available nodes. This behavior can be changed &lt;br /&gt;
by using the submission flag &amp;quot; -l nodesetisoptional=false &amp;quot; which forces the queuing system to only&lt;br /&gt;
run this job on the same switch, thus the job will stay queued until enough nodes on one switch are available&lt;br /&gt;
to satisfy this request.  Note that the maximum number of nodes on one switch is 30, so &lt;br /&gt;
a request of greater than 30 nodes with this flag will never run. &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsub -l nodes=4:ppn=8,walltime=10:00,nodesetisoptional=false&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiple Job Submissions ===&lt;br /&gt;
&lt;br /&gt;
If you are doing doing batch processing of a number of similar jobs on the GPC, torque has a feature called job arrays that can be used to simplify this process. &lt;br /&gt;
By using the &amp;quot;-t 0-N&amp;quot; option on the command line during job submission or putting it in the job script file, #PBS -t 0-N, torque will expand your &lt;br /&gt;
single job submission into N+1 jobs and sets the environment variable PBS_ARRAYID equal to that jobs specific number, ie 0-N, for each job.  This &lt;br /&gt;
reduces the amount of calls to qsub, and can allow the user to have many less submission scripts. Job arrays also have the benefit of batching &lt;br /&gt;
groups of jobs allowing commands like qalter, qdel, qhold to work on all or a subset of the job array jobs with one command, instead of having &lt;br /&gt;
to run the command for each job.&lt;br /&gt;
&lt;br /&gt;
In the following example, 10 jobs are submitted using a single command &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsub -t 0-9 jobscript.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the submission script then modifies the job based on the PBS_ARRAYID.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#PBS -l nodes=1:ppn=8,walltime=10:00:00&lt;br /&gt;
#PBS -N array_jobs&lt;br /&gt;
&lt;br /&gt;
cd ${PBS_O_WORKDIR}&lt;br /&gt;
mkdir job.${PBS_ARRAYID}&lt;br /&gt;
cd job.${PBS_ARRAYID}&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Running job ${PBS_ARRAYID}&amp;quot;&lt;br /&gt;
mpirun -np 8 ./mycode &amp;gt;&amp;amp; array_job.${PBS_ARRAYID}.out&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The JOBID and the job name both get the additional ARRAYID added onto them in the form of a hyphen, ie JOBID-ARRAYID.  If for example you wanted&lt;br /&gt;
to cancel all the jobs in a job array you would use &amp;quot;qdel JOBID&amp;quot;, whereas if you wanted to cancel just one of the jobs you would use  &lt;br /&gt;
&amp;quot;qdel JOBID-ARRAYID&amp;quot;.  &lt;br /&gt;
&lt;br /&gt;
See [http://docs.adaptivecomputing.com/torque/4-1-3/Content/topics/2-jobs/multiJobSubmission.htm here] and [http://docs.adaptivecomputing.com/torque/4-1-4/Content/topics/commands/qsub.htm here]&lt;br /&gt;
for full details.&lt;/div&gt;</summary>
		<author><name>Nolta</name></author>
	</entry>
</feed>