Nvidia CUDA GPU – Le tecniche e la programmazione

CUDA GPU parallel processing

CUDA viene utilizzato per accelerare le applicazioni solo CPU facendole funzionare su GPU. Nvidia offre un corso per iniziare a trattare con tale tecnologia.

La programmazione parallela, pur nella usa intrinseca complessità, offre numerosi vantaggi allo sviluppo di applicazioni efficienti.

Se da un lato “pensare in parallelo” è più complesso e meno intuitivo del classico paradigma seriale (o von Neumann), dall’altro tale modalità offre insperati vantaggi ed accelerazioni nella produzione di programmi.

La complessità computazionale di algoritmi seriali è stata sottoposta ad analisi in tutte le sue sfaccettature (per maggiori approfondimenti al riguardo consigliamo di leggere “The Art of Computer Programming” di Donald Knuth). La complessità degli algoritmi paralleli invece risulta molto più difficile da valutare: oltre al flusso di informazioni occorre tenere conto delle caratteristiche dell’hardware sul quale si lavora: parallelismo massicco, architetture NUMA, processori vettoriali, latenza di accesso alla memoria condivisa.

Infine occorre tenere conto della Legge di Amdahl: “Il miglioramento delle prestazioni di un sistema che si può ottenere ottimizzando una certa parte del sistema è limitato dalla frazione di tempo in cui tale parte è effettivamente utilizzata” .

CUDA GPU

Accelerazione hardware con Nvidia CUDA

Da diversi anni Nvidia sviluppa la modalità CUDA (Compute Unified Device Architecture) per offrire anche all’utente finale la possibilità di accedere ad un ambiente massiciamente parallelo (migliaia di processori semplici). CUDA utilizza un linguaggio C con istruzioni estese per tale compito. Ma la sintassi non è tutto: occorre capire come operare su questi sistemi per accedere con cognizione di causa.

Per tale ragione Nvidia offre periodicamente ai propri utenti corsi di avvicinamento e approfondimento a vari livelli.

Oggi analizzeremo nello specifico il corso denominato “Fundamentals of Accelerated Computing in CUDA C/C++“.

Il corso

Le applicazioni CUDA sono estremamente parallele e molto più veloci delle loro controparti solo CPU. Il corso consente di sperimentare l’accelerazione delle applicazioni C/C++ tramite:

  • Parallelizzazione delle applicazioni da eseguire su GPU
  • Ottimizzazione delle applicazioni utilizzando tecniche CUDA come la gestione della memoria
  • Tecniche di apprendimento come la concorrenza e i flussi CUDA
  • Strumenti di apprendimento come Nsight Systems per profilare e identificare i colli di bottiglia

Al termine, l’utente sarà in grado di accelerare e ottimizzare le applicazioni esistenti solo per CPU C/C++ utilizzando le tecniche CUDA più essenziali e i sistemi Nsight. Verrà presentato un framework iterativo di sviluppo CUDA che consentirà di realizzare rapidamente applicazioni accelerate.

Prerequisiti:

Competenza C/C++ di base inclusa familiarità con tipi di variabili, loop, istruzioni condizionali, funzioni e manipolazioni di array. Non si presume alcuna conoscenza precedente della programmazione CUDA.

Risorse suggerite per soddisfare i prerequisiti

Il tutorial interattivo di learn-c.org.

Strumenti, librerie e framework utilizzati

Dettagli del corso

Il corso (online) ha la durata di 8 ore complessive, costa 90 dollari Usa ed offre le competenze necessarie per iniziare a comprendere ed utilizzare le caratteristiche di accelerazione e ottimizzazione dei computer paralleli.

Nvidia CUDA gpu

Il corso fa parte di un percorso formativo gestito da Nvidia, che darà diritto (al completamento) di una certificazione ufficiale verificata.

 

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.