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'è OpenCL?
- OpenCL contro CUDA contro SYCL
- Panoramica delle funzionalità e dell'architettura di OpenCL
- Impostazione dell'ambiente di sviluppo
Introduttiva
- Creazione di un nuovo progetto OpenCL utilizzando il codice Visual Studio
- Esplorazione della struttura e dei file del progetto
- Compilazione ed esecuzione del programma
- Visualizzazione dell'output con printf e fprintf
OpenCL API
- Informazioni sul ruolo dell'API OpenCL nel programma host
- Utilizzo dell'API OpenCL per eseguire query sulle informazioni e sulle funzionalità del dispositivo
- Utilizzo dell'API OpenCL per creare contesti, code di comandi, buffer, kernel ed eventi
- Utilizzo dell'API OpenCL per accodare i comandi, ad esempio lettura, scrittura, copia, mappatura, annullamento mappatura, esecuzione e attesa
- Utilizzo dell'API OpenCL per gestire errori ed eccezioni
OpenCL C
- Comprendere il ruolo di OpenCL C nel programma del dispositivo
- Utilizzo di OpenCL C per scrivere kernel che vengono eseguiti sul dispositivo e manipolano i dati
- Utilizzo di OpenCL tipi di dati, qualificatori, operatori ed espressioni C
- Utilizzo di OpenCL funzioni integrate in C, come matematica, geometrica, relazionale, ecc.
- Utilizzo di OpenCL estensioni e librerie C, come atomic, image, cl_khr_fp16, ecc.
OpenCL Modello di memoria
- Comprendere la differenza tra i modelli di memoria host e dispositivo
- Utilizzo di OpenCL spazi di memoria, ad esempio globale, locale, costante e privato
- Utilizzo di oggetti di memoria OpenCL, ad esempio buffer, immagini e pipe
- Utilizzo delle modalità di accesso alla memoria OpenCL, ad esempio sola lettura, sola scrittura, lettura/scrittura, ecc.
- Uso del modello di coerenza della memoria OpenCL e dei meccanismi di sincronizzazione
OpenCL Modello di esecuzione
- Comprendere la differenza tra i modelli di esecuzione host e dispositivo
- Utilizzo di OpenCL elementi di lavoro, gruppi di lavoro e intervalli ND per definire il parallelismo
- Utilizzo di OpenCL funzioni elemento di lavoro, ad esempio get_global_id, get_local_id, get_group_id e così via.
- Utilizzo di OpenCL funzioni per gruppi di lavoro, come barriera, work_group_reduce, work_group_scan, ecc.
- Utilizzo di OpenCL funzioni del dispositivo, come get_num_groups, get_global_size, get_local_size, ecc.
Debug
- Comprendere gli errori e i bug più comuni nei programmi OpenCL
- Utilizzo di Visual Studio Debugger di codice per ispezionare variabili, punti di interruzione, stack di chiamate e così via.
- Utilizzo di CodeXL per eseguire il debug e l'analisi di OpenCL programmi su dispositivi AMD
- Utilizzo di Intel VTune per eseguire il debug e l'analisi di OpenCL programmi su dispositivi Intel
- Uso di NVIDIA Nsight per eseguire il debug e l'analisi di OpenCL programmi su dispositivi NVIDIA
Ottimizzazione
- Comprendere i fattori che influenzano le prestazioni dei programmi OpenCL
- Utilizzo di OpenCL tipi di dati vettoriali e tecniche di vettorizzazione per migliorare la velocità effettiva aritmetica
- Utilizzo di tecniche di srotolamento e affiancamento di loop OpenCL per ridurre il sovraccarico di controllo e aumentare la località
- Utilizzo della memoria locale OpenCL e delle funzioni di memoria locale per ottimizzare gli accessi alla memoria e la larghezza di banda
- Utilizzo di OpenCL strumenti di profilatura e profilatura per misurare e migliorare il tempo di esecuzione e l'utilizzo delle risorse
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 ad usare OpenCL 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 basso livello della programmazione eterogenea e ottimizzare le prestazioni 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