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
  • Alessandro Cermenati
  • Andrea Parenti
  • Antonio Cruciani
  • Arianna Poli
  • Arturo De Marinis
  • Asish Moharana
  • Atul Prajapati
  • Barbara Demin
  • Camilla Petrucci
  • Caterina Trimarelli
  • Cecilia Ferrari
  • Dounia Helis
  • Elena Codazzo
  • Eleonora Loffredo
  • Emanuele Avocone
  • Emerson Sales
  • Florin Chivoiu
  • Francesca Alemanno
  • Gabriele Tagliente
  • Gianluca Ciaglia
  • Gianluca Napoletano
  • Giorgio Dho
  • Giovanni Benato
  • Helena Biscevic
  • Irene Cagnoli
  • Jacopo Tissino
  • Joaquín Amigó Vega
  • Jose Alejandro Concepcion Alvarez
  • Laura Marini
  • Leandro Silveri
  • Luca Russillo
  • Massimiliano De Deo
  • Massimo Ciacchi
  • Matteo Di Giovanni
  • Matthew Stukel
  • Michele Morella
  • Miriam Olmi
  • Mirko Rossi
  • Miryam Gnazzo
  • Natalia Di Marco
  • Nazzareno Taborgna
  • Paolo Settembri
  • Pierluigi Giuliani
  • Pierpaolo Bilotto
  • RAJU ADHIKARY
  • Roberto Giuliani
  • Samanta Macera
  • Samira Silva
  • Samuele Torelli
  • Sandra Parlati
  • Saqib Hussain
  • Simone Di Muzio
  • Simone Quitadamo
  • Stefano Di Lorenzo
  • Stefano Ghislandi
  • Stefano Sicilia
  • Stefano Stalio
  • Tomislav Andric
  • Ulyana Dupletsa
    • 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)