In pratica

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.

Avatar di Andrea Ferrario

a cura di Andrea Ferrario

Editor in Chief

In pratica

Dopo aver studiato la documentazione Nvidia, è difficile resistere e non provare a cimentarsi con CUDA. Dopo tutto, non c'è modo migliore di giudicare un'API provando a scrivere un piccolo programma che la utilizzi. È questa la fase dove tutti i problemi vengono a galla, anche se sulla carta sembra tutto perfetto. È anche il modo migliore per vedere se avrete assimilato tutti i concetti descritti nella documentazione CUDA.

É anche abbastanza semplice gettarsi in questo progetto, grazie ai molti strumenti di qualità disponibili. Per questo test abbiamo usato Visual C++ Express 2005, che dispone di tutto quello di cui abbiamo bisogno. La parte più difficile è trovare un programma abbastanza semplice da creare senza dover spendere settimane in programmazione, ma che allo stesso tempo risulti abbastanza interessante. Alla fine abbiamo optato per la creazione di un programma che prenda una heightmap e ne calcoli la corrispondente normal map. Non entreremo nei dettagli di questa funzione, poiché non riteniamo interessante questo tipo di analisi. Per essere brevi, per ogni pixel dell'immagine iniziale, applichiamo una matrice che determinerà il colore del pixel risultante dall'immagine generata dai pixel adiacenti, usando formule più o meno complesse. Il vantaggio di questa funzione è che è molto facile applicare i parallelismi, e risulta un test ideale per le capacità di CUDA.

L'altro vantaggio è che disponiamo già di un'implementazione per CPU, grazie a cui possiamo facilmente confrontare i risultati dei due approcci.

Il presupposto di questo test è di familiarizzare con l'SDK CUDA, e non offrire un test comparativo tra CPU e GPU. Siccome si tratta della nostra prima programmazione con CUDA, non abbiamo molte aspettative dal punto di vista delle prestazioni.