NVIDIA presenta Cuda 1.1

NVIDIA presenta Cuda 1.1

NVIDIA aggiorna il proprio pacchetto software per la programmazione parallela delle proprie GPU; da ora disponibile anche per sistemi Windows a 64bit

di Paolo Corsini pubblicata il , alle 16:00 nel canale Periferiche
NVIDIAWindowsCUDAMicrosoft
 

NVIDIA ha rilasciato la versione 1.1 del proprio ambiente di sviluppo CUDA, acronimo di Compute Unified Device Architecture. CUDA è alla base dei progetti di elaborazione parallela GPGPU che NVIDIA sta portando avanti da tempo, utilizzando per questo la potenza elaborativa delle proprie schede video più recenti.

CUDA fornisce un ambiente di programmazione simile a quello dei linguaggi C, grazie al quale poter utilizzare la GPU NVIDIA montata nel proprio sistema per eseguire elaborazioni di tipo parallelo. Alla base la necessità di avere a disposizione una GPU che sia almeno della serie GeForce 8, quindi con architettura a shader unificati.

In questo momento, questo indirizzo, sul sito NVIDIA dedicato a CUDA, gli sviluppatori non possono ancora scaricare la versione 1.1 dell'ambiente di sviluppo per sistemi operativi Windows, ma si presume che nelle prossime ore NVIDIA renderà accessibile il software. Dal prossimo 19 Novembre NVIDIA renderà disponibile anche la nuova versione per ambiente Linux.

CUDA 1.1 per Windows introduce la compatibilità anche con le versioni a 64bit di Windows XP, mentre continua a mancare il supporto al sistema operativo Windows Vista sia a 32bit che a 64bit. Al momento attuale è per NVIDIA prioritario avere supporto a sistemi operativi Windows a 64bit, in quanto con quelli a 32bit si possono incontrare limitazioni nella gestione della memoria nel momento in cui si programmano scenari di elaborazione particolarmente complessi.

A partire da questa revision, NVIDIA inizierà a implementare i driver CUDA all'interno dei propri driver video standard; questo permetterà di avere accesso immediato, in un sistema con GPU NVIDIA, ad applicazioni CUDA senza la necessità di dover installare del software apposito per questo e beneficiando quindi della potenza elaborativa di qualsiasi PC, con driver aggiornati, che sia dotato di GPU della serie GeForce 8 o superiore.

18 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
papafoxtrot16 Novembre 2007, 16:15 #1
Ma fatemi capire:
è possibile programma re tramite linguaggio C (o simile) software eseguibili su qualunque pc (o pc che abbia una geforce 8) come si fa ora con il solito C?

Cioè, io posso mettermi a compilare con CUDA ed una geforce 8800 un qualunque sorgente?

Se così fosse sarebbe superlativo perché significherebbe che piano piano si inizia a spostare verso le GPU la gestione di applicazioni molto comuni e attualmente gestite esclusivamente dalla CPU.

Voglio dire, è possiile a breve pensare di avere un Microsoft office che gira su geforce 8800? e che non fa lavorare la cpu?

Ovvio che non sono queste le prime applicazioni a necessitare della potenza di una gpu
nMOS16 Novembre 2007, 16:16 #2
un esempio di applicazione?
mi interesserebbe vedere cosa si può davvero fare e i benefici, perchè se le applicazioni sono tutte come folding@home, cioè dall'utilità pratica di un utente normale praticamente nulla...

accidenti, dovevo accettare la proposta di tesi del mio prof, che voleva sviluppare software con CUDA..
lowenz16 Novembre 2007, 16:25 #3
Fantastico che ogni driver andrà bene
Crisa...16 Novembre 2007, 16:32 #4
le schede video sono adatte a fare solo calcoli vettoriali a virgola mobile, quindi non pensate di far girare office su una geforce


per i centri di calcolo e le universita' sara' invece una manna dal cielo
Fx16 Novembre 2007, 16:34 #5
Originariamente inviato da: papafoxtrot
Voglio dire, è possiile a breve pensare di avere un Microsoft office che gira su geforce 8800? e che non fa lavorare la cpu?

Ovvio che non sono queste le prime applicazioni a necessitare della potenza di una gpu


nemmeno le ultime

da quando girano un po' di numeri attorno alla potenza elaborativa delle GPU (o anche del cell, tanto per dire) si è creata una grande confusione, per cui intel e amd sono improvvisamente diventate le ultime arrivate

ovviamente non è così. gli x86 macinano calcoli in virgola mobile molte volte di meno rispetto alle GPU semplicemente perchè gli x86 sono progettati per fare di tutto, tra cui anche quello

gli x86 infatti sono dei processori general purpose: sono capaci di fare dignitosamente tutto. compararli con dei processori specializzati come una GPU o un cell non ha molto senso.

come dire che un dragster ha più accelerazione di una panda. eh, grazie. la cosa che sfugge è che il dragster, al di là delle gare accelerazione, non lo usi in nessun altro ambio, mentre la panda la puoi usare bene o male in qualsiasi situazione.

ai tempi si sarebbe distinto tra "processore" e "coprocessore". il primo fa tutto e il secondo aiuta il primo in alcuni ambiti specifici. nel caso della GPU, oltre ovviamente la grafica 3d, le applicazioni sono diverse, quali ad es. la gestione di stream video (codifica/decodifica), il rendering 3d (intendo non in giochi ma in programmi di rendering), folding@home e altro ancora...

spero di aver fatto un po' di chiarezza.
papafoxtrot16 Novembre 2007, 16:49 #6
Ringrazio Crisa e Fx per il chiarimento dettagliato. Sei stato molto preciso.
Mi sono sentito un po' uno stupido leggendo il tuo messaggio ad aver pensato di usare una gpu per tutto...
Era ovvio che, inquanto architettura sviluppata specificamente per i calcoli vettoriali ed in virgola mobile, una GPU eccellesse su questi, ma soprattutto fosse dedicata solo ad essi.

Comunque sarebbe necessaria oltre che auspicabile un'ottimizzazione del software in maniera tale da sfruttare la componente più adatta per ogni operazione. Conosco abbastanza bene il mondo della grafica 3d per sapere che è abbastanza sciocco gareggiare con processori sempre più potenti puntandoa dimezzare tempi di render che arrivano tranquillamente a qualche giorno, quando si ha a disposizione una scheda video in grado di fare tutto in un ora scarsa e a costi molto inferiori.

Mi auguro che da qui a breve (parlo comunque di anni, forse due-tre) le gpu non si chiamino più con tale nome (che lascia intendere un loro utilizzo prettamente a fine di visualizzazione grafica) ma con un nome che le identifichi come calcolatori vettoriali. Mentre le cpu perdano la loro accezione di "central" per passare ad un nome che più lasci intendere la loro destinazione "general porpouse".
magilvia16 Novembre 2007, 17:07 #7
Si, avremo la GPPU affiancata da una FPPU dopodiché per convergenza si penserà di integrarle in un unico chip... Oh, ma aspetta! Sia AMD che Intel stanno dando segnali di voler passare direttamente a tale chip! nvidia farà bene a godersi questi ultimi anni di gloria...
demon7716 Novembre 2007, 17:22 #8
DAI DAI!!! QUANDO ESCE VIRTUALDUB PER GPU???
Conversione di un film in HD in un'ora!!
bollicina3116 Novembre 2007, 17:59 #9
io mi chiedo quanti mega peseranno dei drivers con dentro cuda attualmente siamo gia a 70mb.....
Khimera16 Novembre 2007, 18:19 #10

rettifica

scusate se sono pignolo, mi pare di aver sentito in questo forum
che è possibile ricompilare un sorgente C con un compilatore CUDA, e far girare l'applicazione su una GeForce.
Non è esattamente così. Una GPGPU (General Porpouse GPU) (P.S. Papafoxtrot, il termine esiste già in quanto coprocessore matematico va programmato tramite delle estensioni particolari.
CUDA non è solo un compilatore, è soprattuto una libreria matematica molto potente, mette quindi a disposizione delle funzioni utilizzabili in un programma scritto in C, ma queste funzioni devono essere richiamate esplicitamente, non siamo ancora arrivati al punto di avere un compilatore in grado di riconoscere il parallelismo esplicito dentro normale codice C e ricompilare usando unità funzionali vettoriali (un po' come succede con le estensioni SSE ...)

Questo perchè scrivere "a mano" (Assembly o funzioni C di basso livello com'è il CUDA) è sempre Infinitamente Meglio che lasciar fare questo tipo di ottimizzazioni ad un compilatore.

Scusate la natura un po' tecnica del post, ma era utile per far capire una cosa: programmare in questo modo è costoso, non è facile!
Bisogna imparare a farlo, bisogna ottimizzare gli algoritmi in modo da sfruttare l'enorme grado di parallelismo di questi coprocessori
(una 8800 ha 128 "processori" che lavorano in parallelo...)

Devi effettuare il login per poter commentare
Se non sei ancora registrato, puoi farlo attraverso questo form.
Se sei già registrato e loggato nel sito, puoi inserire il tuo commento.
Si tenga presente quanto letto nel regolamento, nel rispetto del "quieto vivere".

La discussione è consultabile anche qui, sul forum.
 
^