image/svg+xml
Logo Tom's Hardware
  • Hardware
  • Videogiochi
  • Mobile
  • Elettronica
  • EV
  • Scienze
  • B2B
  • Quiz
  • Tom's Hardware Logo
  • Hardware
  • Videogiochi
  • Mobile
  • Elettronica
  • EV
  • Scienze
  • B2B
  • Quiz
  • Forum
  • Sconti & Coupon
Black Friday

Novità!

Prova la nuova modalità di navigazione con le storie!

Accedi a Xenforo
Immagine di AMD Ryzen 5 7500X3D: la 3D V-Cache economica costa troppo? | Test & Recensione AMD Ryzen 5 7500X3D: la 3D V-Cache economica costa troppo? |...
Immagine di Windows 26 riprende l’eredità di Vista e 7, ma con stile Windows 26 riprende l’eredità di Vista e 7, ma con stile...

La teoria: CUDA dal punto di vista software

CUDA, il nuovo linguaggio di programmazione per le GPU Nvidia, promette grandi risultati e mostra le schede video sotto una nuova luce. Cerchiamo di capire un po' di più cosa ci riserva CUDA.

Advertisement

Quando acquisti tramite i link sul nostro sito, potremmo guadagnare una commissione di affiliazione. Scopri di più
Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

Pubblicato il 30/06/2008 alle 11:16 - Aggiornato il 15/03/2015 alle 01:14
  • Nvidia CUDA, GPU all'inizio di una nuova era
  • Nel frattempo
  • Viva la GeForce FX!
  • L'avvento della GPGPU
  • Le API CUDA
  • Alcune definizioni
  • La teoria: CUDA dal punto di vista hardware
  • Pag 2
  • La teoria: CUDA dal punto di vista software
  • In pratica
  • Prestazioni
  • Analisi
  • Conclusioni
  • Intervista
  • Pag 2

La teoria: CUDA dal punto di vista software

Da un punto di vista software, CUDA consiste in un set di estensione del linguaggio C, che ovviamente richiama BrookGPU e alcune specifiche chiamate API. Tra le estensioni ci sono qualificatori da applicare alle funzioni e alle variabili. Le parole da ricordare sono [global], che quando applicata a una funzione indica che l'ultima è un kernel, una funzione che sarà chiamata dalla CPU ed eseguita dalla GPU. Il comando [device] designa una funzione che sarà eseguita dalla GPU (che CUDA chiama "device") ma che può essere chiamata solo dalla GPU (in altre parole, da un'altra funzione [device] o da una funzione [global]). Infine, il comando [host], opzionale, designa una funziona chiamata dalla CPU ed eseguita dalla CPU, in altre parole, una funzione tradizionale.

Ci sono alcune restrizioni associate alle funzioni [device]e [global]: non possono essere ricorsive (in pratica, non possono richiamare loro stesse). Infine, riguardo alla funzione [device] residente nello spazio di memoria della GPU, non è possibile ottenere il suo indirizzo. Le variabili stesse dispongono di qualificatori che permettono di controllare l'area di memoria in cui saranno immagazzinate. Una variabile preceduta dal comando [shared] indica che sarà immagazzinata nella memoria condivisa dei multiprocessori streaming. Anche il modo in cui si attiva la funzione [global] è differente, perché la configurazione di esecuzione deve essere definita al momento della chiamata; più concretamente, bisogna definire la dimensione della griglia alla quale di applica il kernel, e la dimensione di ogni blocco. Ecco un esempio:

__global__ void Func(float* parameter);

Che sarà chiamata come segue:

Func<<< Dg, Db >>>(parameter);

Dove Dg è la dimensione della griglia e Db la dimensione del blocco. Queste due variabili sono un nuovo tipo di vettore introdotto da CUDA.

L'API CUDA comprende essenzialmente funzioni per la manipolazione della memoria VRAM: cudaMalloc per allocare la memoria, cudaFree per liberarla e cudaMemcpy per copiare dati tra RAM e VRAM e viceversa.

Concludiamo questa analisi parlando del modo in cui i programmi CUDA sono compilati. La compilazione avviene in varie fasi: prima di tutto il codice dedicato alla CPU viene estratto dal file e passato ad un compilatore standard. Il codice dedicato alla GPU è prima convertito in un linguaggio intermedio, PTX, che è come un assembler, e permette di generare codice sorgente che può essere studiato per potenziali inefficienze. Infine, l'ultima fase traduce questo linguaggio intermedio in comandi specifici per la GPU che poi viene incapsulato in forma binaria nell'eseguibile.

Leggi altri articoli
  • Nvidia CUDA, GPU all'inizio di una nuova era
  • Nel frattempo
  • Viva la GeForce FX!
  • L'avvento della GPGPU
  • Le API CUDA
  • Alcune definizioni
  • La teoria: CUDA dal punto di vista hardware
  • Pag 2
  • La teoria: CUDA dal punto di vista software
  • In pratica
  • Prestazioni
  • Analisi
  • Conclusioni
  • Intervista
  • Pag 2

👋 Partecipa alla discussione! Scopri le ultime novità che abbiamo riservato per te!

0 Commenti

⚠️ Stai commentando come Ospite . Vuoi accedere?

Invia

Per commentare come utente ospite, clicca cerchi

Cliccati: 0 /

Reset

Questa funzionalità è attualmente in beta, se trovi qualche errore segnalacelo.

Segui questa discussione
Advertisement

Non perdere gli ultimi aggiornamenti

Newsletter Telegram

I più letti di oggi


  • #1
    Lavorare 72 ore a settimana, il nuovo modello che piace a USA e Cina
  • #2
    Scoperti nuovi indizi sulle origini di Homo sapiens
  • #3
    Unieuro non si ferma: le promozioni del Black Friday continuano
  • #4
    Windows 26 riprende l’eredità di Vista e 7, ma con stile
  • #5
    22% di sconto su Amazon con appena 25€ di spesa
  • #6
    Scatta il blocco sui siti porno: cosa succede ora?
Articolo 1 di 5
Windows 26 riprende l’eredità di Vista e 7, ma con stile
Il designer Abdi propone un Windows 26 che recupera l'estetica di Vista e 7 con il Liquid Glass, mentre Microsoft punta su AI e piattaforme agentiche.
Immagine di Windows 26 riprende l’eredità di Vista e 7, ma con stile
9
Leggi questo articolo
Articolo 2 di 5
AMD Ryzen 5 7500X3D: la 3D V-Cache economica costa troppo? | Test & Recensione
L'ultimo nato con 3D V-Cache ha le carte in regola per finire in tutti i PC da gaming entry level, ma dovrà avere il giusto prezzo.
Immagine di AMD Ryzen 5 7500X3D: la 3D V-Cache economica costa troppo? | Test & Recensione
6
Leggi questo articolo
Articolo 3 di 5
La nuova Steam Machine esiste davvero (e non è sola)
Valve annuncia una nuova Steam Machine, ma anche un visore VR standalone Steam Frame e un nuovo controller ibrido.
Immagine di La nuova Steam Machine esiste davvero (e non è sola)
6
Leggi questo articolo
Articolo 4 di 5
AMD Zen 6: la rivoluzione dei 2 nanometri è vicina
Zen 6 segna un passo storico per AMD: architettura a 2 nanometri, prestazioni AI potenziate e continuità sulla piattaforma AM5.
Immagine di AMD Zen 6: la rivoluzione dei 2 nanometri è vicina
5
Leggi questo articolo
Articolo 5 di 5
SteamOS su Arm è un'ottima notizia, non solo per la VR
L'arrivo di SteamOS su architettura Arm grazie al visore Steam Frame segna una svolta importante, dopo anni di supporto esclusivo a x86.
Immagine di SteamOS su Arm è un'ottima notizia, non solo per la VR
10
Leggi questo articolo
Advertisement
Advertisement

Advertisement

Footer
Tom's Hardware Logo

 
Contatti
  • Contattaci
  • Feed RSS
Legale
  • Chi siamo
  • Privacy
  • Cookie
  • Affiliazione Commerciale
Altri link
  • Forum
Il Network 3Labs Network Logo
  • Tom's Hardware
  • SpazioGames
  • CulturaPop
  • Data4Biz
  • TechRadar
  • SosHomeGarden
  • Aibay

Tom's Hardware - Testata giornalistica associata all'USPI Unione Stampa Periodica Italiana, registrata presso il Tribunale di Milano, nr. 285 del 9/9/2013 - Direttore: Andrea Ferrario

3LABS S.R.L. • Via Pietro Paleocapa 1 - Milano (MI) 20121
CF/P.IVA: 04146420965 - REA: MI - 1729249 - Capitale Sociale: 10.000 euro

© 2025 3Labs Srl. Tutti i diritti riservati.