Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
Struttura del corso
Introduzione
- Che cos'è OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Panoramica delle funzionalità e dell'architettura di OpenACC
- Impostazione dell'ambiente di sviluppo
Introduttiva
- Creazione di un nuovo progetto OpenACC utilizzando Visual Studio Code
- Esplorazione della struttura e dei file del progetto
- Compilazione ed esecuzione del programma
- Visualizzazione dell'output con printf e fprintf
Direttive e clausole OpenACC
- Comprendere il ruolo delle direttive e delle clausole OpenACC nel codice dell'host e del dispositivo
- Utilizzo della direttiva e delle clausole parallele OpenACC per creare aree parallele e specificare il numero di gang, worker e vettori
- Utilizzo della direttiva e delle clausole del kernel OpenACC per creare regioni del kernel e lasciare che sia il compilatore a decidere il parallelismo
- Utilizzo della direttiva e delle clausole del ciclo OpenACC per parallelizzare i cicli e specificare la distribuzione, la compressione, la riduzione e il riquadro del ciclo
- Utilizzo della direttiva e delle clausole dati OpenACC per gestire lo spostamento dei dati e le aree dati
- Utilizzo della direttiva e delle clausole di aggiornamento OpenACC per sincronizzare i dati tra l'host e il dispositivo
- Utilizzo della direttiva e delle clausole della cache OpenACC per migliorare il riutilizzo dei dati e la località
- Utilizzo della direttiva e delle clausole di routine OpenACC per creare funzioni del dispositivo e specificare il tipo di funzione e la lunghezza del vettore
- Utilizzo della direttiva e delle clausole di attesa OpenACC per sincronizzare eventi e dipendenze
OpenACC API
- Comprendere il ruolo dell'API OpenACC nel programma host
- Utilizzo dell'API OpenACC per interrogare le informazioni e le funzionalità del dispositivo
- Utilizzo dell'API OpenACC per impostare il numero e il tipo di dispositivo
- Utilizzo dell'API OpenACC per gestire errori ed eccezioni
- Utilizzo dell'API OpenACC per creare e sincronizzare eventi
Librerie OpenACC e interoperabilità
- Comprendere il ruolo delle librerie OpenACC e delle funzionalità di interoperabilità nel programma del dispositivo
- Utilizzo di librerie OpenACC, ad esempio matematiche, casuali e complesse, per eseguire attività e operazioni comuni
- Utilizzo delle funzionalità di interoperabilità di OpenACC, come deviceptr, use_device e acc_memcpy, per integrare OpenACC con altri modelli di programmazione, come CUDA, OpenMP e MPI
- Utilizzo delle funzionalità di interoperabilità OpenACC, come host_data e declare, per integrare OpenACC con le librerie GPU, come cuBLAS e cuFFT
Strumenti OpenACC
- Comprendere il ruolo degli strumenti OpenACC nel processo di sviluppo
- Utilizzo degli strumenti OpenACC per profilare ed eseguire il debug dei programmi OpenACC e identificare i colli di bottiglia e le opportunità delle prestazioni
- Utilizzo di strumenti OpenACC, come PGI Compiler, NVIDIA Nsight Systems e Allinea Forge, per misurare e migliorare il tempo di esecuzione e l'utilizzo delle risorse
Ottimizzazione
- Comprendere i fattori che influenzano le prestazioni dei programmi OpenACC
- Utilizzo delle direttive e delle clausole OpenACC per ottimizzare la località dei dati e ridurre i trasferimenti di dati
- Utilizzo delle direttive e delle clausole OpenACC per ottimizzare il parallelismo e la fusione dei cicli
- Utilizzo delle direttive e delle clausole OpenACC per ottimizzare il parallelismo e la fusione del kernel
- Utilizzo di direttive e clausole OpenACC per ottimizzare la vettorializzazione e l'auto-tuning
Riepilogo e prossime tappe
Requisiti
- Comprensione del linguaggio C/C++ o Fortran e dei concetti di programmazione parallela
- Conoscenza di base dell'architettura dei calcolatori e della gerarchia della memoria
- Esperienza con gli strumenti da riga di comando e gli editor di codice
Pubblico
- Sviluppatori che desiderano imparare a utilizzare OpenACC per programmare dispositivi eterogenei e sfruttarne il parallelismo
- Sviluppatori che desiderano scrivere codice portatile e scalabile che può essere eseguito su diverse piattaforme e dispositivi
- Programmatori che desiderano esplorare gli aspetti di alto livello della programmazione eterogenea e ottimizzare la produttività del codice
28 ore
Recensioni (2)
Molto interattivo con vari esempi, con una buona progressione di complessità tra l'inizio e la fine della formazione.
Jenny - Andheo
Corso - GPU Programming with CUDA and Python
Traduzione automatica
Allenatori, energia e umorismo.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Corso - NVIDIA GPU Programming - Extended
Traduzione automatica