HPC Tutorials

The HPC group offered tutorials in the fall of 2017 on many aspects of high performance computing. These started with introductory sessions and progressed on to more advanced topics and topics of interest to researchers. The topics included:

  • Introduction to Linux and Linux for HPC
  • Overview of HPC
  • Overview and introduction to message passing interface (MPI)
  • Intro to Parallel IO
  • Batch scripting
  • Efficient running of many small core count jobs including serial and embarrassing parallel
  • OpenMP
  • Introduction to programming for GPUs
  • Debugging
  • Profiling and tracing
  • Memory profiling
  • Serial and parallel libraries
  • Thread affinity
  • Compiling for multiple architectures
  • Running TensorFlow
  • Other topics?

We will post slides for the presentations as they become available. Some sessions maybe video recorded.

Tentative Schedule:

September 6
Introduction to High Performance computing
What is High performance computing? Why is it of interest? When is it applicable or not? Overview of hardware.
September 13
Linux for HPC
A very fast paced introduction to the common operating system for most HPC systems. Lots of tips and tricks. If you have only ever worked on a Windows machine this session is a must.
Slides and Video
September 20
Message Passing Interface (MPI) Introduction
The Message Passing Interface Standard (MPI) is a message passing library standard. MPI is the basis of most large scale parallel HPC applications. This will provide a “hello world” introduction and discussion of some of the more used calls.
Slides 1
Slides 2
Slides 3
September 20
Message Passing Interface – Sample Applications
We will show building of a “simple” MPI application.
Slides 1
Slides 2
Slides 3
September 27
OpenMP – Single node threaded applications
OpenMP specifies a collection of compiler directives, library routines, and environment variables that can be used to specify shared-memory parallelism in C, C++ and Fortran programs.
October 11
Batch Scripting for HPC<
Show a bunch of techniques and tricks for batch scripting for parallel jobs.
batch_slurm the movie
October 11
Bag of Task / Embarrassing Parallel / Large numbers of serial applications
Say you have a bunch of similar but independent jobs to run. This will show you ways to do that.
October 18
Memory Profiling and Building for multiple architectures
Two unrelated short topics. First we will show subroutine calls for tracking memory usage and then talk about building applications that need to run on several generations of X86 chips.
Slides for both
October 25
Hybrid Applications and Thread Affinity
We will combine MPI and OpenMP to make a hybrid program. Also, we will show how to ensure that you are using all available cores.
November 1
Introduction to the DDT program debugger
November 8
Introduction to GPUs and Machine learning (Running Tensorflow)
Discuss GPUs, GPU programming, and the in demand Tensorflow program for Machine learning.
November 29
Technical Session
Discussion of a technique for finding the optimum function, F(x) such that F(x) closely matches a target function, T(x) and F(x) has a low curvature.
December 6


If you are not familiar with Linux it is strongly suggested that you attend the Introduction to Linux and Linux for HPC session before attending later sessions.

The tutorials will be held in classrooms that have Windows (Adit) machines. However it is recommended that you bring your laptop instead of reling on the Windows machines.

Laptop software recommendations:

If you have a Linux laptop you should be good to go.

If you have a Macintosh, it is suggested that you install XQuartz. This will be needed for some of the GUI based topics such as Debugging and Profiling.

Windows Laptop software recommendations:

If you run Windows on your laptop we have a set of recommendations for software. Each of these recommendations will give you various levels of functionality.

Easy install and basic functionality

  • Firefox web browser
  • Firessh Firefox addon http://firessh.net/
  • Fireftp Firefox addon http://fireftp.net/ (You may need to download an older version for compatability)

Most difficult install — high functionality

This option gives you a nearly full Linux operating system running along side of Windows. The instructions under Bash on Ubuntu on Windows show how to install the base system. Unfortunately, the X Window system needed for running GUI based programs is a seperate install. One way to get the required components is to install Xming and XLanuch. Note: these also can provide X Window support for the Putty and BitWise ssh clients. But we are not recommending using either of these two packages at this time.

The following page discusses the setup of Xming. It also discusses putty which had been deprecated. http://www.geo.mtu.edu/geoschem/docs/putty_install.html

Relatively Easy install — good functionality — Easy to use

MobaXterm provides another Linux like subsystem operating under Windows. It also adds GUI based terminal connection tools and file transfer tools and an editor. It supports remore X Windows also.

A few notes:

The Free version works fine for most people. There are actually two free versions. The “Installer edition” is most likely better.

The shortcut installed on the Windows desktop does not work. Delete it and start from the menu.

When you start MobaXterm if you see the message “CygUtils not installed on you system” follow the directions to install it. The plugin needs to be installed in the same folder as the MobaXterm program. You may need to save it to your desktop first and drag it into your install directory.