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'è la programmazione GPU?
- Perché usare la programmazione GPU?
- Quali sono le sfide e i compromessi della programmazione GPU?
- Quali sono i framework e gli strumenti per GPU la programmazione?
- Scelta del framework e dello strumento giusti per l'applicazione
OpenCL
- Che cos'è OpenCL?
- Quali sono i vantaggi e gli svantaggi di OpenCL?
- Impostazione dell'ambiente di sviluppo per OpenCL
- Creazione di un programma di base OpenCL che esegua l'addizione vettoriale
- Utilizzo dell'API OpenCL per interrogare le informazioni sul dispositivo, allocare e deallocare la memoria del dispositivo, copiare i dati tra host e dispositivo, avviare i kernel e sincronizzare i thread
- Utilizzo del linguaggio OpenCL C per scrivere kernel che vengono eseguiti sul dispositivo e manipolano i dati
- Utilizzo di OpenCL funzioni, variabili e librerie integrate per eseguire attività e operazioni comuni
- Utilizzo di OpenCL spazi di memoria, come globale, locale, costante e privato, per ottimizzare i trasferimenti di dati e gli accessi alla memoria
- Utilizzo del modello di esecuzione OpenCL per controllare gli elementi di lavoro, i gruppi di lavoro e gli intervalli ND che definiscono il parallelismo
- Debug e test OpenCL di programmi utilizzando strumenti come CodeXL
- Ottimizzazione OpenCL dei programmi utilizzando tecniche quali la coalescenza, il caching, il prefetching e il profiling
CUDA
- Che cos'è CUDA?
- Quali sono i vantaggi e gli svantaggi di CUDA?
- Configurazione dell'ambiente di sviluppo per CUDA
- Creazione di un programma CUDA di base che esegue l'addizione vettoriale
- Utilizzo dell'API CUDA per interrogare le informazioni sul dispositivo, allocare e deallocare la memoria del dispositivo, copiare i dati tra host e dispositivo, avviare kernel e sincronizzare i thread
- Utilizzo del linguaggio CUDA C/C++ per scrivere kernel che vengono eseguiti sul dispositivo e manipolano i dati
- Utilizzo di funzioni, variabili e librerie predefinite di CUDA per eseguire attività e operazioni comuni
- Utilizzo degli spazi di memoria CUDA, ad esempio globale, condiviso, costante e locale, per ottimizzare i trasferimenti di dati e gli accessi alla memoria
- Utilizzo del modello di esecuzione CUDA per controllare i thread, i blocchi e le griglie che definiscono il parallelismo
- Debug e test di programmi CUDA utilizzando strumenti quali CUDA-GDB, CUDA-MEMCHECK e NVIDIA Nsight
- Ottimizzazione dei programmi CUDA utilizzando tecniche quali l'unione dei dati, la memorizzazione nella cache, il prefetching e la profilatura
ROCm
- Che cos'è ROCm?
- Quali sono i vantaggi e gli svantaggi del ROCm?
- Impostazione dell'ambiente di sviluppo per ROCm
- Creazione di un programma ROCm di base che esegue l'addizione vettoriale
- Utilizzo dell'API ROCm per interrogare le informazioni sul dispositivo, allocare e deallocare la memoria del dispositivo, copiare i dati tra host e dispositivo, avviare kernel e sincronizzare i thread
- Utilizzo del linguaggio ROCm C/C++ per scrivere kernel che vengono eseguiti sul dispositivo e manipolano i dati
- Utilizzo di funzioni, variabili e librerie predefinite di ROCm per eseguire attività e operazioni comuni
- Utilizzo degli spazi di memoria ROCm, ad esempio globale, locale, costante e privato, per ottimizzare i trasferimenti di dati e gli accessi alla memoria
- Utilizzo del modello di esecuzione ROCm per controllare i thread, i blocchi e le griglie che definiscono il parallelismo
- Debug e test di programmi ROCm utilizzando strumenti come ROCm Debugger e ROCm Profiler
- Ottimizzazione dei programmi ROCm utilizzando tecniche quali l'unione dei dati, la memorizzazione nella cache, il prefetching e la profilazione
ANCA
- Che cos'è l'HIP?
- Quali sono i vantaggi e gli svantaggi dell'HIP?
- Impostazione dell'ambiente di sviluppo per HIP
- Creazione di un programma HIP di base che esegue l'addizione vettoriale
- Utilizzo del linguaggio HIP per scrivere kernel che vengono eseguiti sul dispositivo e manipolano i dati
- Utilizzo di funzioni, variabili e librerie predefinite HIP per eseguire attività e operazioni comuni
- Utilizzo degli spazi di memoria HIP, ad esempio globale, condiviso, costante e locale, per ottimizzare i trasferimenti di dati e gli accessi alla memoria
- Utilizzo del modello di esecuzione HIP per controllare i thread, i blocchi e le griglie che definiscono il parallelismo
- Debug e test di programmi HIP utilizzando strumenti come ROCm Debugger e ROCm Profiler
- Ottimizzazione dei programmi HIP mediante tecniche quali l'unione dei dati, la memorizzazione nella cache, la prelettura e la profilatura
Paragone
- Confronto tra le caratteristiche, le prestazioni e la compatibilità di OpenCL, CUDA, ROCm e HIP
- Valutazione GPU dei programmi utilizzando benchmark e metriche
- Imparare le best practice e i suggerimenti per GPU la programmazione
- Esplorare le tendenze e le sfide attuali e future della programmazione GPU
Riepilogo e passo successivo
Requisiti
- Comprensione del linguaggio C/C++ 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 apprendere le basi della programmazione GPU e i principali framework e strumenti per lo sviluppo di GPU applicazioni
- Sviluppatori che desiderano scrivere codice portatile e scalabile che può essere eseguito su diverse piattaforme e dispositivi
- Programmatori che desiderano esplorare i vantaggi e le sfide della programmazione e dell'ottimizzazione GPU
21 ore
Recensioni (1)
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