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 per la programmazione GPU?
- Scelta del framework giusto 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
Paragone
- Confronto tra le caratteristiche, le prestazioni e la compatibilità di OpenCL, CUDA e ROCm
- 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 prossime tappe
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 imparare a utilizzare diversi framework per la programmazione GPU e confrontarne le funzionalità, le prestazioni e la compatibilità
- Sviluppatori che desiderano scrivere codice portatile e scalabile che può essere eseguito su diverse piattaforme e dispositivi
- Programmatori che desiderano esplorare i compromessi e le sfide della programmazione e dell'ottimizzazione GPU
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