<?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=Ejspence</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=Ejspence"/>
	<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php/Special:Contributions/Ejspence"/>
	<updated>2026-06-01T10:38:18Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.12</generator>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=LP_Benchmark&amp;diff=8758</id>
		<title>LP Benchmark</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=LP_Benchmark&amp;diff=8758"/>
		<updated>2017-02-21T14:15:10Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Nek5000 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Benchmark Guidelines=&lt;br /&gt;
&lt;br /&gt;
This site contains the benchmarks required for the 2017 University of Toronto Large Parallel System procurement.  The benchmark sources and specific run instructions are provided for each of the benchmarks below.  Information on baseline, optimization and reporting of the benchmark scores is described in Schedule 1 of the procurement document.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The Scalable System Improvement (SSI), as described by NERSC [http://www.nersc.gov/research-and-development/apex/apex-benchmarks/ssi/  here] is an aggregate performance measure that will be used in evaluating the application performance potential of the Offeror’s proposed system. !--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Large Parallel Benchmark (LPBM) =&lt;br /&gt;
&lt;br /&gt;
The following six (6) application benchmarks make up the Large Parallel Benchmark (LPBM).  Each benchmark includes the source codes, benchmark run requirements and the instructions for reporting.   &lt;br /&gt;
&lt;br /&gt;
== HPCG ==&lt;br /&gt;
&lt;br /&gt;
The High Performance Conjugate Gradients [http://www.hpcg-benchmark.org/ HPCG] benchmark is designed to exercise computational and data access patterns that closely match a broad set of important scientific applications, and to give incentive to computer system designers to invest in capabilities that will have impact on the collective performance of these applications.  &lt;br /&gt;
&lt;br /&gt;
HPCG is an open source benchmark developed by Mike Heroux, Jack Dongarra and Piotr Luszcze&lt;br /&gt;
&lt;br /&gt;
Source and LBPM specific instructions can be downloaded [https://wiki.scinet.utoronto.ca/wiki/images/5/57/Hpcg-lpbm.tar.gz here]&lt;br /&gt;
&lt;br /&gt;
== Nek5000 ==&lt;br /&gt;
&lt;br /&gt;
[https://nek5000.mcs.anl.gov/ Nek5000] is an open source, highly scalable and portable spectral element code designed to simulate a range of flow physics.  &lt;br /&gt;
&lt;br /&gt;
Developed at Argonne National Nek5000 is released under the terms of the GNU GPL license &lt;br /&gt;
&lt;br /&gt;
Source and LBPM specific instructions can be downloaded [https://wiki.scinet.utoronto.ca/wiki/images/a/a5/Nek5000_benchmark.tar.gz here]&lt;br /&gt;
&lt;br /&gt;
== WRF ==&lt;br /&gt;
&lt;br /&gt;
The Weather Research and Forecasting [http://www.wrf-model.org/index.php (WRF)] Model is a next-generation mesoscale numerical weather prediction system designed for both atmospheric research and operational forecasting needs.&lt;br /&gt;
&lt;br /&gt;
WRF is public domain, details  [http://www2.mmm.ucar.edu/wrf/users/public.html here] &lt;br /&gt;
&lt;br /&gt;
Source  can be downloaded [https://wiki.scinet.utoronto.ca/wiki/images/5/57/WRF3.7.1-LPBM.tar.gz here]&lt;br /&gt;
&lt;br /&gt;
Input files and LBPM specific instructions can be downloaded [https://wiki.scinet.utoronto.ca/wiki/images/5/57/WRF-LPBM-input.tar  here] (NOTE: 36G file)&lt;br /&gt;
&lt;br /&gt;
== NAMD ==&lt;br /&gt;
&lt;br /&gt;
[http://www.ks.uiuc.edu/Research/namd/ NAMD] is a parallel molecular dynamics code designed for high-performance simulation of large biomolecular systems.&lt;br /&gt;
&lt;br /&gt;
NAMD is Licensed under the University of Illinois NAMD Molecular Dynamics Software Non-Exclusive, Non-Commercial Use License&lt;br /&gt;
http://www.ks.uiuc.edu/Research/namd/license.html&lt;br /&gt;
&lt;br /&gt;
NAMD version 2.12 source, and/or binary packages, must be obtained directly from the Theoretical and Computational Biophysics Group at UIUC [http://www.ks.uiuc.edu/Development/Download/download.cgi?PackageName=NAMD here].&lt;br /&gt;
&lt;br /&gt;
LBPM specific instructions and input files can be downloaded [https://wiki.scinet.utoronto.ca/wiki/images/5/57/NAMD_LPBM.tar.gz here]&lt;br /&gt;
&lt;br /&gt;
== miniDFT ==&lt;br /&gt;
&lt;br /&gt;
[http://www.nersc.gov/research-and-development/apex/apex-benchmarks/minidft/ MiniDFT] is a plane-wave density functional theory (DFT) mini-app for modeling materials. Given an set of atomic coordinates and pseudopotentials, MiniDFT computes self-consistent solutions of the Kohn-Sham equations using either the LDA or PBE exchange-correlation functionals. For each iteration of the self-consistent field cycle, the Fock matrix is constructed and then diagonalized. To build the Fock matrix, Fast Fourier Transforms are used to transform orbitals from the plane wave basis ( where the kinetic energy is most readily computed ) to real space (where the potential is evaluated ) and back. Davidson diagonalization is used to compute the orbital energies and update the orbital coefficients.&lt;br /&gt;
&lt;br /&gt;
The MiniDFT mini-app was excised from the general-purpose Quantum Espresso (QE) code. Quantum Espresso is licensed per the GNU General Public License (GPL). A copy of the GPL is provided in the distribution's 'License' file.&lt;br /&gt;
&lt;br /&gt;
Source and LBPM specific instructions can be downloaded [https://wiki.scinet.utoronto.ca/wiki/images/5/57/MiniDFT-1.1.1.lpbm.tgz here]&lt;br /&gt;
&lt;br /&gt;
== SPEC MPI 2007 ==&lt;br /&gt;
 &lt;br /&gt;
SPEC MPI® 2007 focuses on performance of compute intensive applications using the Message-Passing Interface (MPI)&lt;br /&gt;
&lt;br /&gt;
Proponents should report the SPECmpiL_base2017 and optionally the SPECmpiL_peak2017 scores in the Schedule 2 LPBM spreadsheet for the closest number of whole nodes to achieve 2048 MPI ranks.&lt;br /&gt;
&lt;br /&gt;
Available from https://www.spec.org/mpi2007/&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Nek5000_benchmark.tar.gz&amp;diff=8757</id>
		<title>File:Nek5000 benchmark.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Nek5000_benchmark.tar.gz&amp;diff=8757"/>
		<updated>2017-02-21T14:11:54Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: uploaded a new version of &amp;amp;quot;File:Nek5000 benchmark.tar.gz&amp;amp;quot;: Nek5000 benchmark files for the LP RFP.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8451</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=8451"/>
		<updated>2016-07-13T13:18:22Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&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;
* [https://wiki.scinet.utoronto.ca/wiki/images/b/b1/Intro_R.pdf Slides]&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;
* [[Media:MPIss2016.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;
* [https://wiki.scinet.utoronto.ca/wiki/images/0/02/Parallel_R.pdf Slides]&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;
* [https://wiki.scinet.utoronto.ca/wiki/images/1/1a/Intro_Python.pdf Slides]&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;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/ss2016_visualization-I.pdf Morning Session]&lt;br /&gt;
&lt;br /&gt;
[https://support.scinet.utoronto.ca/~mponce/ss2016/ss2016_visualization-II.pdf Afternoon Session]&lt;br /&gt;
&lt;br /&gt;
======Datasets======&lt;br /&gt;
Morning datasets and scripts: [[Media:Data_scripts.tar.gz]]&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro_Python.pdf&amp;diff=8450</id>
		<title>File:Intro Python.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro_Python.pdf&amp;diff=8450"/>
		<updated>2016-07-13T13:17:40Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Slides for Into Python session for the 2016 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for Into Python session for the 2016 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8443</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=8443"/>
		<updated>2016-07-12T17:03:10Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
&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;
* [https://wiki.scinet.utoronto.ca/wiki/images/b/b1/Intro_R.pdf Slides]&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;
* [[Media:MPIss2016.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;
* [https://wiki.scinet.utoronto.ca/wiki/images/0/02/Parallel_R.pdf Slides]&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8442</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=8442"/>
		<updated>2016-07-12T17:02:48Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
&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;
* [https://wiki.scinet.utoronto.ca/wiki/images/b/b1/Intro_R.pdf Slides]&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;
* [[Media:MPIss2016.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;
* [https://wiki.scinet.utoronto.ca/wiki/images/0/02/Parallel_R.pdf Slides]&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8441</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=8441"/>
		<updated>2016-07-12T17:02:27Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
* [https://wiki.scinet.utoronto.ca/wiki/images/b/b1/Intro_R.pdf Slides]&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;
* [[Media:MPIss2016.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;
* [https://wiki.scinet.utoronto.ca/wiki/images/0/02/Parallel_R.pdf Slides]&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8440</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=8440"/>
		<updated>2016-07-12T17:01:57Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
* [https://wiki.scinet.utoronto.ca/wiki/images/b/b1/Intro_R.pdf Slides]&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;
* [[Media:MPIss2016.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;
* [https://wiki.scinet.utoronto.ca/wiki/images/0/02/Parallel_R.pdf Slides]&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Parallel_R.pdf&amp;diff=8439</id>
		<title>File:Parallel R.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Parallel_R.pdf&amp;diff=8439"/>
		<updated>2016-07-12T17:00:32Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Slides for the Parallel R session of the 2016 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for the Parallel R session of the 2016 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8432</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=8432"/>
		<updated>2016-07-12T12:40:44Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
* [https://wiki.scinet.utoronto.ca/wiki/images/b/b1/Intro_R.pdf Slides]&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;
* [https://support.scinet.utoronto.ca/~northrup/SS2016/MPIss2016.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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8431</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=8431"/>
		<updated>2016-07-12T12:39:00Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
* [https://wiki.scinet.utoronto.ca/wiki/index.php/File:Intro_R.pdf Slides]&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;
* [https://support.scinet.utoronto.ca/~northrup/SS2016/MPIss2016.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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro_R.pdf&amp;diff=8430</id>
		<title>File:Intro R.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro_R.pdf&amp;diff=8430"/>
		<updated>2016-07-12T12:38:15Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Slides for the &amp;quot;R for Data Science&amp;quot; class in the 2016 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for the &amp;quot;R for Data Science&amp;quot; class in the 2016 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8380</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=8380"/>
		<updated>2016-07-06T15:29:20Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Programming Shared Memory Systems with OpenMP */&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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
----&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8379</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=8379"/>
		<updated>2016-07-06T15:29:08Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Introduction to the Linux Shell */&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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
----&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8378</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=8378"/>
		<updated>2016-07-06T15:27:14Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Details */&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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
----&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8377</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=8377"/>
		<updated>2016-07-06T15:24:36Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Visualization */&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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
----&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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 16, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 16, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8376</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=8376"/>
		<updated>2016-07-06T15:23:05Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
----&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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 16, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 16, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 3G8&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8375</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=8375"/>
		<updated>2016-07-06T15:19:55Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
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;
----&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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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 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 16, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 16, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&lt;br /&gt;
&lt;br /&gt;
''Instructor''&lt;br /&gt;
&lt;br /&gt;
Dr. Ramses von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8374</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=8374"/>
		<updated>2016-07-06T15:17:18Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
----&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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 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 16, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 16, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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 von Zan (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;
MC 252&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;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;
&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&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;
MC 254&amp;lt;br /&amp;gt;&lt;br /&gt;
5 King's College Road&amp;lt;br /&amp;gt;&lt;br /&gt;
Toronto, ON M5S 1A4&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8373</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=8373"/>
		<updated>2016-07-06T14:59:26Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
----&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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 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 16, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 16, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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 von Zan (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;
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;
An example of a complete visualization session in VisIt: [http://www.scinethpc.ca/~mponce/ss2015/noise-example_VisIt.tar.gz VisIt session] (un-tar this file and load the session from the File/Menu in VisIt using &amp;quot;Restore session with sources...&amp;quot;, then choose your local &amp;quot;noise.silo&amp;quot; file to be used within the session).&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8372</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=8372"/>
		<updated>2016-07-06T14:52:44Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
----&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
MC 254&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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 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 16, 2016, 09:30 - 12:30&amp;lt;br /&amp;gt;&lt;br /&gt;
Wednesday July 16, 2016, 13:30 - 16:30&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
&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;
An example of a complete visualization session in VisIt: [http://www.scinethpc.ca/~mponce/ss2015/noise-example_VisIt.tar.gz VisIt session] (un-tar this file and load the session from the File/Menu in VisIt using &amp;quot;Restore session with sources...&amp;quot;, then choose your local &amp;quot;noise.silo&amp;quot; file to be used within the session).&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8371</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=8371"/>
		<updated>2016-07-06T14:42:42Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&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;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
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;
----&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, 09:30 - 12:30&lt;br /&gt;
&lt;br /&gt;
''Location''&lt;br /&gt;
&lt;br /&gt;
MC 252&lt;br /&gt;
&lt;br /&gt;
5 King's College Road&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;
&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;
&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;
===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;
&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;
An example of a complete visualization session in VisIt: [http://www.scinethpc.ca/~mponce/ss2015/noise-example_VisIt.tar.gz VisIt session] (un-tar this file and load the session from the File/Menu in VisIt using &amp;quot;Restore session with sources...&amp;quot;, then choose your local &amp;quot;noise.silo&amp;quot; file to be used within the session).&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8370</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=8370"/>
		<updated>2016-07-06T14:35:35Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&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;
An example of a complete visualization session in VisIt: [http://www.scinethpc.ca/~mponce/ss2015/noise-example_VisIt.tar.gz VisIt session] (un-tar this file and load the session from the File/Menu in VisIt using &amp;quot;Restore session with sources...&amp;quot;, then choose your local &amp;quot;noise.silo&amp;quot; file to be used within the session).&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8369</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=8369"/>
		<updated>2016-07-06T14:34:02Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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 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;
&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;
An example of a complete visualization session in VisIt: [http://www.scinethpc.ca/~mponce/ss2015/noise-example_VisIt.tar.gz VisIt session] (un-tar this file and load the session from the File/Menu in VisIt using &amp;quot;Restore session with sources...&amp;quot;, then choose your local &amp;quot;noise.silo&amp;quot; file to be used within the session).&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2016_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=8368</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=8368"/>
		<updated>2016-07-06T14:31:20Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Created page with &amp;quot;File:Summerschool_hpc_2015.gif   ===About===  The 2015 Ontario Summer School on High Performance Computing, whose second installment of the year will be hosted by SciNet, ...&amp;quot;&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;
&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;
An example of a complete visualization session in VisIt: [http://www.scinethpc.ca/~mponce/ss2015/noise-example_VisIt.tar.gz VisIt session] (un-tar this file and load the session from the File/Menu in VisIt using &amp;quot;Restore session with sources...&amp;quot;, then choose your local &amp;quot;noise.silo&amp;quot; file to be used within the session).&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&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;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=8307</id>
		<title>MATLAB</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=8307"/>
		<updated>2016-05-24T15:05:39Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Creating a MATLAB executable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
We often get questions about running MATLAB on GPC.  With a few exceptions for compilers and debuggers, SciNet does not purchase licenses for commercial software.  As such, SciNet does not have a license for MATLAB, nor will it in the future.  If users wish to run MATLAB they must supply their own license, or explore alternative options.  This page gives information about the options for getting your MATLAB code to run, in recommended order. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Not using MATLAB ==&lt;br /&gt;
&lt;br /&gt;
Users can attempt to run MATLAB code using the open-source program Octave, accessible through the octave module.  Though there are some differences between the two programs, Octave has been designed to interpret MATLAB code and can often be used in place of MATLAB.  If your MATLAB code does not use some of the more-fancy MATLAB toolboxes, you may be able to get away with using Octave instead.  Be sure to test your implementation in Octave thoroughly before committing to this option.&lt;br /&gt;
&lt;br /&gt;
It is worth observing that, while convenient for prototyping and running on a single workstation, there are reasons to avoid using MATLAB for larger HPC/ARC projects.  These include the prohibitive license cost for large-scale work, poor performance at scale, and portability issues.  If you can switch to a license-free option, such as Python, it may be worth the effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a MATLAB executable ==&lt;br /&gt;
&lt;br /&gt;
If MATLAB must be used, you may be able to compile your MATLAB code into a stand-alone executable, and run this on a GPC compute node.  The version of MATLAB being used will require a compiler license, and the compilation must be done on a Linux machine.  Once the compilation is done, the executable can be copied to SciNet, and run using the MATLAB Compiler Runtime (MCR), which can be accessed using the MCR module.  The MCR used must be the same version of MATLAB as the compiler.  If the version of MCR that you need is not listed among the MCR module versions, contact us and we will install the version which you require.&lt;br /&gt;
&lt;br /&gt;
Here is an example script which uses the MCR:&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=1:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test_matlab&lt;br /&gt;
#PBS -q debug&lt;br /&gt;
&lt;br /&gt;
# load modules (gcc is needed for MCR/2015a)&lt;br /&gt;
module load Xlibraries gcc/5.2.0 MCR/2015a&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory from which the job was submitted&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# Directory for the MCR to use to write temporary files.  Use whatever directory you wish.&lt;br /&gt;
mkdir -p $SCRATCH/temp&lt;br /&gt;
export MCR_CACHE_ROOT=$SCRATCH/temp&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND (note that the MATLAB script may require that LD_LIBRARY_PATH be added&lt;br /&gt;
# to the script arguments).  Note that, if the calculations are serial, you must bundle 8 such&lt;br /&gt;
# calculations together for production runs!&lt;br /&gt;
./run_myscript.sh $MCR:$LD_LIBRARY_PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tunnelling to a license server ==&lt;br /&gt;
&lt;br /&gt;
If you have access to a non-SciNet MATLAB license server, and have installed MATLAB in your $HOME directory, you can setup your submission script to access the external license server.  The following lines should be added to the beginning of your submission script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PORT=XXX                                         # port number of the license server&lt;br /&gt;
LICENSE_IP=AAA.BBB.CCC.DDD                       # IP address of the license server&lt;br /&gt;
ssh gpc01 -L${PORT}:${LICENSE_IP}:${PORT} -N &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This last line will tunnel the port from the compute node back to the license server, through gpc01.  The port number and IP address of the licence server must be supplied by the system administrator of the license server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a different Consortium ==&lt;br /&gt;
&lt;br /&gt;
Both [https://www.sharcnet.ca/my/software/show/54 Sharcnet] and [https://www.westgrid.ca/support/software/matlab Westgrid] have purchased different types of MATLAB licenses.  Users can contact those consortia if they wish to attempt to run on those systems.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=8306</id>
		<title>MATLAB</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=8306"/>
		<updated>2016-05-24T15:04:47Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Creating a MATLAB executable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
We often get questions about running MATLAB on GPC.  With a few exceptions for compilers and debuggers, SciNet does not purchase licenses for commercial software.  As such, SciNet does not have a license for MATLAB, nor will it in the future.  If users wish to run MATLAB they must supply their own license, or explore alternative options.  This page gives information about the options for getting your MATLAB code to run, in recommended order. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Not using MATLAB ==&lt;br /&gt;
&lt;br /&gt;
Users can attempt to run MATLAB code using the open-source program Octave, accessible through the octave module.  Though there are some differences between the two programs, Octave has been designed to interpret MATLAB code and can often be used in place of MATLAB.  If your MATLAB code does not use some of the more-fancy MATLAB toolboxes, you may be able to get away with using Octave instead.  Be sure to test your implementation in Octave thoroughly before committing to this option.&lt;br /&gt;
&lt;br /&gt;
It is worth observing that, while convenient for prototyping and running on a single workstation, there are reasons to avoid using MATLAB for larger HPC/ARC projects.  These include the prohibitive license cost for large-scale work, poor performance at scale, and portability issues.  If you can switch to a license-free option, such as Python, it may be worth the effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a MATLAB executable ==&lt;br /&gt;
&lt;br /&gt;
If MATLAB must be used, you may be able to compile your MATLAB code into a stand-alone executable, and run this on a GPC compute node.  The version of MATLAB being used will require a compiler license, and the compilation must be done on a Linux machine.  Once the compilation is done, the executable can be copied to SciNet, and run using the MATLAB Compiler Runtime (MCR), which can be accessed using the MCR module.  The MCR used must be the same version of MATLAB as the compiler.  If the version of MCR that you need is not listed among the MCR module versions, contact us and we will install the version which you require.&lt;br /&gt;
&lt;br /&gt;
Here is an example script which uses the MCR:&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=1:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test_matlab&lt;br /&gt;
&lt;br /&gt;
# load modules (gcc is needed for MCR/2015a)&lt;br /&gt;
module load Xlibraries gcc/5.2.0 MCR/2015a&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory from which the job was submitted&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# Directory for the MCR to use to write temporary files.  Use whatever directory you wish.&lt;br /&gt;
mkdir -p $SCRATCH/temp&lt;br /&gt;
export MCR_CACHE_ROOT=$SCRATCH/temp&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND (note that the MATLAB script may require that LD_LIBRARY_PATH be added&lt;br /&gt;
# to the script arguments).  Note that, if the calculations are serial, you must bundle 8 such&lt;br /&gt;
# calculations together for production runs!&lt;br /&gt;
./run_myscript.sh $MCR:$LD_LIBRARY_PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tunnelling to a license server ==&lt;br /&gt;
&lt;br /&gt;
If you have access to a non-SciNet MATLAB license server, and have installed MATLAB in your $HOME directory, you can setup your submission script to access the external license server.  The following lines should be added to the beginning of your submission script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PORT=XXX                                         # port number of the license server&lt;br /&gt;
LICENSE_IP=AAA.BBB.CCC.DDD                       # IP address of the license server&lt;br /&gt;
ssh gpc01 -L${PORT}:${LICENSE_IP}:${PORT} -N &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This last line will tunnel the port from the compute node back to the license server, through gpc01.  The port number and IP address of the licence server must be supplied by the system administrator of the license server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a different Consortium ==&lt;br /&gt;
&lt;br /&gt;
Both [https://www.sharcnet.ca/my/software/show/54 Sharcnet] and [https://www.westgrid.ca/support/software/matlab Westgrid] have purchased different types of MATLAB licenses.  Users can contact those consortia if they wish to attempt to run on those systems.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=8305</id>
		<title>MATLAB</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=8305"/>
		<updated>2016-05-24T14:55:22Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
We often get questions about running MATLAB on GPC.  With a few exceptions for compilers and debuggers, SciNet does not purchase licenses for commercial software.  As such, SciNet does not have a license for MATLAB, nor will it in the future.  If users wish to run MATLAB they must supply their own license, or explore alternative options.  This page gives information about the options for getting your MATLAB code to run, in recommended order. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Not using MATLAB ==&lt;br /&gt;
&lt;br /&gt;
Users can attempt to run MATLAB code using the open-source program Octave, accessible through the octave module.  Though there are some differences between the two programs, Octave has been designed to interpret MATLAB code and can often be used in place of MATLAB.  If your MATLAB code does not use some of the more-fancy MATLAB toolboxes, you may be able to get away with using Octave instead.  Be sure to test your implementation in Octave thoroughly before committing to this option.&lt;br /&gt;
&lt;br /&gt;
It is worth observing that, while convenient for prototyping and running on a single workstation, there are reasons to avoid using MATLAB for larger HPC/ARC projects.  These include the prohibitive license cost for large-scale work, poor performance at scale, and portability issues.  If you can switch to a license-free option, such as Python, it may be worth the effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a MATLAB executable ==&lt;br /&gt;
&lt;br /&gt;
If MATLAB must be used, you may be able to compile your MATLAB code into a stand-alone executable, and run this on a GPC compute node.  The version of MATLAB being used will require a compiler license, and the compilation must be done on a Linux machine.  Once the compilation is done, the executable can be copied to SciNet, and run using the MATLAB Compiler Runtime (MCR), which can be accessed using the MCR module.  The MCR used must be the same version of MATLAB as the compiler.  If the version of MCR that you need is not listed among the MCR module versions, contact us and we will install the version which you require.&lt;br /&gt;
&lt;br /&gt;
Here is an example script which uses the MCR:&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=1:ppn=8,walltime=1:00:00&lt;br /&gt;
#PBS -N test_matlab&lt;br /&gt;
&lt;br /&gt;
# load modules (gcc is needed for MCR/2015a)&lt;br /&gt;
module load Xlibraries gcc/5.2.0 MCR/2015a&lt;br /&gt;
&lt;br /&gt;
# DIRECTORY TO RUN - $PBS_O_WORKDIR is directory from which the job was submitted&lt;br /&gt;
cd $PBS_O_WORKDIR&lt;br /&gt;
&lt;br /&gt;
# EXECUTION COMMAND (note that the MATLAB script may require that LD_LIBRARY_PATH be added&lt;br /&gt;
# to the script arguments).  Note that, if the calculations are serial, you must bundle 8 such&lt;br /&gt;
# calculations together for production runs!&lt;br /&gt;
./run_myscript.sh $MCR:$LD_LIBRARY_PATH&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tunnelling to a license server ==&lt;br /&gt;
&lt;br /&gt;
If you have access to a non-SciNet MATLAB license server, and have installed MATLAB in your $HOME directory, you can setup your submission script to access the external license server.  The following lines should be added to the beginning of your submission script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PORT=XXX                                         # port number of the license server&lt;br /&gt;
LICENSE_IP=AAA.BBB.CCC.DDD                       # IP address of the license server&lt;br /&gt;
ssh gpc01 -L${PORT}:${LICENSE_IP}:${PORT} -N &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This last line will tunnel the port from the compute node back to the license server, through gpc01.  The port number and IP address of the licence server must be supplied by the system administrator of the license server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a different Consortium ==&lt;br /&gt;
&lt;br /&gt;
Both [https://www.sharcnet.ca/my/software/show/54 Sharcnet] and [https://www.westgrid.ca/support/software/matlab Westgrid] have purchased different types of MATLAB licenses.  Users can contact those consortia if they wish to attempt to run on those systems.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Scheduler&amp;diff=8091</id>
		<title>Scheduler</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Scheduler&amp;diff=8091"/>
		<updated>2015-11-16T15:44:49Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Cancel a Job */&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;
To cancel all of your jobs, try this command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ canceljob `showq | grep yourusername | cut -c -8` &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 has successfully finished&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-W depend=afterok:jobid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This functionality also allows to add dependencies on several jobs, eg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-W depend=afterok:jobid1:jobid2:...:jobidN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which in this case, the job will not start until all the jobs jobid1, jobid2, ..., jobidN have successfully finished.  Note that the length of the string &amp;quot;afterok:jobid1:jobid2...:jobidN&amp;quot; cannot exceed 1024 characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More detailed syntax, dependency options 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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Job Tools and Scripts ===&lt;br /&gt;
&lt;br /&gt;
The following list of commands and scripts are useful at the moment of monitoring and managing submissions and jobs.&lt;br /&gt;
We have discussed them in a recent [https://support.scinet.utoronto.ca/education/go.php/183/file_storage/index.php/download/1/files%5B%5D/3702/ TechTalk].&lt;br /&gt;
More details can be found [https://wiki.scinet.utoronto.ca/wiki/index.php/SciNet_Command_Line_Utilities here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- showq --&amp;gt;&lt;br /&gt;
&amp;lt;!-- showbf --&amp;gt;&lt;br /&gt;
&amp;lt;!-- checkjob --&amp;gt;&lt;br /&gt;
&amp;lt;!-- showstats --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
showstart jobID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition, the following scripts are available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diskUsage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
informs about the user and group file system usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
quota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
offers a shorter version for the user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
similar to showq, summarizes by user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobperf jobID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
informs about the performance per-node of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobError &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays on realtime the error output of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobOutput &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays on realtime the standard output of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobcd &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
allows users to quickly move into the working directory of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobscript &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays the submission script used when submitting a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobssh &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
allows users to connect to the head-node of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobtop &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
allows users to &amp;quot;top&amp;quot; on the head-node of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobtree [user]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays the jobs tree of dependencies for a given user&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobdep &amp;lt;jobID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays the dependencies of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobperf &amp;lt;jobID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays current performance statistics of a given job (must be running).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Monitoring Jobs===&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/images/a/a0/TechTalkJobMonitoring.pdf Tech Talk on Monitoring Jobs]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Checking the memory usage from jobs===&lt;br /&gt;
&lt;br /&gt;
In many occasions it can be really useful to take a look at how much memory your job is using while it is running.&lt;br /&gt;
There a couple of ways to do so:&lt;br /&gt;
&lt;br /&gt;
1) using some of the [https://wiki.scinet.utoronto.ca/wiki/index.php/SciNet_Command_Line_Utilities command line utilities] we have developed, e.g: by using the '''jobperf''' or '''jobtop''' utilities, it will allow you to check the job performance and head's node utilization respectively.&lt;br /&gt;
&lt;br /&gt;
2) ''ssh'' into the nodes where your job is being run and check for memory usage and system stats right there. For instance, trying the 'top' or 'free' commands, in those nodes.&lt;br /&gt;
&lt;br /&gt;
Also, it always a good a idea and strongly encouraged to inspect the standard output-log and error-log generated for your job submissions.&lt;br /&gt;
These files are named respectively: ''JobName.{o|e}jobIdNumber''; where ''JobName'' is the name you gave to the job (via the '-N' PBS flag) and ''JobIdNumber'' is the id number of the job.&lt;br /&gt;
These files are saved in the working directory after the job is finished, but they can be also accessed on real-time using the '''jobError''' and '''jobOutput''' [https://wiki.scinet.utoronto.ca/wiki/index.php/SciNet_Command_Line_Utilities command line utilities].&lt;br /&gt;
&lt;br /&gt;
Other related topics to memory usage: &amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/index.php/GPC_Quickstart#Ram_Disk Using Ram Disk]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/index.php/GPC_Quickstart#Memory_Configuration Different Memory Configuration nodes]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[https://wiki.scinet.utoronto.ca/wiki/index.php/FAQ#Monitoring_jobs_in_the_queue Monitoring Jobs in the Queue]&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7884</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=7884"/>
		<updated>2015-07-15T14:16:52Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &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;
&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/HPC_intro-2015.pdf Slides]&lt;br /&gt;
&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;
&lt;br /&gt;
&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;
To come&lt;br /&gt;
&lt;br /&gt;
&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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7883</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=7883"/>
		<updated>2015-07-15T14:04:50Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
* [[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;
The slides for this class can be found [http://support.scinet.utoronto.ca/~northrup/SS2015 here].&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;
===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;
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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7874</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=7874"/>
		<updated>2015-07-14T13:11:06Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
* [[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;
[[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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Parallel-Python.pdf&amp;diff=7873</id>
		<title>File:Parallel-Python.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Parallel-Python.pdf&amp;diff=7873"/>
		<updated>2015-07-14T13:10:38Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Slides for the Parallel Python class at the 2015 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for the Parallel Python class at the 2015 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7872</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=7872"/>
		<updated>2015-07-14T12:19:54Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
* [[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;
[[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;
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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro-Python.pdf&amp;diff=7871</id>
		<title>File:Intro-Python.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro-Python.pdf&amp;diff=7871"/>
		<updated>2015-07-14T12:17:39Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Slides for the Scientific Computing with Python class for the 2015 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for the Scientific Computing with Python class for the 2015 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7861</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=7861"/>
		<updated>2015-07-13T12:40:07Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7860</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=7860"/>
		<updated>2015-07-13T12:39:21Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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/index.php/File: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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Parallel-R.pdf&amp;diff=7859</id>
		<title>File:Parallel-R.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Parallel-R.pdf&amp;diff=7859"/>
		<updated>2015-07-13T12:37:41Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Slides for the Parallel R class in the 2015 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Slides for the Parallel R class in the 2015 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7858</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=7858"/>
		<updated>2015-07-13T12:36:54Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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;
[[File:file.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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7857</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=7857"/>
		<updated>2015-07-13T12:36:24Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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;
[File:file.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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7856</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=7856"/>
		<updated>2015-07-13T12:35:53Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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/7/73/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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7855</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=7855"/>
		<updated>2015-07-13T12:35:21Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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;
[file.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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro-R.pdf&amp;diff=7854</id>
		<title>File:Intro-R.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro-R.pdf&amp;diff=7854"/>
		<updated>2015-07-13T12:31:56Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: uploaded a new version of &amp;amp;quot;File:Intro-R.pdf&amp;amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Data analysis with R slides for the 2015 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=2015_Ontario_Summer_School_for_High_Performance_Computing_Central&amp;diff=7853</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=7853"/>
		<updated>2015-07-13T12:28:46Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* 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;
[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;
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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro-R.pdf&amp;diff=7852</id>
		<title>File:Intro-R.pdf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=File:Intro-R.pdf&amp;diff=7852"/>
		<updated>2015-07-13T12:27:57Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: Data analysis with R slides for the 2015 Summer School.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Data analysis with R slides for the 2015 Summer School.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=Scheduler&amp;diff=7823</id>
		<title>Scheduler</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=Scheduler&amp;diff=7823"/>
		<updated>2015-07-03T13:29:23Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* GPC */&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 has successfully finished&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-W depend=afterok:jobid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This functionality also allows to add dependencies on several jobs, eg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-W depend=afterok:jobid1:jobid2:...:jobidN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which in this case, the job will not start until all the jobs jobid1, jobid2, ..., jobidN have successfully finished.  Note that the length of the string &amp;quot;afterok:jobid1:jobid2...:jobidN&amp;quot; cannot exceed 1024 characters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
More detailed syntax, dependency options 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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Job Tools and Scripts ===&lt;br /&gt;
&lt;br /&gt;
The following list of commands and scripts are useful at the moment of monitoring and managing submissions and jobs.&lt;br /&gt;
We have discussed them in a recent [https://support.scinet.utoronto.ca/education/go.php/183/file_storage/index.php/download/1/files%5B%5D/3702/ TechTalk].&lt;br /&gt;
More details can be found [https://wiki.scinet.utoronto.ca/wiki/index.php/SciNet_Command_Line_Utilities here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- showq --&amp;gt;&lt;br /&gt;
&amp;lt;!-- showbf --&amp;gt;&lt;br /&gt;
&amp;lt;!-- checkjob --&amp;gt;&lt;br /&gt;
&amp;lt;!-- showstats --&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
showstart jobID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition by loading the '''module extras''', the following scripts are available:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diskUsage&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
informs about the user and group file system usage.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
quota&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
offers a shorter version for the user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsum&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
similar to showq, summarizes by user.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobperf jobID&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
informs about the performance per-node of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobError &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays on realtime the error output of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobOutput &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays on realtime the standard output of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobcd &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
allows users to quickly move into the working directory of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobscript &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays the submission script used when submitting a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobssh &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
allows users to connect to the head-node of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobtop &amp;lt;jobID | jobNAME&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
allows users to &amp;quot;top&amp;quot; on the head-node of a given job.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobtree [user]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays the jobs tree of dependencies for a given user&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
jobdep &amp;lt;jobID&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
displays the dependencies of a given job.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=FAQ&amp;diff=7806</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=FAQ&amp;diff=7806"/>
		<updated>2015-06-16T13:41:22Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Monitoring jobs in the queue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The Basics==&lt;br /&gt;
===Whom do I contact for support?===&lt;br /&gt;
&lt;br /&gt;
Whom do I contact if I have problems or questions about how to use the SciNet systems?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
E-mail [mailto:support@scinet.utoronto.ca &amp;lt;support@scinet.utoronto.ca&amp;gt;]  &lt;br /&gt;
&lt;br /&gt;
In your email, please include the following information:&lt;br /&gt;
&lt;br /&gt;
* your username on SciNet&lt;br /&gt;
* the cluster that your question pertains to (GPC or TCS; SciNet is not a cluster!),&lt;br /&gt;
* any relevant error messages&lt;br /&gt;
* the commands you typed before the errors occured&lt;br /&gt;
* the path to your code (if applicable)&lt;br /&gt;
* the location of the job scripts (if applicable)&lt;br /&gt;
* the directory from which it was submitted (if applicable)&lt;br /&gt;
* a description of what it is supposed to do (if applicable)&lt;br /&gt;
* if your problem is about connecting to SciNet, the type of computer you are connecting from.&lt;br /&gt;
&lt;br /&gt;
Note that your password should never, never, never be to sent to us, even if your question is about your account.&lt;br /&gt;
&lt;br /&gt;
Try to avoid sending email only to specific individuals at SciNet. Your chances of a quick reply increase significantly if you email our team!&lt;br /&gt;
&lt;br /&gt;
===What does ''code scaling'' mean?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please see [[Introduction_To_Performance#Parallel_Speedup|A Performance Primer]]&lt;br /&gt;
&lt;br /&gt;
===What do you mean by ''throughput''?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please see [[Introduction_To_Performance#Throughput|A Performance Primer]].&lt;br /&gt;
&lt;br /&gt;
Here is a simple example:&lt;br /&gt;
&lt;br /&gt;
Suppose you need to do 10 computations.  Say each of these runs for&lt;br /&gt;
1 day on 8 cores, but they take &amp;quot;only&amp;quot; 18 hours on 16 cores.  What is the&lt;br /&gt;
fastest way to get all 10 computations done - as 8-core jobs or as&lt;br /&gt;
16-core jobs?  Let us assume you have 2 nodes at your disposal.&lt;br /&gt;
The answer, after some simple arithmetic, is that running your 10&lt;br /&gt;
jobs as 8-core jobs will take 5 days, whereas if you ran them&lt;br /&gt;
as 16-core jobs it would take 7.5 days.  Take your own conclusions...&lt;br /&gt;
&lt;br /&gt;
===I changed my .bashrc/.bash_profile and now nothing works===&lt;br /&gt;
&lt;br /&gt;
The default startup scripts provided by SciNet, and guidelines for them, can be found [[Important_.bashrc_guidelines|here]].  Certain things - like sourcing &amp;lt;tt&amp;gt;/etc/profile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and &amp;lt;tt&amp;gt;/etc/bashrc&amp;lt;/tt&amp;gt; are ''required'' for various SciNet routines to work!   &lt;br /&gt;
&lt;br /&gt;
If the situation is so bad that you cannot even log in, please send email [mailto:support@scinet.utoronto.ca support].&lt;br /&gt;
&lt;br /&gt;
===Could I have my login shell changed to (t)csh?===&lt;br /&gt;
&lt;br /&gt;
The login shell used on our systems is bash. While the tcsh is available on the GPC and the TCS, we do not support it as the default login shell at present.  So &amp;quot;chsh&amp;quot; will not work, but you can always run tcsh interactively. Also, csh scripts will be executed correctly provided that they have the correct &amp;quot;shebang&amp;quot; &amp;lt;tt&amp;gt;#!/bin/tcsh&amp;lt;/tt&amp;gt; at the top.&lt;br /&gt;
&lt;br /&gt;
===How can I run Matlab / IDL / Gaussian / my favourite commercial software at SciNet?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Because SciNet serves such a disparate group of user communities, there is just no way we can buy licenses for everyone's commercial package.   The only commercial software we have purchased is that which in principle can benefit everyone -- fast compilers and math libraries (Intel's on GPC, and IBM's on TCS).&lt;br /&gt;
&lt;br /&gt;
If your research group requires a commercial package that you already have or are willing to buy licenses for, contact us at [mailto:support@scinet.utoronto.ca support@scinet] and we can work together to find out if it is feasible to implement the packages licensing arrangement on the SciNet clusters, and if so, what is the the best way to do it.&lt;br /&gt;
&lt;br /&gt;
Note that it is important that you contact us before installing commercially licensed software on SciNet machines, even if you have a way to do it in your own directory without requiring sysadmin intervention.   It puts us in a very awkward position if someone is found to be running unlicensed or invalidly licensed software on our systems, so we need to be aware of what is being installed where.&lt;br /&gt;
&lt;br /&gt;
===Do you have a recommended ssh program that will allow scinet access from Windows machines?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Ssh#SSH_for_Windows_Users | SSH for Windows users]] programs we recommend are:&lt;br /&gt;
&lt;br /&gt;
* [http://mobaxterm.mobatek.net/en/ MobaXterm] is a tabbed ssh client with some Cygwin tools, including ssh and X, all wrapped up into one executable.&lt;br /&gt;
* [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY]  - this is a terminal for windows that connects via ssh.  It is a quick install and will get you up and running quickly.&amp;lt;br/&amp;gt; '''WARNING:''' Make sure you download putty from the official website, because there are &amp;quot;trojanized&amp;quot; versions of putty around that will send your login information to a site in Russia (as reported [http://blogs.cisco.com/security/trojanized-putty-software here]).&amp;lt;br&amp;gt;To set up your passphrase protected ssh key with putty, see [http://the.earth.li/~sgtatham/putty/0.61/htmldoc/Chapter8.html#pubkey here].&lt;br /&gt;
* [http://www.cygwin.com/ CygWin] - this is a whole linux-like environment for windows, which also includes an X window server so that you can display remote windows on your desktop.  Make sure you include the openssh and X window system in the installation for full functionality.  This is recommended if you will be doing a lot of work on Linux machines, as it makes a very similar environment available on your computer.&amp;lt;br&amp;gt;To set up your ssh keys, following the Linux instruction on the [[Ssh keys]] page.&lt;br /&gt;
&amp;lt;br&amp;gt;To set up your ssh keys, following the Linux instruction on the [[Ssh keys]] page.&lt;br /&gt;
&lt;br /&gt;
===My ssh key does not work! WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
[[Ssh_keys#Testing_Your_Key | Testing Your Key]]&lt;br /&gt;
&lt;br /&gt;
* If this doesn't work, you should be able to login using your password, and investigate the problem. For example, if during a login session you get an message similar to the one below, just follow the instruction and delete the offending key on line 3 (you can use vi to jump to that line with ESC plus : plus 3). That only means that you may have logged in from your home computer to SciNet in the past, and that key is obsolete.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh USERNAME@login.scinet.utoronto.ca&lt;br /&gt;
&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @&lt;br /&gt;
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&lt;br /&gt;
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!&lt;br /&gt;
Someone could be eavesdropping on you right now (man-in-the-middle&lt;br /&gt;
attack)!&lt;br /&gt;
It is also possible that the RSA host key has just been changed.&lt;br /&gt;
The fingerprint for the RSA key sent by the remote host is&lt;br /&gt;
53:f9:60:71:a8:0b:5d:74:83:52:**fe:ea:1a:9e:cc:d3.&lt;br /&gt;
Please contact your system administrator.&lt;br /&gt;
Add correct host key in /home/&amp;lt;user&amp;gt;/.ssh/known_hosts to get rid of&lt;br /&gt;
this message.&lt;br /&gt;
Offending key in /home/&amp;lt;user&amp;gt;/.ssh/known_hosts:3&lt;br /&gt;
RSA host key for login.scinet.utoronto.ca &lt;br /&gt;
&amp;lt;http://login.scinet.utoronto.ca &amp;lt;http://login.scinet.utoronto.ca&amp;gt;&amp;gt; has&lt;br /&gt;
changed and you have requested&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you get the message below you may need to logout of your gnome session and log back in since the ssh-agent needs to be&lt;br /&gt;
restarted with the new passphrase ssh key.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ssh USERNAME@login.scinet.utoronto.ca&lt;br /&gt;
&lt;br /&gt;
Agent admitted failure to sign using the key.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Can't forward X:  &amp;quot;Warning: No xauth data; using fake authentication data&amp;quot;, or &amp;quot;X11 connection rejected because of wrong authentication.&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
I used to be able to forward X11 windows from SciNet to my home machine, but now I'm getting these messages; what's wrong?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This very likely means that ssh/xauth can't update your ${HOME}/.Xauthority file. &lt;br /&gt;
&lt;br /&gt;
The simplest pssible reason for this is that you've filled your 10GB /home quota and so can't write anything to your home directory.   Use&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module load extras&lt;br /&gt;
$ diskUsage&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
to check to see how close you are to your disk usage on ${HOME}.&lt;br /&gt;
&lt;br /&gt;
Alternately, this could mean your .Xauthority file has become broken/corrupted/confused some how, in which case you can delete that file, and when you next log in you'll get a similar warning message involving creating .Xauthority, but things should work.&lt;br /&gt;
&lt;br /&gt;
===How come I can not login to TCS?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
A SciNet account doesn't automatically entitle you to TCS access. At a minimum, TCS jobs need to run on at least 32 cores (64 preferred because of Simultaneous Multi Threading - [[TCS_Quickstart#Node_configuration|SMT]] - on these nodes) and need the large memory (4GB/core) and bandwidth on the system. Essentially you need to be able to explain why the work can't be done on the GPC.&lt;br /&gt;
&lt;br /&gt;
===How can I reset the password for my Compute Canada account?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You can reset your password for your Compute Canada account here:&lt;br /&gt;
&lt;br /&gt;
https://ccdb.computecanada.org/security/forgot&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How can I change or reset the password for my SciNet account?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
To reset your password at SciNet please go to [https://portal.scinet.utoronto.ca/password_resets Password reset page].&lt;br /&gt;
&lt;br /&gt;
If you know your old password and want to change it, that can be done here:&lt;br /&gt;
&lt;br /&gt;
https://portal.scinet.utoronto.ca/change_password&lt;br /&gt;
&lt;br /&gt;
===Why am I getting the error &amp;quot;Permission denied (publickey,gssapi-with-mic,password)&amp;quot;?===&lt;br /&gt;
&lt;br /&gt;
This error can pop up in a variety of situations: when trying to log in, or when after a job has finished, when the error and output files fail to be copied (there are other possible reasons for this failure as well -- see [[FAQ#My_GPC_job_died.2C_telling_me_.60Copy_Stageout_Files_Failed.27|My GPC job died, telling me:Copy Stageout Files Failed]]).&lt;br /&gt;
In most cases, the &amp;quot;Permission denioed&amp;quot; error is caused by incorrect permission of the (hidden) .ssh directory. Ssh is used for logging in as well as for the copying of the standard error and output files after a job. &lt;br /&gt;
&lt;br /&gt;
For security reasons, &lt;br /&gt;
the directory .ssh should only be writable and readable to you, but yours &lt;br /&gt;
has read permission for everybody, and thus it fails.  You can change &lt;br /&gt;
this by&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   chmod 700 ~/.ssh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
And to be sure, also do&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub ~/authorized_keys&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===ERROR:102: Tcl command execution failed? when loading modules ===&lt;br /&gt;
Modules sometimes require other modules to be loaded first.&lt;br /&gt;
Module will let you know if you didn’t.&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ module purge&lt;br /&gt;
$ module load python&lt;br /&gt;
python/2.6.2(11):ERROR:151: Module ’python/2.6.2’ depends on one of the module(s) ’gcc/4.4.0’&lt;br /&gt;
python/2.6.2(11):ERROR:102: Tcl command execution failed: prereq gcc/4.4.0&lt;br /&gt;
$ gpc-f103n084-$ module load gcc python&lt;br /&gt;
$&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Compiling your Code==&lt;br /&gt;
&lt;br /&gt;
===How can I get g77 to work?===&lt;br /&gt;
&lt;br /&gt;
The fortran 77 compilers on the GPC are ifort and gfortran. We have dropped support for g77.  This has been a conscious decision. g77 (and the associated library libg2c) were completely replaced six years ago (Apr 2005) by the gcc 4.x branch, and haven't undergone any updates at all, even bug fixes, for over five years.  &lt;br /&gt;
If we would install g77 and libg2c, we would have to deal with the inevitable confusion caused when users accidentally link against the old, broken, wrong versions of the gcc libraries instead of the correct current versions.   &lt;br /&gt;
&lt;br /&gt;
If your code for some reason specifically requires five-plus-year-old libraries,  availability, compatibility, and unfixed-known-bug problems are only going to get worse for you over time, and this might be as good an opportunity as any to address those issues. &lt;br /&gt;
&lt;br /&gt;
''A note on porting to gfortran or ifort:''&lt;br /&gt;
&lt;br /&gt;
While gfortran and ifort are rather compatible with g77, one &lt;br /&gt;
important difference is that by default, gfortran does not preserve &lt;br /&gt;
local variables between function calls, while g77 does.   Preserved &lt;br /&gt;
local variables are for instance often used in implementations of quasi-random number &lt;br /&gt;
generators.  Proper fortran requires to declare such variables as SAVE &lt;br /&gt;
but not all old code does this.&lt;br /&gt;
Luckily, you can change gfortran's default behavior with the flag &lt;br /&gt;
&amp;lt;tt&amp;gt;-fno-automatic&amp;lt;/tt&amp;gt;.   For ifort, the corresponding flag is &amp;lt;tt&amp;gt;-noautomatic&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Where is libg2c.so?===&lt;br /&gt;
&lt;br /&gt;
libg2c.so is part of the g77 compiler, for which we dropped support. See [[#How can I get g77 to work on the GPC?]] for our reasons.&lt;br /&gt;
&lt;br /&gt;
===Autoparallelization does not work!===&lt;br /&gt;
&lt;br /&gt;
I compiled my code with the &amp;lt;tt&amp;gt;-qsmp=omp,auto&amp;lt;/tt&amp;gt; option, and then I specified that it should be run with 64 threads - with &lt;br /&gt;
 export OMP_NUM_THREADS=64&lt;br /&gt;
&lt;br /&gt;
However, when I check the load using &amp;lt;tt&amp;gt;llq1 -n&amp;lt;/tt&amp;gt;, it shows a load on the node of 1.37.  Why?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Using the autoparallelization will only get you so far.  In fact, it usually does not do too much.  What is helpful is to run the compiler with the &amp;lt;tt&amp;gt;-qreport&amp;lt;/tt&amp;gt; option, and then read the output listing carefully to see where the compiler thought it could parallelize, where it could not, and the reasons for this.  Then you can go back to your code and carefully try to address each of the issues brought up by the compiler.&lt;br /&gt;
We ''emphasize'' that this is just a rough first guide, and that the compilers are still not magical!   For more sophisticated approaches to parallelizing your code, email us at [mailto:support@scinet.utoronto.ca &amp;lt;support@scinet.utoronto.ca&amp;gt;]  to set up an appointment with one&lt;br /&gt;
of our technical analysts.&lt;br /&gt;
&lt;br /&gt;
===How do I link against the Intel Math Kernel Library?===&lt;br /&gt;
&lt;br /&gt;
If you need to link in the Intel Math Kernel Library (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.&lt;br /&gt;
&lt;br /&gt;
'''''Note that this give the link line for the command line. When using this in Makefiles, replace $MKLPATH by ${MKLPATH}.'''''&lt;br /&gt;
&lt;br /&gt;
'''''Note too that, unless the integer arguments you will be passing to the MKL libraries are actually 64-bit integers, rather than the normal int or INTEGER types, you want to specify 32-bit integers (lp64) .'''''&lt;br /&gt;
&lt;br /&gt;
===Can the compilers on the login nodes be disabled to prevent accidentally using them?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You can accomplish this by modifying your .bashrc to not load the compiler modules. See [[Important .bashrc guidelines]].&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;relocation truncated to fit: R_X86_64_PC32&amp;quot;: Huh?===&lt;br /&gt;
&lt;br /&gt;
What does this mean, and why can't I compile this code?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Welcome to the joys of the x86 architecture!  You're probably having trouble building arrays larger than 2GB, individually or together.   Generally, you have to try to use the medium or large x86 `memory model'.   For the intel compilers, this is specified with the compile options&lt;br /&gt;
&lt;br /&gt;
  -mcmodel=medium -shared-intel&lt;br /&gt;
&lt;br /&gt;
===&amp;quot;feupdateenv is not implemented and will always fail&amp;quot;===&lt;br /&gt;
&lt;br /&gt;
How do I get rid of this and what does it mean?&lt;br /&gt;
 &lt;br /&gt;
'''Answer:'''&lt;br /&gt;
First note that, as ominous as it sounds, this is really just a warning, and has to do with the intel math library. You can ignore it (unless you really are trying to manually change the exception handlers for floating point exceptions such as divide by zero), or take the safe road and get rid off it by linking with the intel math functions library:&amp;lt;pre&amp;gt;-limf&amp;lt;/pre&amp;gt;See also [[#How do I link against the Intel Math Kernel Library?]]&lt;br /&gt;
&lt;br /&gt;
===Cannot find rdmacm library when compiling on GPC===&lt;br /&gt;
&lt;br /&gt;
I get the following error building my code on GPC: &amp;quot;&amp;lt;tt&amp;gt;ld: cannot find -lrdmacm&amp;lt;/tt&amp;gt;&amp;quot;.  Where can I find this library?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This library is part of the MPI libraries; if your compiler is having problems picking it up, it probably means you are mistakenly trying to compile on the login nodes (scinet01..scinet04).  The login nodes aren't part of the GPC; they are for logging into the data centre only.  From there you must go to the GPC or TCS development nodes to do any real work.&lt;br /&gt;
&lt;br /&gt;
=== Why do I get this error when I try to compile: &amp;quot;icpc: error #10001: could not find directory in which /usr/bin/g++41 resides&amp;quot; ?===&lt;br /&gt;
&lt;br /&gt;
You are trying to compile on the login nodes.   As described in the wiki ( https://support.scinet.utoronto.ca/wiki/index.php/GPC_Quickstart#Login ), or in the users guide you would have received with your account,   Scinet supports two main clusters, with very different architectures.  Compilation must be done on the development nodes of the appropriate cluster (in this case, gpc01-04).   Thus, log into gpc01, gpc02, gpc03, or gpc04, and compile from there.&lt;br /&gt;
&lt;br /&gt;
==Testing your Code==&lt;br /&gt;
&lt;br /&gt;
=== Can I run a something for a short time on the development nodes? ===&lt;br /&gt;
&lt;br /&gt;
I am in the process of playing around with the mpi calls in my code to get it to work. I do a lot of tests and each of them takes a couple of seconds only.  Can I do this on the development nodes?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes, as long as it's very brief (a few minutes).   People use the development nodes&lt;br /&gt;
for their work, and you don't want to bog it down for people, and testing a real&lt;br /&gt;
code can chew up a lot more resources than compiling, etc.    The procedures differ&lt;br /&gt;
depending on what machine you're using.&lt;br /&gt;
&lt;br /&gt;
==== TCS ====&lt;br /&gt;
&lt;br /&gt;
On the TCS you can run small MPI jobs on the tcs02 node, which is meant for &lt;br /&gt;
development use.  But even for this test run on one node, you'll need a host file --&lt;br /&gt;
a list of hosts (in this case, all tcs-f11n06, which is the `real' name of tcs02)&lt;br /&gt;
that the job will run on.  Create a file called `hostfile' containing the following:&lt;br /&gt;
&lt;br /&gt;
 tcs-f11n06&lt;br /&gt;
 tcs-f11n06&lt;br /&gt;
 tcs-f11n06&lt;br /&gt;
 tcs-f11n06&lt;br /&gt;
&lt;br /&gt;
for a 4-task run.  When you invoke &amp;quot;poe&amp;quot; or &amp;quot;mpirun&amp;quot;, there are runtime&lt;br /&gt;
arguments that you specify pointing to this file.  You can also specify it&lt;br /&gt;
in an environment variable MP_HOSTFILE, so, if your file is in your /scratch directory, say &lt;br /&gt;
${SCRATCH}/hostfile, then you would do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 export MP_HOSTFILE=${SCRATCH}/hostfile&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
in your shell.  You will also need to create a &amp;lt;tt&amp;gt;.rhosts&amp;lt;/tt&amp;gt; file in your &lt;br /&gt;
home director, again listing &amp;lt;tt&amp;gt;tcs-f11n06&amp;lt;/tt&amp;gt; so that &amp;lt;tt&amp;gt;poe&amp;lt;/tt&amp;gt;&lt;br /&gt;
can start jobs.   After that you can simply run your program.  You can use&lt;br /&gt;
mpiexec:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 mpiexec -n 4 my_test_program&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
adding &amp;lt;tt&amp;gt; -hostfile /path/to/my/hostfile&amp;lt;/tt&amp;gt; if you did not set the environment&lt;br /&gt;
variable above.  Alternatively, you can run it with the poe command (do a &amp;quot;man poe&amp;quot; for details), or even by&lt;br /&gt;
just directly running it.  In this case the number of MPI processes will by default&lt;br /&gt;
be the number of entries in your hostfile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== GPC ====&lt;br /&gt;
&lt;br /&gt;
On the GPC one can run short test jobs on the GPC [[GPC_Quickstart#Compile.2FDevel_Nodes | development nodes ]]&amp;lt;tt&amp;gt;gpc01&amp;lt;/tt&amp;gt;..&amp;lt;tt&amp;gt;gpc04&amp;lt;/tt&amp;gt;;&lt;br /&gt;
if they are single-node jobs (which they should be) they don't need a hostfile.  Even better, though, is to request an [[ Moab#Interactive | interactive ]] job and run the tests either in regular batch queue or using a short high availability [[ Moab#debug | debug ]] queue that is reserved for this purpose.&lt;br /&gt;
&lt;br /&gt;
=== How do I run a longer (but still shorter than an hour) test job quickly ? ===&lt;br /&gt;
&lt;br /&gt;
'''Answer'''&lt;br /&gt;
&lt;br /&gt;
On the GPC there is a high turnover short queue called [[ Moab#debug | debug ]] that is designed for&lt;br /&gt;
this purpose.  You can use it by adding &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#PBS -q debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to your submission script.&lt;br /&gt;
&lt;br /&gt;
==Running your jobs==&lt;br /&gt;
&lt;br /&gt;
===My job can't write to /home===&lt;br /&gt;
&lt;br /&gt;
My code works fine when I test on the development nodes, but when I submit a job, or even run interactively in the development queue on GPC, it fails.  What's wrong?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
As [[Data_Management#Home_Disk_Space | discussed]] [https://support.scinet.utoronto.ca/wiki/images/5/54/SciNet_Tutorial.pdf elsewhere], &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; is mounted read-only on the compute nodes; you can only write to &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; from the login nodes and devel nodes.  (The [[GPC_Quickstart#128Glargemem | largemem nodes]] on GPC, in this respect, are more like devel nodes than compute nodes).   In general, to run jobs you can read from &amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; but you'll have to write to &amp;lt;tt&amp;gt;/scratch&amp;lt;/tt&amp;gt; (or, if you were allocated space through the RAC process, on &amp;lt;tt&amp;gt;/project&amp;lt;/tt&amp;gt;).  More information on SciNet filesytems can be found on our [[Data_Management | Data Management]] page.&lt;br /&gt;
&lt;br /&gt;
===Error Submitting My Job: qsub: Bad UID for job execution MSG=ruserok failed ===&lt;br /&gt;
&lt;br /&gt;
I write up a submission script as in the examples, but when I attempt to submit the job, I get the above error.  What's wrong?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This error will occur if you try to submit a job from the login nodes.   The login nodes are the gateway to all of SciNet's systems (GPC, TCS, P7, ARC), which have different hardware and queueing systems.  To submit a job, you must log into a development node for the particular cluster you are submitting to and submit from there.&lt;br /&gt;
&lt;br /&gt;
===OpenMP on the TCS===&lt;br /&gt;
&lt;br /&gt;
How do I run an OpenMP job on the TCS?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please look at the [[TCS_Quickstart#Submission_Script_for_an_OpenMP_Job | TCS Quickstart ]] page.&lt;br /&gt;
&lt;br /&gt;
===Can I can use hybrid codes consisting of MPI and openMP on the GPC?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Yes. Please look at the [[GPC_Quickstart#Hybrid_MPI.2FOpenMP_jobs | GPC Quickstart ]] page.&lt;br /&gt;
&lt;br /&gt;
===How do I run serial jobs on GPC?===&lt;br /&gt;
&lt;br /&gt;
'''Answer''':&lt;br /&gt;
&lt;br /&gt;
So it should be said first that SciNet is a parallel computing resource, &lt;br /&gt;
and our priority will always be parallel jobs.   Having said that, if &lt;br /&gt;
you can make efficient use of the resources using serial jobs and get &lt;br /&gt;
good science done, that's good too, and we're happy to help you.&lt;br /&gt;
&lt;br /&gt;
The GPC nodes each have 8 processing cores, and making efficient use of these &lt;br /&gt;
nodes means using all eight cores.  As a result, we'd like to have the &lt;br /&gt;
users take up whole nodes (eg, run multiples of 8 jobs) at a time.  &lt;br /&gt;
&lt;br /&gt;
It depends on the nature of your job what the best strategy is. Several approaches are presented on the [[User_Serial|serial run wiki page]].&lt;br /&gt;
&lt;br /&gt;
===Why can't I request only a single cpu for my job on GPC?===&lt;br /&gt;
&lt;br /&gt;
'''Answer''':&lt;br /&gt;
&lt;br /&gt;
On GPC, computers are allocated by the node - that is, in chunks of 8 processors.   If you want to run a job that requires only one processor, you need to bundle the jobs into groups of 8, so as to not be wasting the other 7 for 48 hours. See [[User_Serial|serial run wiki page]].&lt;br /&gt;
&lt;br /&gt;
===How do I run serial jobs on TCS?===&lt;br /&gt;
&lt;br /&gt;
'''Answer''': You don't.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===But in the queue I found a user who is running jobs on GPC, each of which is using only one processor, so why can't I?===&lt;br /&gt;
&lt;br /&gt;
'''Answer''':&lt;br /&gt;
&lt;br /&gt;
The pradat* and atlaspt* jobs, amongst others, are jobs of the ATLAS high energy physics project. That they are reported as single cpu jobs is an artifact of the moab scheduler. They are in fact being automatically bundled into 8-job bundles but have to run individually to be compatible with their international grid-based systems.&lt;br /&gt;
&lt;br /&gt;
===How do I use the ramdisk on GPC?===&lt;br /&gt;
&lt;br /&gt;
To use the ramdisk, create and read to / 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;
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;
===How can I automatically resubmit a job?===&lt;br /&gt;
&lt;br /&gt;
Commonly you may have a job that you know will take longer to run than what is &lt;br /&gt;
permissible in the queue.  As long as your program contains [[Checkpoints|checkpoint]] or &lt;br /&gt;
restart capability, you can have one job automatically submit the next. In&lt;br /&gt;
the following example it is assumed that the program finishes before &lt;br /&gt;
the 48 hour limit and then resubmits itself by logging into one&lt;br /&gt;
of the development nodes.&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 example submission script for auto resubmission&lt;br /&gt;
# SciNet GPC&lt;br /&gt;
#&lt;br /&gt;
#PBS -l nodes=1:ppn=8,walltime=48:00:00&lt;br /&gt;
#PBS -N my_job&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;
# YOUR CODE HERE&lt;br /&gt;
./run_my_code&lt;br /&gt;
&lt;br /&gt;
# RESUBMIT 10 TIMES HERE&lt;br /&gt;
num=$NUM&lt;br /&gt;
if [ $num -lt 10 ]; then&lt;br /&gt;
      num=$(($num+1))&lt;br /&gt;
      ssh gpc01 &amp;quot;cd $PBS_O_WORKDIR; qsub ./script_name.sh -v NUM=$num&amp;quot;;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsub script_name.sh -v&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can alternatively use [[ Moab#Job_Dependencies | Job dependencies ]] through the queuing system which will not start one job until another job has completed.&lt;br /&gt;
&lt;br /&gt;
If your job can't be made to automatically stop before the 48 hour queue window, but it does write out checkpoints, you can use the timeout command to stop the program while you still have time to resubmit; for instance&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
    timeout 2850m ./run_my_code argument1 argument2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will run the program for 47.5 hours (2850 minutes), and then send it SIGTERM to exit the program.&lt;br /&gt;
&lt;br /&gt;
===How can I pass in arguments to my submission script?===&lt;br /&gt;
&lt;br /&gt;
If you wish to make your scripts more generic you can use qsub's ability &lt;br /&gt;
to pass in environment variables to pass in arguments to your script.&lt;br /&gt;
The following example shows a case where an input and an output &lt;br /&gt;
file are passed in on the qsub line. Multiple variables can be &lt;br /&gt;
passed in using the qsub &amp;quot;-v&amp;quot; option and comma delimited. &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 example of passing in arguments&lt;br /&gt;
# SciNet GPC&lt;br /&gt;
# &lt;br /&gt;
#PBS -l nodes=1:ppn=8,walltime=48:00:00&lt;br /&gt;
#PBS -N my_job&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;
# YOUR CODE HERE&lt;br /&gt;
./run_my_code -f $INFILE -o $OUTFILE&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
qsub script_name.sh -v INFILE=input.txt,OUTFILE=outfile.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How can I run a job longer than 48 hours? ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The SciNet queues have a queue limit of 48 hours.   This is pretty typical for systems of its size in Canada and elsewhere, and larger systems commonly have shorter limits.   The limits are there to ensure that every user gets a fair share of the system (so that no one user ties up lots of nodes for a long time), and for safety (so that if one memory board in one node fails in the middle of a very long job, you haven't lost a months' worth of work).&lt;br /&gt;
&lt;br /&gt;
Since many of us have simulations that require more than that much time, most widely-used scientific applications have &amp;quot;checkpoint-restart&amp;quot; functionality, where every so often the complete state of the calculation is stored as a checkpoint file, and one can restart a simulation from one of these.   In fact, these restart files tend to be quite useful for a number of purposes.&lt;br /&gt;
&lt;br /&gt;
If your job will take longer, you will have to submit your job in multiple parts, restarting from a checkpoint each time.  In this way, one can run a simulation much longer than the queue limit.  In fact, one can even write job scripts which automatically re-submit themselves until a run is completed, using [[FAQ#How_can_I_automatically_resubmit_a_job.3F | automatic resubmission. ]]&lt;br /&gt;
&lt;br /&gt;
=== Why did showstart say it would take 3 hours for my job to start before, and now it says my job will start in 10 hours? ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please look at the [[FAQ#How_do_priorities_work.2Fwhy_did_that_job_jump_ahead_of_mine_in_the_queue.3F | How do priorities work/why did that job jump ahead of mine in the queue? ]] page.&lt;br /&gt;
&lt;br /&gt;
===How do priorities work/why did that job jump ahead of mine in the queue?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The [[Moab | queueing system]] used on SciNet machines is a [http://en.wikipedia.org/wiki/Priority_queue Priority Queue].  Jobs enter the queue at the back of the queue, and slowly make their way to the front as those ahead of them are run; but a job that enters the queue with a higher priority can `cut in line'.&lt;br /&gt;
&lt;br /&gt;
The main factor which determines priority is whether or not the user (or their PI) has an [http://wiki.scinethpc.ca/wiki/index.php/Application_Process RAC allocation].  These are competitively allocated grants of computer time; there is a call for proposals towards the end of every calendar year.    Users with an allocation have high priorities in an attempt to make sure that they can use the amount of computer time the committees granted them.   Their priority decreases as they approach their allotted usage over the current window of time; by the time that they have exhausted that allotted usage, their priority is the same as users with no allocation (unallocated, or `default' users).    Unallocated users have a fixed, low, priority.&lt;br /&gt;
&lt;br /&gt;
This priority system is called `fairshare'; the scheduler attempts to make sure everyone has their fair share of the machines, where the share that's fair has been determined by the allocation committee.    The fairshare window is a rolling window of two weeks; that is, any time you have a job in the queue, the fairshare calculation of its priority is given by how much of your allocation of the machine has been used in the last 14 days.&lt;br /&gt;
&lt;br /&gt;
A particular allocation might have some fraction of GPC - say 4% of the machine (if the PI had been allocated 10 million CPU hours on GPC). The allocations have labels; (called `Resource Allocation Proposal Identifiers', or RAPIs) they look something like&lt;br /&gt;
&lt;br /&gt;
  abc-123-ab&lt;br /&gt;
&lt;br /&gt;
where abc-123 is the PIs CCRI, and the suffix specifies which of the allocations granted to the PI is to be used.  These can be specified on a job-by-job basis.  On GPC, one adds the line&lt;br /&gt;
 #PBS -A RAPI&lt;br /&gt;
to your script; on TCS, one uses&lt;br /&gt;
 # @ account_no = RAPI&lt;br /&gt;
If the allocation to charge isn't specified, a default is used; each user has such a default, which can be changed at the same portal where one changes one's password, &lt;br /&gt;
&lt;br /&gt;
 https://portal.scinet.utoronto.ca/&lt;br /&gt;
&lt;br /&gt;
A jobs priority is determined primarily by the fairshare priority of the allocation it is being charged to; the previous 14 days worth of use under that allocation is calculated and compared to the allocated fraction (here, 5%) of the machine over that window (here, 14 days).   The fairshare priority is a decreasing function of the allocation left; if there is no allocation left (eg, jobs running under that allocation have already used 379,038 CPU hours in the past 14 days), the priority is the same as that of a user with no granted allocation.   (This last part has been the topic of some debate; as the machine gets more utilized, it will probably be the case that we allow RAC users who have greatly overused their quota to have their priorities to drop below that of unallocated users, to give the unallocated users some chance to run on our increasingly crowded system; this would have no undue effect on our allocated users as they still would be able to use the amount of resources they had been allocated by the committees.)   Note that all jobs charging the same allocation get the same fairshare priority.&lt;br /&gt;
&lt;br /&gt;
There are other factors that go into calculating priority, but fairshare is the most significant.   Other factors include&lt;br /&gt;
* amount of time waiting in queue (measured in units of the requested runtime). A waiting queue job gains priority as it sits in the queue to avoid job starvation. &lt;br /&gt;
* User adjustment of priorities ( See below ).&lt;br /&gt;
&lt;br /&gt;
The major effect of these subdominant terms is to shuffle the order of jobs running under the same allocation.&lt;br /&gt;
&lt;br /&gt;
===How do we manage job priorities within our research group?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Obviously, managing shared resources within a large group - whether it &lt;br /&gt;
is conference funding or CPU time - takes some doing.   &lt;br /&gt;
&lt;br /&gt;
It's important to note that the fairshare periods are intentionally kept &lt;br /&gt;
quite short - just two weeks long. So, for example, let us say that in your resource &lt;br /&gt;
allocation you have about 10% of the machine.   Then for someone to use &lt;br /&gt;
up the whole two week amount of time in 2 days, they'd have to use 70% &lt;br /&gt;
of the machine in those two days - which is unlikely to happen by &lt;br /&gt;
accident.  If that does happen,  &lt;br /&gt;
those using the same allocation as the person who used 70% of the &lt;br /&gt;
machine over the two days will suffer by having much lower priority for &lt;br /&gt;
their jobs, but only for the next 12 days - and even then, if there are &lt;br /&gt;
idle cpus they'll still be able to compute.&lt;br /&gt;
&lt;br /&gt;
There will be online tools for seeing how the allocation is being used, &lt;br /&gt;
and those people who are in charge in your group will be able to use &lt;br /&gt;
that information to manage the users, telling them to dial it down or &lt;br /&gt;
up.   We know that managing a large research group is hard, and we want &lt;br /&gt;
to make sure we provide you the information you need to do your job &lt;br /&gt;
effectively.&lt;br /&gt;
&lt;br /&gt;
One way for users within a group to manage their priorities within the group&lt;br /&gt;
is with [[Moab#Adjusting_Job_Priority | user-adjusted priorities]]; this is&lt;br /&gt;
described in more detail on the [[Moab | Scheduling System]] page.&lt;br /&gt;
&lt;br /&gt;
=== How do I charge jobs to my RAC allocation? ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please see the [[Moab#Accounting|accounting section of Moab page]].&lt;br /&gt;
&lt;br /&gt;
=== How does one check the amount of used CPU-hours in a project, and how does one get statistics for each user in the project? ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This information is available on the scinet portal,https://portal.scinet.utoronto.ca, See also [[SciNet Usage Reports]].&lt;br /&gt;
&lt;br /&gt;
==Monitoring jobs in the queue==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Why hasn't my job started?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Use the moab command &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
checkjob -v jobid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and the last couple of lines should explain why a job hasn't started.  &lt;br /&gt;
&lt;br /&gt;
Please see [[Moab| Job Scheduling System (Moab) ]] for more detailed information&lt;br /&gt;
&lt;br /&gt;
===How do I figure out when my job will run?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please see [[Moab#Available_Resources| Job Scheduling System (Moab) ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ===My GPC job is Held, and checkjob says &amp;quot;Batch:PolicyViolation&amp;quot; ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
When this happens, you'll see your job stuck in a BatchHold state.  &lt;br /&gt;
This happens because the job you've submitted breaks one of the rules of the queues, and is being held until you modify it or kill it and re-submit a conforming job.  The most common problems are:&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===I submit my GPC job, and I get an email saying it was rejected===&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
This happens because the job you've submitted breaks one of the rules of the queues and is rejected. An email&lt;br /&gt;
is sent with the JOBID, JOBNAME, and the reason it was rejected.  The following is an example where a job&lt;br /&gt;
requests more than 48 hours and was rejected.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PBS Job Id: 3462493.gpc-sched&lt;br /&gt;
Job Name:   STDIN&lt;br /&gt;
job deleted&lt;br /&gt;
Job deleted at request of root@gpc-sched&lt;br /&gt;
MOAB_INFO:  job was rejected - job violates class configuration 'wclimit too high for class 'batch_ib' (345600 &amp;gt; 172800)'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jobs on the TCS or GPC may only run for 48 hours at a time; this restriction greatly increases responsiveness of the queue and queue throughput for all our users.  If your computation requires longer than that, as many do, you will have to [[ Checkpoints | checkpoint ]] your job and restart it after each 48-hour queue window.   You can manually re-submit jobs, or if you can have your job cleanly exit before the 48 hour window, there are ways to [[ FAQ#How_can_I_automatically_resubmit_a_job.3F | automatically resubmit jobs ]].&lt;br /&gt;
&lt;br /&gt;
Other rejections return a more cryptic error saying &amp;quot;job violates class configuration&amp;quot; such as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PBS Job Id: 3462409.gpc-sched&lt;br /&gt;
Job Name:   STDIN&lt;br /&gt;
job deleted&lt;br /&gt;
Job deleted at request of root@gpc-sched&lt;br /&gt;
MOAB_INFO:  job was rejected - job violates class configuration 'user required by class 'batch''&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most common problems that result in this error are:&lt;br /&gt;
&lt;br /&gt;
* '''Incorrect number of processors per node''': Jobs on the GPC are scheduled per-node not per-core and since each node has 8 processor cores (ppn=8) the smallest job allowed is one node with 8 cores (nodes=1:ppn=8).  For serial jobs users must bundle or batch them together in groups of 8. See [[ FAQ#How_do_I_run_serial_jobs_on_GPC.3F | How do I run serial jobs on GPC? ]]&lt;br /&gt;
* '''No number of nodes specified''': Jobs submitted to the main queue must request a specific number of nodes, either in the submission script (with a line like &amp;lt;tt&amp;gt;#PBS -l nodes=2:ppn=8&amp;lt;/tt&amp;gt;) or on the command line (eg, &amp;lt;tt&amp;gt;qsub -l nodes=2:ppn=8,walltime=5:00:00 script.pbs&amp;lt;/tt&amp;gt;).  Note that for the debug queue, you can get away without specifying a number of nodes and a default of one will be assigned; for both technical and policy reasons, we do not enforce such a default for the main (&amp;quot;batch&amp;quot;) queue.&lt;br /&gt;
* '''There is a 15 minute walltime minimum''' on all queues except debug and if you set your walltime less than this, it will be rejected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Running checkjob on my job gives me messages about JobFail and rejected===&lt;br /&gt;
&lt;br /&gt;
Running checkjob on my job gives me messages that suggest my job has failed, as below: what did I do wrong?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
AName: test&lt;br /&gt;
State: Idle &lt;br /&gt;
Creds:  user:xxxxxx  group:xxxxxxxx  account:xxxxxxxx  class:batch_ib  qos:ibqos&lt;br /&gt;
WallTime:   00:00:00 of 8:00:00&lt;br /&gt;
BecameEligible: Wed Jul 23 10:39:27&lt;br /&gt;
SubmitTime: Wed Jul 23 10:38:22&lt;br /&gt;
  (Time Queued  Total: 00:01:47  Eligible: 00:01:05)&lt;br /&gt;
&lt;br /&gt;
Total Requested Tasks: 8&lt;br /&gt;
&lt;br /&gt;
Req[0]  TaskCount: 8  Partition: ALL  &lt;br /&gt;
Opsys: centos6computeA  Arch: ---  Features: ---&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notification Events: JobFail&lt;br /&gt;
&lt;br /&gt;
IWD:            /scratch/x/xxxxxxxx/xxxxxxx/xxxxxxx&lt;br /&gt;
Partition List: torque,DDR&lt;br /&gt;
Flags:          RESTARTABLE&lt;br /&gt;
Attr:           checkpoint&lt;br /&gt;
StartPriority:  76&lt;br /&gt;
rejected for Opsys        - (null)&lt;br /&gt;
rejected for State        - (null)&lt;br /&gt;
rejected for Reserved     - (null)&lt;br /&gt;
NOTE:  job req cannot run in partition torque (available procs do not meet requirements : 0 of 8 procs found)&lt;br /&gt;
idle procs: 793  feasible procs:   0&lt;br /&gt;
&lt;br /&gt;
Node Rejection Summary: [Opsys: 117][State: 2895][Reserved: 19]&lt;br /&gt;
&lt;br /&gt;
NOTE:  job violates constraints for partition SANDY (partition SANDY not in job partition mask)&lt;br /&gt;
&lt;br /&gt;
NOTE:  job violates constraints for partition GRAVITY (partition GRAVITY not in job partition mask)&lt;br /&gt;
&lt;br /&gt;
rejected for State        - (null)&lt;br /&gt;
NOTE:  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The output from check job is a little cryptic in places, and if you are wondering why your job hasn't started yet, you might think that &amp;quot;rejection&amp;quot; and &amp;quot;JobFail&amp;quot; suggest that there's something wrong.  But the above message is actually normal; you can use the &amp;lt;tt&amp;gt;showstart&amp;lt;/tt&amp;gt; command on your job to get a (preliminary, subject to change) estimate as to when the job will start, and you'll find that it is in fact scheduled to start up in the near future.&lt;br /&gt;
&lt;br /&gt;
In the above message:&lt;br /&gt;
&lt;br /&gt;
* `Notification Events: JobFail` just means that, if notifications are enabled, you'll get a message if the job fails;&lt;br /&gt;
* `job req cannot run in partition torque` just means that the job cannot run just yet (that's why it's queued);&lt;br /&gt;
* `job req cannot run in dynamic partition DDR now (insufficient procs available: 0 &amp;lt; 8)` says why: there aren't processors available; and&lt;br /&gt;
* `job violates constraints for partition SANDY/GRAVITY` just means that the job isn't eligable to run in those paritcular (small) sections of the cluster.&lt;br /&gt;
&lt;br /&gt;
that is, the above output is the normal and expected (if somewhat cryptic) explanation as to why the job is waiting - nothing to worry about.&lt;br /&gt;
&lt;br /&gt;
===How can I monitor my running jobs on TCS?===&lt;br /&gt;
&lt;br /&gt;
How can I monitor the load of TCS jobs?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
You can get more information with the command &lt;br /&gt;
 /xcat/tools/tcs-scripts/LL/jobState.sh&lt;br /&gt;
which I alias as:&lt;br /&gt;
 alias llq1='/xcat/tools/tcs-scripts/LL/jobState.sh'&lt;br /&gt;
If you run &amp;quot;llq1 -n&amp;quot; you will see a listing of jobs together with a lot of information, including the load.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Can I run cron jobs on devel nodes to monitor my jobs?===&lt;br /&gt;
&lt;br /&gt;
Can I run cron jobs on devel nodes to monitor my jobs?&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
No, we do not permit cron jobs to be run by users.  To monitor the status of your jobs using a cron job running on your own machine, use the command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ssh myusername@login.scinet.utoronto.ca &amp;quot;qstat -u myusername&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or some variation of this command.  Of course, you will need to have SSH keys setup on the machine running the cron job, so that password entry won't be necessary.&lt;br /&gt;
&lt;br /&gt;
==Errors in running jobs==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===On GPC, `Job cannot be executed'===&lt;br /&gt;
&lt;br /&gt;
I get error messages like this trying to run on GPC:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PBS Job Id: 30414.gpc-sched&lt;br /&gt;
Job Name:   namd&lt;br /&gt;
Exec host:  gpc-f120n011/7+gpc-f120n011/6+gpc-f120n011/5+gpc-f120n011/4+gpc-f120n011/3+gpc-f120n011/2+gpc-f120n011/1+gpc-f120n011/0&lt;br /&gt;
Aborted by PBS Server &lt;br /&gt;
Job cannot be executed&lt;br /&gt;
See Administrator for help&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PBS Job Id: 30414.gpc-sched&lt;br /&gt;
Job Name:   namd&lt;br /&gt;
Exec host:  gpc-f120n011/7+gpc-f120n011/6+gpc-f120n011/5+gpc-f120n011/4+gpc-f120n011/3+gpc-f120n011/2+gpc-f120n011/1+gpc-f120n011/0&lt;br /&gt;
An error has occurred processing your job, see below.&lt;br /&gt;
request to copy stageout files failed on node 'gpc-f120n011/7+gpc-f120n011/6+gpc-f120n011/5+gpc-f120n011/4+gpc-f120n011/3+gpc-f120n011/2+gpc-f120n011/1+gpc-f120n011/0' for job 30414.gpc-sched&lt;br /&gt;
&lt;br /&gt;
Unable to copy file 30414.gpc-sched.OU to USER@gpc-f101n084.scinet.local:/scratch/G/GROUP/USER/projects/sim-performance-test/runtime/l/namd/8/namd.o30414&lt;br /&gt;
*** error from copy&lt;br /&gt;
30414.gpc-sched.OU: No such file or directory&lt;br /&gt;
*** end error output&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Try doing the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir ${SCRATCH}/.pbs_spool&lt;br /&gt;
ln -s ${SCRATCH}/.pbs_spool ~/.pbs_spool&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is how all new accounts are setup on SciNet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;/home&amp;lt;/tt&amp;gt; on GPC for compute jobs is mounted as a read-only file system.   &lt;br /&gt;
PBS by default tries to spool its output  files to &amp;lt;tt&amp;gt;${HOME}/.pbs_spool&amp;lt;/tt&amp;gt;&lt;br /&gt;
which fails as it tries to write to a read-only file  &lt;br /&gt;
system.    New accounts at SciNet  get around this by having ${HOME}/.pbs_spool  &lt;br /&gt;
point to somewhere appropriate on &amp;lt;tt&amp;gt;/scratch&amp;lt;/tt&amp;gt;, but if you've deleted that link&lt;br /&gt;
or directory, or had an old account, you will see errors like the above.&lt;br /&gt;
&lt;br /&gt;
'''On Feb 24, the input/output mechanism has been reconfigured to use a local ramdisk as the temporary location, which means that .pbs_spool is no longer needed and this error should not occur anymore.'''&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I couldn't find the  .o output file in the .pbs_spool directory as I used to ===&lt;br /&gt;
&lt;br /&gt;
On Feb 24 2011, the temporary location of standard input and output files was moved from the shared file system ${SCRATCH}/.pbs_spool to the&lt;br /&gt;
node-local directory /var/spool/torque/spool (which resides in ram). The final location after a job has finished is unchanged,&lt;br /&gt;
but to check the output/error of running jobs, users will now have to ssh into the (first) node assigned to the job and look in&lt;br /&gt;
/var/spool/torque/spool.&lt;br /&gt;
&lt;br /&gt;
This alleviates access contention to the temporary directory, especially for those users that are running a lot of jobs, and  reduces the burden on the file system in general.&lt;br /&gt;
&lt;br /&gt;
Note that it is good practice to redirect output to a file rather than to count on the scheduler to do this for you.&lt;br /&gt;
&lt;br /&gt;
=== My GPC job died, telling me `Copy Stageout Files Failed' ===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
When a job runs on GPC, the script's standard output and error are redirected to &lt;br /&gt;
&amp;lt;tt&amp;gt;$PBS_JOBID.gpc-sched.OU&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;$PBS_JOBID.gpc-sched.ER&amp;lt;/tt&amp;gt; in&lt;br /&gt;
/var/spool/torque/spool on the (first) node on which your job is running.  At the end of the job, those .OU and .ER files are copied to where the batch script tells them to be copied, by default &amp;lt;tt&amp;gt;$PBS_JOBNAME.o$PBS_JOBID&amp;lt;/tt&amp;gt; and&amp;lt;tt&amp;gt;$PBS_JOBNAME.e$PBS_JOBID&amp;lt;/tt&amp;gt;.   (You can set those filenames to be something clearer with the -e and -o options in your PBS script.)&lt;br /&gt;
&lt;br /&gt;
When you get errors like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
An error has occurred processing your job, see below.&lt;br /&gt;
request to copy stageout files failed on node&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
it means that the copying back process has failed in some way.  There could be a few reasons for this. The first thing to '''make sure that your .bashrc does not produce any output''', as the output-stageout is performed by bash and further output can cause this to fail.&lt;br /&gt;
But it also could have just been a random filesystem error, or it  could be that your job failed spectacularly enough to shortcircuit the normal job-termination process (e.g. ran out of memory very quickly) and those files just never got copied.&lt;br /&gt;
&lt;br /&gt;
Write to [mailto:support@scinet.utoronto.ca &amp;lt;support@scinet.utoronto.ca&amp;gt;] if your input/output files got lost, as we will probably be able to retrieve them for you (please supply at least the jobid, and any other information that may be relevant). &lt;br /&gt;
&lt;br /&gt;
Mind you that it is good practice to redirect output to a file rather than depending on the job scheduler to do this for you.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
===Another transport will be used instead===&lt;br /&gt;
&lt;br /&gt;
I get error messages like the following when running on the GPC at the start of the run, although the job seems to proceed OK.   Is this a problem?&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--------------------------------------------------------------------------&lt;br /&gt;
[[45588,1],0]: A high-performance Open MPI point-to-point messaging module&lt;br /&gt;
was unable to find any relevant network interfaces:&lt;br /&gt;
&lt;br /&gt;
Module: OpenFabrics (openib)&lt;br /&gt;
  Host: gpc-f101n005&lt;br /&gt;
&lt;br /&gt;
Another transport will be used instead, although this may result in&lt;br /&gt;
lower performance.&lt;br /&gt;
--------------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Everything's fine.   The two MPI libraries scinet provides work for both the InifiniBand and the Gigabit Ethernet interconnects, and will always try to use the fastest interconnect available.   In this case, you ran on normal gigabit GPC nodes with no infiniband; but the MPI libraries have no way of knowing this, and try the infiniband first anyway.  This is just a harmless `failover' message; it tried to use the infiniband, which doesn't exist on this node, then fell back on using Gigabit ethernet (`another transport').&lt;br /&gt;
&lt;br /&gt;
With OpenMPI, this can be avoided by not looking for infiniband; eg, by using the option&lt;br /&gt;
&lt;br /&gt;
--mca btl ^openib&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===IB Memory Errors, eg &amp;lt;tt&amp;gt; reg_mr Cannot allocate memory &amp;lt;/tt&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
Infiniband requires more memory than ethernet; it can use RDMA (remote direct memory access) transport for which it sets aside registered memory to transfer data.&lt;br /&gt;
&lt;br /&gt;
In our current network configuration, it requires a _lot_ more memory, particularly as you go to larger process counts; unfortunately, that means you can't get around the &amp;quot;I need more memory&amp;quot; problem the usual way, by running on more nodes.   Machines with different memory or &lt;br /&gt;
network configurations may exhibit this problem at higher or lower MPI &lt;br /&gt;
task counts.&lt;br /&gt;
&lt;br /&gt;
Right now, the best workaround is to reduce the number and size of OpenIB queues, using XRC: with the OpenMPI, add the following options to your mpirun command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-mca btl_openib_receive_queues X,128,256,192,128:X,2048,256,128,32:X,12288,256,128,32 -mca btl_openib_max_send_size 12288&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With Intel MPI, you should be able to do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
module load intelmpi/4.0.3.008&lt;br /&gt;
mpirun -genv I_MPI_FABRICS=shm:ofa  -genv I_MPI_OFA_USE_XRC=1 -genv I_MPI_OFA_DYNAMIC_QPS=1 -genv I_MPI_DEBUG=5 -np XX ./mycode&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to the same end.  &lt;br /&gt;
&lt;br /&gt;
For more information see [[GPC MPI Versions]].&lt;br /&gt;
&lt;br /&gt;
===My compute job fails, saying &amp;lt;tt&amp;gt;libpng12.so.0: cannot open shared object file&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;libjpeg.so.62: cannot open shared object file&amp;lt;/tt&amp;gt;===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
To maximize the amount of memory available for compute jobs, the compute nodes have a less complete system image than the development nodes.   In particular, since interactive graphics libraries like matplotlib and gnuplot are usually used interactively, the libraries for their use are included in the devel nodes' image but not the compute nodes.&lt;br /&gt;
&lt;br /&gt;
Many of these extra libraries are, however, available in the &amp;quot;extras&amp;quot; module.   So adding a &amp;quot;module load extras&amp;quot; to your job submission  script - or, for overkill, to your .bashrc - should enable these scripts to run on the compute nodes.&lt;br /&gt;
&lt;br /&gt;
==Data on SciNet disks==&lt;br /&gt;
&lt;br /&gt;
===How do I find out my disk usage?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
The standard unix/linux utilities for finding the amount of disk space used by a directory are very slow, and notoriously inefficient on the GPFS filesystems that we run on the SciNet systems.  There are utilities that very quickly report your disk usage:&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;'''diskUsage'''&amp;lt;/tt&amp;gt; command, available with the 'extras' module on the login nodes, datamovers and the GPC devel nodes, provides information in a number of ways on the home, scratch, and project 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.&lt;br /&gt;
This information is only updated hourly!&lt;br /&gt;
&lt;br /&gt;
More information about these filesystems is available at the [[Data_Management | Data_Management]].&lt;br /&gt;
&lt;br /&gt;
===How do I transfer data to/from SciNet?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
All incoming connections to SciNet go through relatively low-speed connections to the &amp;lt;tt&amp;gt;login.scinet&amp;lt;/tt&amp;gt; gateways, so using scp to copy files the same way you ssh in is not an effective way to move lots of data.  Better tools are described in our page on [[Data_Management#Data_Transfer | Data Transfer]].&lt;br /&gt;
&lt;br /&gt;
===My group works with data files of size 1-2 GB.  Is this too large to  transfer by scp to login.scinet.utoronto.ca ?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Generally, occasion transfers of data less than 10GB is perfectly acceptible to so through the login nodes. See [[Data_Management#Data_Transfer | Data Transfer]].&lt;br /&gt;
&lt;br /&gt;
===How can I check if I have files in /scratch that are scheduled for automatic deletion?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please see [[Storage_Quickstart#Scratch_Disk_Purging_Policy | Storage At SciNet]]&lt;br /&gt;
&lt;br /&gt;
===How to allow my supervisor to manage files for me using ACL-based commands?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
&lt;br /&gt;
Please see [[Data_Management#File.2FOwnership_Management_.28ACL.29 | File/Ownership Management]]&lt;br /&gt;
&lt;br /&gt;
===Can we buy extra storage space on SciNet?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
Yes, please see [[Data_Management#Buying_storage_space_on_GPFS_or_HPSS | Buying storage space on GPFS or HPSS ]] for more details.&lt;br /&gt;
&lt;br /&gt;
===Can I transfer files between BGQ and HPSS?===&lt;br /&gt;
&lt;br /&gt;
'''Answer:'''&lt;br /&gt;
Yes, please see [https://support.scinet.utoronto.ca/wiki/index.php/BGQ#Bridge_to_HPSS Bridge to HPSS ]  for more details.&lt;br /&gt;
&lt;br /&gt;
==Keep 'em Coming!==&lt;br /&gt;
&lt;br /&gt;
===Next question, please===&lt;br /&gt;
&lt;br /&gt;
Send your question to [mailto:support@scinet.utoronto.ca &amp;lt;support@scinet.utoronto.ca&amp;gt;];  we'll answer it asap!&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=GPC_Quickstart&amp;diff=7800</id>
		<title>GPC Quickstart</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=GPC_Quickstart&amp;diff=7800"/>
		<updated>2015-06-09T11:26:56Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Modules and Environment Variables */&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..gpc04 (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, and fastest in Canada) and is where most computations are to be done at SciNet.  It 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.  The compute nodes are accessed through a queuing system that allows jobs with a minimum of 15minutes and maximum wall time of 48 hours .&lt;br /&gt;
&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;, and from there you can proceed to the 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;gpc03&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;gpc04&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;
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;gpc04&amp;lt;/tt&amp;gt;.  You may also just use &amp;lt;tt&amp;gt;/scinet/gpc/bin/gpcdev&amp;lt;/tt&amp;gt; to take directly to the dev node with lowest cpu load (reassessed every 5 minutes).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
% /scinet/gpc/bin/gpcdev -h&lt;br /&gt;
  Usage: gpcdev [usual ssh options]&lt;br /&gt;
Example: gpcdev -X&lt;br /&gt;
redirected to dev node with lowest cpu load&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These nodes have the same hardware configuration as most of the compute nodes except with more memory -- 8 Nehalem processing cores with 36GB RAM and QDR Infiniband.  You can compile and test your codes on these nodes. To interactively test on more than 8 processors, you can submit an [[GPC_Quickstart#Submitting_an_Interactive_.28Debug.29_Job | interactive job request]].&lt;br /&gt;
&lt;br /&gt;
Your [[Storage_Quickstart | home directory]] is in &amp;lt;tt&amp;gt;$HOME&amp;lt;/tt&amp;gt; (currently &amp;lt;tt&amp;gt;/home/g/group/USER&amp;lt;/tt&amp;gt; but this can change, so it's best to use the environment variable $HOME or &amp;lt;tt&amp;gt;~&amp;lt;/tt&amp;gt; in scripts). You have 10GB there that is backed up. '''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 `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;
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 is available in [[Software_and_Libraries | Software &amp;amp; Libraries]] and can &lt;br /&gt;
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 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 got 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;
===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.   Note that f77/g77 is not supported. &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&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;-openmp&amp;lt;/tt&amp;gt; (&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;pre&amp;gt;-g&amp;lt;/pre&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;
&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 openmpi&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.&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;
# '''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. The devel nodes have 48GB, 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 queuer 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;
or, for more detailed information, using&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ checkjob [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 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;
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&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 intelmpi&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 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;
# 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 fails), '''b''' (to get emails when the job starts), and '''e''' (to get emails when the job ends), or '''n''' (for no emails).&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. 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).&lt;br /&gt;
&lt;br /&gt;
&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. &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.  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;
&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;
'''16G'''&lt;br /&gt;
&lt;br /&gt;
There are 3756 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 84 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 two other stand-alone large memory (128GB) nodes which are primarily to be used for data analysis of runs.  They have 16 cores and are intel machines running linux, but they are of a different architecture than the GPC compute nodes, so codes may have to be compiled separately for these machines.  This also means that some modules that work on the other GPC nodes, such as octave, will not work in the 128G nodes.&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:ppn=16,walltime=1:00:00 -q largemem -I&lt;br /&gt;
&amp;lt;/pre&amp;gt;&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 less 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;
===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>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=7797</id>
		<title>MATLAB</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=7797"/>
		<updated>2015-05-29T17:19:12Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
We often get questions about running MATLAB on GPC.  With a few exceptions for compilers and debuggers, SciNet does not purchase licenses for commercial software.  As such, SciNet does not have a license for MATLAB, nor will it in the future.  If users wish to run MATLAB they must supply their own license, or explore alternative options.  This page gives information about the options for getting your MATLAB code to run, in recommended order. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Not using MATLAB ==&lt;br /&gt;
&lt;br /&gt;
Users can attempt to run MATLAB code using the open-source program Octave, accessible through the octave module.  Though there are some differences between the two programs, Octave has been designed to interpret MATLAB code and can often be used in place of MATLAB.  If your MATLAB code does not use some of the more-fancy MATLAB toolboxes, you may be able to get away with using Octave instead.  Be sure to test your implementation in Octave thoroughly before committing to this option.&lt;br /&gt;
&lt;br /&gt;
It is worth observing that, while convenient for prototyping and running on a single workstation, there are reasons to avoid using MATLAB for larger HPC/ARC projects.  These include the prohibitive license cost for large-scale work, poor performance at scale, and portability issues.  If you can switch to a license-free option, such as Python, it may be worth the effort.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating a MATLAB executable ==&lt;br /&gt;
&lt;br /&gt;
If MATLAB must be used, you may be able to compile your MATLAB code into a stand-alone executable, and run this on a GPC compute node.  The version of MATLAB being used will require a compiler license, and the compilation must be done on a Linux machine.  Once the compilation is done, the executable can be copied to SciNet, and run using the MATLAB Compiler Runtime (MCR), which can be accessed using the mcr module.  The MCR used must be the same version of MATLAB as the compiler.  If the version of MCR that you need is not listed among the mcr module versions, contact us and we will install the version which you require.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tunnelling to a license server ==&lt;br /&gt;
&lt;br /&gt;
If you have access to a non-SciNet MATLAB license server, and have installed MATLAB in your $HOME directory, you can setup your submission script to access the external license server.  The following lines should be added to the beginning of your submission script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PORT=XXX                                         # port number of the license server&lt;br /&gt;
LICENSE_IP=AAA.BBB.CCC.DDD                       # IP address of the license server&lt;br /&gt;
ssh gpc01 -L${PORT}:${LICENSE_IP}:${PORT} -N &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This last line will tunnel the port from the compute node back to the license server, through gpc01.  The port number and IP address of the licence server must be supplied by the system administrator of the license server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a different Consortium ==&lt;br /&gt;
&lt;br /&gt;
Both [https://www.sharcnet.ca/my/software/show/54 Sharcnet] and [https://www.westgrid.ca/support/software/matlab Westgrid] have purchased different types of MATLAB licenses.  Users can contact those consortia if they wish to attempt to run on those systems.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=7796</id>
		<title>MATLAB</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.scinet.utoronto.ca/index.php?title=MATLAB&amp;diff=7796"/>
		<updated>2015-05-29T16:57:44Z</updated>

		<summary type="html">&lt;p&gt;Ejspence: /* Not using MATLAB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
We often get questions about running MATLAB on GPC.  This page gives information about the options for getting your MATLAB code to run, in recommended order.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Not using MATLAB ==&lt;br /&gt;
&lt;br /&gt;
Alternatively, users can attempt to run MATLAB code using the open-source program Octave, accessible through the octave module.  Though there are some differences between the two programs, Octave has been designed to interpret MATLAB code and can often be used in place of MATLAB.  If your MATLAB code does not use some of the more-fancy MATLAB toolboxes, you may be able to get away with using Octave instead.&lt;br /&gt;
&lt;br /&gt;
== Creating a MATLAB executable ==&lt;br /&gt;
&lt;br /&gt;
If MATLAB must be used, you may be able to compile your MATLAB code into a stand-alone executable, and run this on a GPC compute node.  The version of MATLAB being used will require a compiler license, and the compilation must be done on a Linux machine.  Once the compilation is done, the executable can be copied to SciNet, and run using the MATLAB Compiler Runtime (MCR), which can be accessed using the mcr module.  The MCR used must be the same version of MATLAB as the compiler.  If the version of MCR that you need is not listed among the mcr module versions, contact us and we will install the version which you require.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running using a license server ==&lt;br /&gt;
&lt;br /&gt;
If you have access to a non-SciNet MATLAB license server, and have installed MATLAB in your $HOME directory, you can setup your submission script to access the external license server.  The following lines should be added to the beginning of your submission script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PORT=XXX                                         # port number of the license server&lt;br /&gt;
LICENSE_IP=AAA.BBB.CCC.DDD                       # IP address of the license server&lt;br /&gt;
ssh gpc01 -L${PORT}:${LICENSE_IP}:${PORT} -N &amp;amp;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This last line will tunnel the port from the compute node back to the license server, through gpc01.  The port number and IP address of the licence server must be supplied by the system administrator of the license server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Using a different Consortium ==&lt;br /&gt;
&lt;br /&gt;
Both [https://www.sharcnet.ca/my/software/show/54 Sharcnet] and [https://www.westgrid.ca/support/software/matlab Westgrid] have purchased different types of MATLAB licenses.  Users can contact those consortia if they wish to attempt to run on those systems.&lt;/div&gt;</summary>
		<author><name>Ejspence</name></author>
	</entry>
</feed>