Struttura del corso

Introduzione

  • Cos'è OpenACC?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Panoramica delle funzionalità e dell'architettura di OpenACC
  • Configurazione dell'ambiente di sviluppo

Iniziamo

  • Creare un progetto OpenACC in Visual Studio Code
  • Esplorare la struttura del progetto e i file
  • Compilare ed eseguire il programma
  • Visualizzare l'output con printf e fprintf

Direttive e Clausole OpenACC

  • Capire le direttive e le clausole di OpenACC
  • Utilizzare direttive parallele per creare regioni parallele
  • Utilizzare direttive kernel per il parallelismo gestito dal compilatore
  • Utilizzare direttive loop per parallelizzare i cicli
  • Gestire il movimento dei dati con direttive data
  • Sincronizzare i dati con direttive update
  • Migliorare la riutilizzabilità dei dati con direttive cache
  • Creare funzioni di dispositivo con direttive routine
  • Sincronizzare gli eventi con direttive wait

API OpenACC

  • Capire il ruolo dell'API OpenACC
  • Ricerche informazioni e capacità del dispositivo
  • Impostare il numero e il tipo di dispositivo
  • Gestire errori ed eccezioni
  • Creare e sincronizzare eventi

Librerie OpenACC e Interoperabilità

  • Capire le librerie e l'interoperabilità di OpenACC
  • Utilizzare librerie matematiche, random e complesse
  • Integrare con altri modelli (CUDA, OpenMP, MPI)
  • Integrare con librerie GPU (cuBLAS, cuFFT)

Strumenti OpenACC

  • Capire gli strumenti di sviluppo OpenACC
  • Profilare e debuggare programmi OpenACC
  • Analisi delle prestazioni con PGI Compiler, NVIDIA Nsight Systems, Allinea Forge

Ottimizzazione

  • Fattori che influiscono sulle prestazioni di un programma OpenACC
  • Ottimizzare la località dei dati e ridurre i trasferimenti
  • Ottimizzare il parallelismo e la fusione dei loop
  • Ottimizzare il parallelismo e la fusione dei kernel
  • Ottimizzare la vettorizzazione e l'autotuning

Riassunto e Passi Successivi

Requisiti

  • Conoscenza della lingua C/C++ o Fortran e dei concetti di programmazione parallela
  • Nozioni di base dell'architettura del computer e della gerarchia della memoria
  • Esperienza con strumenti da riga di comando e editor di codice

Pubblico Obiettivo

  • Sviluppatori che desiderano imparare a utilizzare OpenACC per programmare dispositivi eterogenei e sfruttarne il parallelismo
  • Sviluppatori che desiderano scrivere codice portatile e scalabile che possa eseguirsi su diverse piattaforme e dispositivi
  • Programmatori che desiderano esplorare gli aspetti di alto livello della programmazione eterogenea e ottimizzare la produttività del proprio codice
 28 Ore

Numero di Partecipanti


Prezzo per Partecipante

Corsi in Arrivo

Categorie relative