A*STAR Computational Resource Centre (A*CRC) and the University of Illinois Advanced Digital Sciences Center (ADSC) are pleased to announce Singapore's first High Performance Computing (HPC) Academy.
Event: HPC Academy
Dates: This course consisting of lectures, assignments, and handson training will take place over three months, from February 28 until June 13, 2013. The sessions will be held on Thursday evenings from 6:00  9:00 PM.
Venue: 1 Fusionopolis Way #1701 Connexis South, Singapore 138632
Instructors: 
Dr Dominic (Siu Hung) Chien, A*STAR Computational Resource Centre 

Dr PierreYves Aquilanti, A*STAR Computational Resource Centre 

Dr Grayson Williams, A*STAR Computational Resource Centre 

Prof. Laxmikant Kale, Department of Computer Science, University of Illinois at UrbanaChampaign 

Dr David Bock, National Center for Supercomputing Applications, University of Illinois at UrbanaChampaign 

Dr Dave Semeraro, National Center for Supercomputing Applications, University of Illinois at UrbanaChampaign 
High Performance Computing represents the absolute zenith of computing power. HPC systems consist of thousands or millions of processor cores, joined together with highspeed networks, terabytes or petabytes of RAM and storage, and accelerators such as GPUs in order to process massive, computationally intensive datasets. Using and programming HPC systems requires a different approach to traditional serial programming, with unique challenges and opportunities.
The course is designed to help computational scientists and engineers harness the power of parallel computing techniques in applications such as fluid dynamics, molecular dynamics, biology, quantum chemistry, climate and weather modelling, geophysics and more. The course will cover programming methods such as OpenMP and MPI, parallel debugging, visualisation, the NAG mathematical libraries, linear algebra routines, and PETSc, with ample handson work sessions on A*CRC's HPC systems. The course will consist of lectures, inclass assignments and examples, and takehome exercises, culminating in a final exam or project at the end of the course, to be graded on a pass/fail basis. The course tuition will be a onetime fee of S$800, and class enrollment will be considered on a firstcome basis, up to a maximum class size of 35. Certification will be jointly awarded by University of Illinois and A*CRC.
Prerequisites: Attendees should be comfortable in a UNIX or Linux environment, and be proficient in either the C/C++ or Fortran programming languages.
We look forward to your participation.
Course Fee: S$800 (inclusive of GST of 7%)
Registration is now closed.
Course Syllabus:
Introduction to HPC Date: Thursday 28 February 18.00  21.00 Instructor: PierreYves Aquilanti
The Introduction to HPC course will introduce the students to the key concepts of HPC in conjunction with computational science, and will serve as a basis for understanding the techniques developed in the following courses. During this course, we will present an overview of High Performance Computing, as well as the concepts of performance and scalability and how they can be affected. We will then review developments in HPC such as Amdahl's Law and Moore's Law, which will help the students to understand present and past architectures. After this course, the students will be able to broadly understand the world of High Performance Computing.
OpenMP Programming Date: Thursday 07 March 18.00  21.00 Instructor: Grayson Williams
OpenMP is a programming specification for C and Fortran for sharedmemory systems. This course will cover OpenMP for C and Fortran, focusing on directives/pragmas, sections, loops, critical code, reduction and variable scoping. It will be followed a week later by a handson session.
MPI Programming Date: Thursday 21 March 18.00  21.00 Instructor: Dominic (Siu Hung) Chien
MPI, or Message Passing Interface, is a programming specification for C and Fortran for distributedmemory systems. This course will cover the usage of MPI with C and Fortran, focusing on message passing concepts, MPI functions, blocking and nonblocking communications, MPI datatypes, and pointtopoint and global communications. It will be followed a week later by a handson session.
Advanced Parallel Programming Date: Thursday 04 April 18.00  21.00 Instructor: PierreYves Aquilanti
In the Advanced Parallel Programming course, we will introduce the students to different kind of techniques that can be used to parallelize their code and efficiently process data. We will first study the use of Cartesian grids in MPI, which are commonly used in computational science (e.g. for finite difference methods). We then present mixing OpenMP and MPI in the same program to achieve efficient code on hybrid shared/distributedmemory systems, and we also review the tools used to import or export data in a parallel manner. This course will be followed by a handson session where the students will have the opportunity to put their knowledge into practice. At the end of this course, the students will be able to understand and put into practice the concepts of hybrid parallelism, Cartesian grids in MPI, and parallel I/O.
Parallel Debugging Date: Thursday 18 April 18.00  21.00 Instructor: Grayson Williams
This course will teach parallel debugging using the Allinea DDT parallel debugger, for which A*STAR and NUS possess a joint 512node site licence. Topics to be covered include: deadlock, memory leaks, segmentation faults, incorrect results, and memory errors.
Visualisation Date: Thursday 25 April 18.00  21.00 Instructors: David Bock and Dave Semeraro
Visualization is the process of converting large datasets into images such that the patterns and anomalies present in data are more humanfriendly. Visualization of scientific data is an important component of HPC. This course will introduce sequential visualization.
BLAS/LAPACK Date: Thursday 02 May 18.00  21.00 Instructor: Dominic (Siu Hung) Chien
BLAS, or Basic Linear Algebra Subprograms, is a threadsafe library for vector and matrix operations, consisting of 57 functions to perform vector, matrix, and sparse vector operations. LAPACK, or Linear Algebra PACKage, is a threadsafe library of approximately 320 linear algebra routines for solving linear equations, linear least squares problems, eigenvalue problems and singular value decomposition. This course will provide an introduction to using BLAS and LAPACK in a parallel environment to solve common linear algebra, vector and matrix problems. This course will be followed by a handson session the following week.
Parallel Programming Using CUDA Date: Thursday 09 May 18.00  21.00 Instructor: Kyle Rupnow
Parallel computing with GPUs is becoming more and more widely used in demanding generalpurpose scientific and engineering applications. CUDA has been widely adopted throughout the world as the most accessible and intuitive way to achieve massive parallelism  and this is reflected by large number of Universities which include CUDA as part of their standard curriculum, hundreds of technical papers and parallel programming textbooks.
The following topics will be covered in this lecture:
(1) Introduction to GPU computing
(2) CUDA programming basics
(3) CUDA API and data allocation
(4) Matrix multiplication in CUDA
(5) CUDA memory model and tiled parallel algorithm
Parallel computing with GPUs is becoming more and more widely used in demanding generalpurpose scientific and engineering applications. CUDA has been widely adopted throughout the world as the most accessible and intuitive way to achieve massive parallelism  and this is reflected by large number of Universities which include CUDA as part of their standard curriculum, hundreds of technical papers and parallel programming textbooks.
The following topics will be covered in this lecture: (1) Introduction to GPU computing (2) CUDA programming basics (3) CUDA API and data allocation (4) Matrix multiplication in CUDA (5) CUDA memory model and tiled parallel algorithm
PETSc Date: Thursday 16 May 18.00  21.00 Instructor: PierreYves Aquilanti
The Portable, Extensible Toolkit for Scientific Computation (PETSc) is a suite of data structures and routines for the scalable (parallel) solution of scientific applications modeled by partial differential equations. This library is commonly used in computational science and is greatly praised for its quality and efficiency. This course will focus on the usage of parallel linear and nonlinear equation solvers, parallel matrix, and vector assembly routines. We will also review some advanced uses of this library, such as usage in conjunction with MPI libraries, and SLEPc, a library built upon PETSc which focuses on eigenvalue problems. This course will be followed by a handson session the following week.
NAG Libraries Date: Thursday 30 May 18.00  21.00 Instructor: NAG
The purpose of this course is to introduce the Numerical Algorithms Group (NAG) Libraries, compilers and tools. NAG produces numerical, data mining components, statistical and visualisation software, compilers and application development tools, for the solution of problems in a wide range of areas such as science, engineering, financial analysis and research. The entire NAG Library of 1,600 mathematical routines and other tools has been installed on A*CRC computers (Fuji, Axle and Aurora).
Final Exam Date: Thursday 13 June
The course will be graded and the certificate assigned on a pass/fail basis, to be determined on the basis of course attendance and a final examination. 