Parallel Computing

Python for Scientific Computing

Python is a modern general purpose programming language that is popular in scientific computing for its readable syntax and extremely rich ecosystem of scientific and mathematical modules. The morning section will provide an introduction to some widely used packages, including common idioms for manipulating and visualizing data. The afternoon section will cover advanced modules and techniques relevant to high performance computing.


This tutorial provides an introduction on how to write a parallel program using OpenMP, and will help researchers write better and more portable parallel codes for shared memory Linux nodes. The course will cover the Compiler Directives (44), Runtime Library Routines (35), and Environment Variables (13) relevant to OpenMP. OpenMP supports C/C++ and Fortran implementations. Examples of how to enable OpenMP on the Intel, GNU, and PGI compilers will be given. The fork-join model of thread parallel execution will be described.

Parallel Computing Overview

This tutorial will help users learn the basics of parallel computation methods, including strategies for collecting calculations together for parallel execution. A brief description of parallel programming using MPI message passing will be given. A brief description of parallel programming using OpenMP will also be given. The hybrid MPI/OpenMP model will be briefly described. This will be a fast crash course on the most basic parallel computation and programming methods. Examples of how to compile and execute simple parallel programs will be given. 

Compiling and Debugging

This tutorial will help users learn the basics of compiling and debugging their code on MSI systems. Particular attention will be paid to code written in Fortran, C, and C++. Basic methods for debugging will be outlined, with users being able to explore different debugging tools. This tutorial will focus primarily on compiling serial programs,but brief information on compiling and debugging parallel programs will also be given. Attendees should have a basic knowledge of Linux and rudimentary knowledge of a programming language.

Interactive Computing

This two part tutorial will first introduce you to the concept of interactive high performance computing, as distinct from batch computing. We will cover the Citrix (Windows) and NICE EnginFrame (Linux) interactive computing environments hosted by MSI. Attendees will learn how to launch virtual desktops at MSI, connect to a variety of resources, load software modules, and build complex research workflows.