This workshop offers a basic introduction to High Performance Computing with an emphasis on practical usage of our systems. This will be of special interest to those of you who have little or no background in using "supercomputers" or may need a little refreshing on such issues as the Unix operating system, code development and debugging, optimization and parallel programming.
The first day starts with a practical introduction on how to access and use multi-user servers and clusters such as the ones at HPCVL. This includes some basics about Unix-type Operating Systems such as Linux and Solaris. Other topics are the usage of programming, debugging, and profiling tools, as well as the submission of batch jobs through scheduling software.
In the afternoon, we cover some programming principles both for serial and parallel applications. Initially, the emphasis is code optimization for high-performance machines, including memory considerations and cache usage. Then, the focus will shift to parallel programming on shared-memory servers and distributed-memory clusters.
The second day will be devoted to practical parallel programming in Fortran and C. In the morning we focus on shared-memory platforms such as multi-core computers. We use the OpenMP compiler directives to create very simple multi-threaded programs that allow the efficient usage of multiple processors in parallel with a minimum of additional effort.
In the afternoon we move on to cluster computing through the usage of the Message Passing Interface (MPI) routines. While somewhat more demanding, these routines allow the creation of parallel programs “from scratch” that will run and scale on any parallel platform.
On both days, we will spend some time using a dedicated mini-cluster at HPCVL to give the participants an opportunity to apply their newly gained knowledge, and to gain some hands-on experience at using HPC facilities.