View Full Version : NVIDIA presenta Cuda 1.1
Redazione di Hardware Upg
16-11-2007, 15:00
Link alla notizia: http://www.hwupgrade.it/news/server/nvidia-presenta-cuda-11_23271.html
NVIDIA aggiorna il proprio pacchetto software per la programmazione parallela delle proprie GPU; da ora disponibile anche per sistemi Windows a 64bit
Click sul link per visualizzare la notizia.
papafoxtrot
16-11-2007, 15:15
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
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..
Fantastico che ogni driver andrà bene :)
Crisa...
16-11-2007, 15:32
le schede video sono adatte a fare solo calcoli vettoriali a virgola mobile, quindi non pensate di far girare office su una geforce :asd:
per i centri di calcolo e le universita' sara' invece una manna dal cielo
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.
papafoxtrot
16-11-2007, 15:49
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".
magilvia
16-11-2007, 16:07
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...
DAI DAI!!! QUANDO ESCE VIRTUALDUB PER GPU???
Conversione di un film in HD in un'ora!! :D :D
bollicina31
16-11-2007, 16:59
io mi chiedo quanti mega peseranno dei drivers con dentro cuda attualmente siamo gia a 70mb.....
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...)
Mi sono sentito un po' uno stupido leggendo il tuo messaggio ad aver pensato di usare una gpu per tutto...
e che credi, che io sia nato sapendole? :D
per inciso, la stupidità è ben altra cosa: non è il non sapere, ma il non imparare... e quando impari qualcosa, anche una stupidata del tutto insignificante nella tua vita come quella di oggi, dai dimostrazione di intelligenza, non di certo di stupidità
Drakon99
16-11-2007, 17:58
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...)
Cioè è possibile far eseguire le operazioni di compilazione ed esecuzione di un programma scritto in C alla GPU?
Sarebbe interessante sapere se funziona pure con il linguaggio java... :D
jappilas
16-11-2007, 18:26
Cioè è possibile far eseguire le operazioni di compilazione ed esecuzione di un programma scritto in C alla GPU?
Sarebbe interessante sapere se funziona pure con il linguaggio java... :Dma non normale C, linguaggi appositi che sono stati concepiti per mantenere una sintassi analoga a quella del C aggiungendo keyword e costrutti ad hoc (come ad esempio nel caso di BrookGPU che si menzionava in una recente news su schede grafiche AMD, e che AMD propone come alternativa al CTM per l' impiego della GPU come stream processor general purpose) per istanziare e processare gli streams
dalla descrizione di BrookGPU (http://graphics.stanford.edu/projects/brookgpu/lang.html) Streams
A stream is a new data type addition which represents a collection of data which can be operated on in parallel. Streams are declared with angle brackets syntax similar to arrays. A sample stream declaration could look like:
float s<10, 10>;
Although similar to C arrays, stream in BrookGPU have the following differences:
- Indexing to gain access to stream elements (i.e. s[3][2]) is not allowed outside of kernels
- No static initializers are allowed
- Streams must be local (stack) variables.
- Streams can only be read and written inside kernel functions or through special operators that fill streams from regular pointers and vice versa
Kernels
Kernels are special functions that operate on streams. A kernel is a parallel function applied to every element of the input streams.
<...>
Global memory and static variables are not accessible inside kernels.
A sample kernel declaration looks like:
kernel void k(float s<>, float3 f, float a[10][10], out float o<>) {...
Drakon99
16-11-2007, 18:47
Il link non funziona...
Appena faranno il Lapack compilato con CUDA, Matlab decollerà alla grande! :)
GiovanniGTS
16-11-2007, 18:53
al di là di queste implementazioni
io sto ancora aspettadno l'encoder video tramite gpu
Thunder82
16-11-2007, 19:49
MATLAB è già in grado di sfruttare CUDA, gli incrementi di velocità sono oltre il 1500% facendo fare i calcoli ad una Quadro FX5600 rispetto ad un opteron:
http://developer.download.nvidia.com/compute/cuda/1_0/Accelerating%20Matlab%20with%20CUDA.pdf
può accelerare qualsiasi programma in C, C++, FORTRAN... l'unico requisito è avere matlab
on line c'è un gioco, warmonger che richiede specificatamente una scheda per i complessi effetti grafici implementati...
il gioco è gratuito e utilizza ageia physics, a quanto ho capito è stata acquisita da nvidia...
e se non si ha la scheda ageia phisics o equivalente il gioco diventa ingiocabile... vorrei sapere se cou cuda installato sul pc potrebbe far andare la mia 8600gt come anche una scheda per elaborare gli effetti fisici del gioco... io purtroppo ho windows vista ultimate a 64 bit quindo dovrò aspettare per i driver o gli sdk cuda per il mio so.. ma eventualmente dovrebbe andare come ho detto o no?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.