R519, Astronomy-Mathematics Building, NTU
Speaker(s):
Kengo Nakajima (University of Tokyo)
Tetsuya Hoshino (University of Tokyo)
Organizer(s):
Weichung Wang (National Taiwan University)
一、 課程背景與目的:
In order to make full use of modern supercomputer systems with multicore/manycore architectures, hybrid parallel programming with message-passing and multithreading is essential. While MPI is widely used for message-passing, OpenMP for CPU and OpenACC for GPU are the most popular ways for multithreading on multicore/manycore clusters. In this 4-day course, we focus on optimization of single node performance using OpenMP and OpenACC for CPU and GPU. We “parallelize” a finite-volume method (FVM) code with Krylov iterative solvers for Poisson’s equation on Reedbush supercomputer at the University of Tokyo with 1.93 PF peak performance (http://www.cc.u-tokyo.ac.jp/system/reedbush/index-e.html), which consists of the most recent CPU’s (Intel Xeon E5-2695 v4 (Broadwell-EP)) and GPU’s (NDIVIA Tesla P100 (Pascal)).
二、課程之大綱:
In the winter schools in 2017, 2018 and 2019, the target application was a 3D FVM code for Poisson’s equation by Conjugate Gradient (CG) iterative method with very simple Point Jacobi preconditioner. This time our target is same FVM code, but linear equations are solved by ICCG (CG iterative method with Incomplete Cholesky preconditioning), which is more complicated, powerful and widely-used in practical applications. Because ICCG includes “data dependency”, where writing/reading data to/from memory could occur simultaneously, parallelization using OpenMP/OpenACC is not straight forward. We need certain kind of reordering in order to extract parallelism. In this 4-day course, lectures and exercise on the following issues will be provided:
‧Overview of Finite-Volume Method (FVM)
‧Kyrilov Iterative Method, Preconditioning
‧Implementation of the Program
‧Introduction to OpenMP/OpenACC
‧Reordering/Coloring Method
‧Parallel FVM by OpenMP/OpenACC
三、課程詳細時間地點以及方式:
July 15, 2019
‧Introduction (by MeDA Lab)
July 16, 2019
‧Introduction
‧Finite-Volume Method (FVM)
‧Login to Reedbush System
‧OpenMP
‧Reordering (1/2)
July 17, 2019
‧Reordering (2/2)
‧Parallel FVM by OpenMP
July 18, 2019
‧Introduction to GPU Programming
‧OpenACC (1/2)
July 19, 2019
‧OpenACC (2/2)
‧Parallel FVM by OpenACC
‧Exercises