Difficile la programmazione con CUDA?

Difficile la programmazione con CUDA?

Il nuovo progetto di NVIDIA per avvicinare i programmatori alla computazione parallela usando le GPU pare non essere così accessibile come promesso

di Andrea Bai pubblicata il , alle 15:28 nel canale Software
NVIDIACUDA
 

Emergono sulla rete le considerazioni di due programmatori, Bryan O'Sullivan e Michael Suess, riguardo il progetto CUDA promosso da NVIDIA. Ricordiamo cosa è CUDA: si tratta di un compendio di strumenti, librerie e estensioni al linguaggio C che da modo agli sviluppatori di poter disporre di possibilità di programmazione più generalizzata per le GPU della serie G8800 di NVIDIA rispetto a quanto permesso normalmente dalle comuni librerie grafiche.

Si tratta di una spinta alla possibilità di utilizzare i processori grafici, caratterizzati da una notevole potenza di calcolo, anche in ambiti diversi dall'accelerazione tridimensionale grazie alla loro possibilità di eseguire operazioni di computazione parallela. I due programmatori, tuttavia, esprimono perplessità sull'effettiva accessibilità da parte di tutti alla programmazione con CUDA.

Secondo quanto si apprende dalle considerazioni di O'Sullivan, che ha avuto modo di lavorare con un compilatore dal quale è stato tratto il compilatore per CUDA, le estensioni C di CUDA sono in realtà piuttosto ridotte e per via di un compilatore probabilmente non ancora affinato, è lasciato al programmatore il compito di dover gestire manualmente la gerarchia di memoria, per altro molto complessa.

In altri termini la programmazione risulta essere molto più vicina al linguaggio macchina che a linguaggi di alto livello e il programmatore si trova nella condizione di dover prestare estrema attenzione ad una serie di aspetti per poter trarre il massimo delle prestazioni dalle GPU delle serie 8800. Secondo O'Sullivan è addirittura possibile che i pochi programmatori che dovessero decidere di affrontare il gravoso lavoro di programmazione sarebbero in grado di ottenere applicazioni che sfrutterebbero solamente il 10% delle potenzialità teoriche offerte da CUDA.

Sulla stessa scia di pensiero è Michael Suess che, riportando le opinioni di uno studente che ha avuto modo di confrontare CUDA con Cell a seguito di un periodo di lavoro in IBM. dichiara che la principale difficoltà di programmazione per quest'ultima è proprio l'architettura memoria, mentre Cell risulta molto più semplice da approcciare.

Sebbene entrambe le soluzioni siano caratterizzate da una gerarchia della memoria che deve essere gestita direttamente dal programmatore, nel caso di Cell si tratta di un processore pensato per essere facilmente programmabile da tutti i programmatori, con l'obiettivo preciso di facilitare al programmatore la gestione della gerarchia di memoria, mentre le GPU 8800 sono state realizzate con l'obiettivo di fornire principalmente prestazioni 3D di alto livello, avendo come target primario di programmazione i realizzatori di videogiochi che utilizzano DirectX e quindi hanno poco a che fare con i problemi della gestione della memoria.

Per entrambi i programmatori comunque CUDA è un progetto valido dal punto di vista delle potenzialità che è in grado di offrire anche se, almeno per ora, non è così facilmente accessibile come lo si vuol dipingere.

17 Commenti
Gli autori dei commenti, e non la redazione, sono responsabili dei contenuti da loro inseriti - info
k4rl28 Febbraio 2007, 15:51 #1
senza mettere in dubbio le conoscenze e le capacità di questi 2 programmatori mi sembra di capire che hanno lavorato su una versione di compilatore vecchia quindi può essere che le nuove versioni implementino queste funzioni

in ogni caso è ovvio che un architettura come il cell è più versatile di una 8800 in quanto quest ultima è nata per la grafica come detto ed ha introdotto alcune caratteristiche x facilitare un po' la gestione ma questo non vuol dire che si tratta di un processore general purpose
dsajbASSAEdsjfnsdlffd28 Febbraio 2007, 16:23 #2
beh, se questa è l'opinione del giardiniere del fratello di uno studente che ha avuto modo di vedere cuda e cell... di sicuro è attendibile...
se questa è l'opione di uno che ha lavorato con un compilatore dal quale poi è stato tratto cuda, si può stare traqnuilli!

anche mio cuGGino dice che non va bene, me lo ha detto oggi, subito dopo di avermi raccontato di quella volta che è morto... e il suo è un parere autorevole, almeno quanto come quello di questi due signori qui...
EddieIng28 Febbraio 2007, 16:27 #3
Considerando che i tools per la programmazione CUDA sono usciti poco tempo fa, mi sembra un pò presto per dare giudizi definitivi.
lowenz28 Febbraio 2007, 16:30 #4
Aspettiamo nuove revisioni del compilatore
eta_beta28 Febbraio 2007, 16:42 #5
credo che la facilità di cell derivi anche dal fatto che le ppe derivano dal architettura POWER
Narmo28 Febbraio 2007, 16:53 #6
Scusate ma a me CUDA sembra una risposta frettolosa e buttata li per far vedere "si anche io ci sono, posso ma non voglio" da parte di nVidia alla tecnologia Stream Computing / Fusion (si lo so che non sono la stessa cosa) di Ati/AMD.
avvelenato28 Febbraio 2007, 17:19 #7
Originariamente inviato da: Narmo
Scusate ma a me CUDA sembra una risposta frettolosa e buttata li per far vedere "si anche io ci sono, posso ma non voglio" da parte di nVidia alla tecnologia Stream Computing / Fusion (si lo so che non sono la stessa cosa) di Ati/AMD.



Non la metterei così, fai sembrare che nVidia ha copiato da ati, mentre è da mò che le aziende produttrici di hw si sono rese conto che potrebbero aumentare gli utili se trovassero una giustificazione ulteriore all'utilizzo delle schede video in ambito 3d (videoludico e non), e quindi un target ulteriore. Le schede ci sono, mancano le librerie, anche se nulla impedisce ad una azienda realmente interessata in soluzioni sul genere di studiarsi le sue.
Bellaz8928 Febbraio 2007, 17:46 #8
Insomma, è un po come programmare il C senza le funzioni di std o il C++ senza Stl, bisogna dare tempo al tempo e nascerà anche per questo linguaggio un set di librerie che si occuperà di fare lo sporco lavoro di basso livello.
Inoltre è ancora un po prestino per dare giudizi (peraltro utilizzando compilatori che non sono quelli ufficiali e standard ), su un linguaggio che è ancora in evoluzione.
Wilfrick28 Febbraio 2007, 18:02 #9
c'è una versione gratuita di gelato di nvidia, l'ho provato, ed ho "solo" una 6600. il rendering schizza da far paura.....
Quindi non sarei così pessimista per l'utilizzo delle gpu nuove per calcoli fpu. Vedremo fra un po' quando ci saranno software programmati decentemente.
Kuarl28 Febbraio 2007, 18:06 #10
Originariamente inviato da: eta_beta
credo che la facilità di cell derivi anche dal fatto che le ppe derivano dal architettura POWER


non esattamente. Nell'articolo si menziona proprio la difficoltà nella gestione della memoria. Nel cell invece è stato fatto uno studio approfondito sulla questione e sono state introdotte diverse soluzioni del tutto nuove e incredibilmente efficienti. Il cell infatti ha 3 stadi per memorizzazione delle informazioni, in più basti pensare che il controller di memoria interno può gestire fino a 120 accessi concorrenti e indipendenti alla memoria (che possono essere effettuati dalla ppe o dalle varie spe). Un valore impressionante se si pensa che è almeno 20 volte superiore a quello di un core 2 duo...

il confronto è a dir poco improponibile... è logico poi che il cuda ne esce con le ossa rotte...

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.
 
^