Loading [MathJax]/extensions/tex2jax.js

Introduction to HPC-GPU Programming

Europe/Rome
Rectorate/Building-Auditorium (GSSI)

Rectorate/Building-Auditorium

GSSI

20
Carmelo Evoli (GSSI), Sandra Parlati (LNGS/INFN)
Description

Description

This course will teach the fundamentals needed to utilize the ever-increasing power of the GPUs and HPC clusters.

The course will start with an architectural overview of modern HPC and GPU based heterogeneous architectures, focusing on its computing power versus data movement needs.

The course will cover classical parallel computing MPI and OpenMP programming and both a high level (pragma-based) GPU programming approach with OpenACC for a fast porting startup, and lower level approaches based on nVIDIA CUDA programming language for finer grained computational intensive tasks.

A particular attention will be given on performance tuning and techniques to overcome common data movement bottlenecks and patterns.

Venue

➡️ Gran Sasso Science Institue Auditorium 

Lecturers

  • Luca Ferraro (Senior Software Developer at CINECA)
  • Sergio Orlandini (HPC Software Engineer at CINECA) 

Skills

By the end of the course, participants will be able to:

  • understand the strengths and weaknesses of GPUs as accelerators
  • program GPU accelerated applications using both higher and lower level programming approaches
  • overcome problems and bottlenecks regarding data movement between host and device memories
  • make best use of independent execution queues for concurrent computing/data-movement operations

Target audience: 

Researchers and programmers interested in porting scientific applications or use efficient post-process and data-analysis techniques in modern heterogeneous HPC architectures.

Pre-requisites: 

A basic knowledge of C or Fortran is mandatory. Programming and Linux or Unix. A basic knowledge of any parallel programming technique/paradigm is recommended.

 

Organised by

GSSI    

 

Participants
    • 1
      Opening
      Speaker: Carmelo Evoli (GSSI)
    • 2
      Introduction to Parallel Computing (concurrency, Amdahl's law, scaling, performance, comunications impacts, etc)
    • 10:45
      Coffee break
    • 3
      Introduction to Distributed and Shared Memory models (examples using MPI and OpenMP)
    • 12:30
      Lunch break
    • 4
      Introduction to modern HPC architectures and HPC clusters (memory hierarchy, latencies, NUMA latencies, IO problems)
    • 15:15
      Coffee break
    • 5
      Exercises and examples using MPI and OpenMP
    • 6
      Introduction to GPU Architectures
    • 10:45
      Coffee break
    • 7
      Introduction to GPU Computing with OpenACC
    • 12:30
      Lunch break
    • 8
      Introduction to GPU Computing with nvidia CUDA
    • 15:15
      Coffee break
    • 9
      Exercises and examples using CUDA
    • 10
      CUDA Memory Model and Examples (1/2)
    • 10:45
      Coffee break
    • 11
      CUDA Memory Model and Examples (2/2)
    • 12:30
      Lunch break
    • 12
      Controlling GPU/CPU concurrency multi-GPU (1/2)
    • 15:15
      Coffee break
    • 13
      Controlling GPU/CPU concurrency multi-GPU (2/2)