HIGH PERFORMANCE COMPUTING

Computer Science HIGH PERFORMANCE COMPUTING

0522500136
DIPARTIMENTO DI INFORMATICA
EQF7
COMPUTER SCIENCE
2020/2021



YEAR OF DIDACTIC SYSTEM 2016
SECONDO SEMESTRE
CFUHOURSACTIVITY
648LAB
Objectives
THIS COURSE AIMS TO BUILD THE PROGRAMMING SKILLS AND TO ACQUIRE THE KNOWLEDGE ABOUT ALGORITHMS, APPLICATIONS AND COMPUTER ARCHITECTURES FOR MODERN HIGH PERFORMANCE COMPUTING.

KNOWLEDGE AND UNDERSTANDING: THE LEARNING OBJECTIVES OF THIS COURSE ARE TO ACQUIRE KNOWLEDGE AND PROGRAMMING TECHNIQUES FOR HPC COMPUTING SYSTEMS. STUDENTS WILL DEVELOP AND ACQUIRE KNOWLEDGE ON THE FOLLOWING TOPICS:
• HPC ARCHITECTURES
• PROGRAMMING MODELS FOR HPC AND PARALLEL PROGRAMMING PATTERNS
• PROGRAMMING ON SHARED MEMORY (OPENMP)
• HETEROGENOUS AND GPU PROGRAMMING (CUDA/OPENCL/SYCL)
• DISTRIBUTED MEMORY PROGRAMMING (MPI)
• VECTORIZATION (INTRINSICS)
• PARALLEL PROGRAM OPTIMIZATION AND TUNING
• COMPILATION FOR HPC AND AUTOMATIC PARALLELIZATION
• HPC APPLICATIONS

APPLYING KNOWLEDGE AND UNDERSTANDING: THE STUDENTS WILL BE ABLE TO APPLY THEIR KNOWLEDGE AND ACQUIRE THE FOLLOWING SKILLS:
• BE ABLE TO PROGRAM MULTICORE APPLICATION WITH OPENMP
• BE ABLE TO PROGRAM A GPU/HETEROGENOUS APPLICATION
• BE ABLE TO PROGRAM A DISTRIBUTED APPLICATION WITH MPI
• TO RECOGNIZE AND APPLY PARALLEL PROGRAMMING PATTERN
• BE ABLE TO UNDERSTAND AND EXPLOIT COMPILATION TECHNIQUES IN HPC APPLICATIONS
• TO BE ABLE TO APPLY OPTIMIZATION TECHNIQUES FOR PARALLEL AND DISTRIBUTED APPLICATIONS
Prerequisites
THE COURSE REQUIRES A GOOD PROFICIENCY IN TECHNICAL ENGLISH AND GOOD KNOWLEDGE ON
• C PROGRAMMING IN UNIX/LINUX
• ALGORITHMS AND DATA STRUCTURES
• COMPUTER ARCHITECTURE
Contents
THE COURSE INCLUDES LECTURES WITH EXERCISE SESSIONS WHERE STUDENTS CAN DIRECTLY APPLY THE ACQUIRED KNOWLEDGE WITH PROGRAMMING TASKS.

LECTURES:
• INTRODUCTION TO HIGH PERFORMANCE COMPUTING
• PARALLEL PROGRAMMING PATTERNS
• MULTICORE PROGRAMMING / OPENMP LAB
• HETEROGENOUS AND GPU PROGRAMMING / LAB ON CUDA/OPENCL/SYCL
• VECTORIZATION / LAB ON INTRINSICS PROGRAMMING
• DISTRIBUTED PROGRAMMING / MPI LAB
• COMPILATION FOR HPC / LLVM LAB
• LOOP OPTIMIZATION AND TUNING / LAB ON LOOP OPTIMIZATIONS
• PERFORMANCE ANALYSIS IN HPC APPLICATIONS / LAB ON ROOFLINE MODEL
• HPC APPLICATIONS AND COMPUTATIONAL DWARFS
Teaching Methods
THE COURSE COMPRISES 48 HOURS OF LAB.

IN EACH LECTURE, STUDENTS LEARN THE THEORETICAL FUNDAMENTAL OF THE TOPICS, WHICH ARE FOLLOWED BY PROGRAMMING SESSIONS WHERE STUDENTS CAN APPLY THE ACQUIRED KNOWLEDGE BY PROGRAMMING PARALLEL ARCHITECTURES WITH DIFFERENT PROGRAMMING MODELS.

THE TEACHING MATERIALS INCLUDES SLIDES, ADDITIONAL MATERIAL FROM SELECTED BOOKS, A LIST OF SCIENTIFIC PUBLICATIONS, AND ADDITIONAL MATERIAL SUCH AS REFERENCE SOURCE CODES PROVIDED IN THE LABS. STUDENTS WILL HAVE TO SUBMIT A FINAL PROJECT, WHOSE EVALUATION WILL CONTRIBUTE TO THE FINAL VOTE.
ATTENDANCE IS HIGHLY RECOMMENDED.
Verification of learning
THERE WILL BE A WRITTEN EXAMINATION AND A PROJECT. THE FINAL GRADE IS A WEIGHTED AVERAGE OF THE TWO COMPONENTS.
Texts
• DESIGNING AND BUILDING PARALLEL PROGRAMS. IAN FOSTER. ADDISON-WESLEY, 1995, ISBN 978-0201575941
• THE OPENMP COMMON CORE. BY TIMOTHY G. MATTSON, YUN (HELEN) HE AND ALICE E. KONIGES. 2019, MIT PRESS
• JASON SANDERS, EDWARD KANDROT, CUDA BY EXAMPLE: AN INTRODUCTION TO GENERAL-PURPOSE GPU PROGRAMMING, ADDISON-WESLEY, 2010, ISBN 978-0131387683
• PETER PACHECO, AN INTRODUCTION TO PARALLEL PROGRAMMING, MORGAN KAUFMANN, 2011, ISBN 978-0123742605
More Information
FOR MORE INFORMATION CONTACT THE TEACHER BY EMAIL: BCOSENZA@UNISA.IT
  BETA VERSION Data source ESSE3 [Ultima Sincronizzazione: 2020-10-26]