|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
CUDA notizie ?
Sono interessato al nuovo linguaggio di programmazione delle GPU NVidia : "CUDA".
In particolare vorrei provare a scrivere un codice per usare la GPU per aumentare le prestazioni dei chess engines . Qualcuno conosce qualcosa di CUDA ?
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2008
Messaggi: 181
|
Cuda non e' propriamente un linguaggio di programmazione, e piu' un sdk basato su C ma con delle estensioni.
Tutto cio' di cui hai bisogno lo puoi trovare qui Personalmente ho implemetato anche un crivello di eratostene sotto CUDA, ma adesso non c'e' l'ho sotto mano (anche se la mia implementazione e' orribile) |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
L'idea e' molto interessante (soprattutto dal lato performance), anche se effettivamente non e' banale programmarci. Al lavoro ce la stiamo comunque studiando un po'.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
E c'è perfino la possibilità di accedere alle API da Python... [PyCuda]
Certo che la biscia è dappertutto.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
SLURP! CUDA lo seguo da tempo, ma proprio perché troppo legato al C, non l'avevo nemmeno studiato.
Adesso il discorso cambia.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Bang!
Beccato @EDIT: Quote:
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 20-06-2008 alle 14:10. |
|
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
CUDA
Quote:
Si potrebbe anche cercare, di velocizzare le istruzioni generalmente più usate da tutti gli engines . Ma anche questo non è la cosa più banale . Il fatto è, che io ho ricevuto un post da Vasik Rajlich (l'autore di Rybka), sul suo forum , in cui dichiarava che : " l'imponente mole di lavoro , neccessaria a realizzare la mia idea , non giustifica l'esiguo aumento di elo del motore che si otterebbe". Ma io non sono molto convinto di questa affermazione Ultima modifica di Albitexm : 20-06-2008 alle 22:02. |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
CUDA
Quote:
Secondo la tua esperienza , con questo CUDA si riesce a spremere queste GPU ? |
|
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
Non so quanto siano attendibili ed in che modo siano stati calcolati i miglioramenti, ma in questa pagina (sito Nvidia) vengono riportati gli speed-up per alcuni progetti, si va dal 2x al 270x.
|
|
|
|
|
|
#12 | ||
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Comunque, quando ho studiato elaborazione delle immagini all'università (una dozzina d'anni fa, come minimo ) per "kernel" il professore soleva indicare la matrice di convoluzione da applicare all'immagine.Se così fosse, non capirei il perché ciò non sia fattibile con Python, che offre classi adeguate per rappresentare array di dati omogenei e "standard", ma ho il non vago sospetto che qui per "kernel" intendano qualcosa di diverso. Quote:
Magari questa è l'occasione buona per farlo in maniera semplice, finalmente.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
||
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Col CUDA, sarebbe possibile bypassare DirectX e OpenGL e far girare il proprio motore grafico al livello di GPU?
Ho letto che Epic vuole implementare un render di questo tipo, a loro detta un passo avanti enorme per flessibilità e velocità... sarà vero? Il Fek ha detto che non è possibile, dato che al contrario i developers puntano all'astrazione. Ma se facesse guadagnare anche solo un 10% di prestazioni credo che in ricavi converrebbe |
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Codice:
__global__ void sum( float* u, float* v, float* w )
{
int bs = blockDim.x;
int bx = blockIdx.x;
int tx = threadIdx.x;
w[ bz*bs + tx ] = u[ bx*bs + tx ] + v[ bx*bs + tx ];
}
Il motivo di tutti quegli indici strani e' che l'esecuzione dell'intera operazione viene suddivisa in blocchi i quali a loro volta vengono suddivisi in thread (che sono gli elementi che eseguono in parallelo). Il motivo di questa suddivisione e' data dal fatto che thread appartenenti allo stesso blocco condividono della memoria (chiamata shared appunto) locale molto piu' veloce di quella globale. La gestione degli accessi alla memoria e' probabilmente uno degli elementi piu' cruciali per le performance in CUDA. Devi non solo minimizzare quelli alla memoria globale, ma pure organizzare gli accessi da parte di thread differenti in modo opportuno: se thread "vicini" (come indice) leggono usano locazioni di memoria in modo opportuno la scheda grafica riesce ad effettuare diverse letture in batch, ottimizzando la banda. Spero che come riassunto offerto da un profano (ho cominciato a giocare con CUDA il mese scorso a tempo perso) possa essere abbastanza chiaro Come puoi ben capire scrivere i kernel e' un'operazione cruciale, tediosa (nel senso che il modo di procedere e' abbastanza chiaro) e che genera codice illeggibile (secondo me) a causa della marea di indici presenti Codice:
cudamap( lambda x,y,z : z = x + y, u,v,w) Ho volutamente tralasciato il problema di piu' alto livello, ovvero di come organizzare l'algoritmo in modo parallelo, ma e' un argomento che merita molto piu' spazio e su cui non mi espongo
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Sei stato chiarissimo, grazie.
A questo punto.... Codice:
del CUDA
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
Visto che e' del settore e sicuramente ne sa piu' di me, tendo a fidarmi di quel che dice Fek
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jun 2008
Messaggi: 384
|
CUDA
Quote:
Ora la domanda nasce spontanea : ma perchè la NVdia, invece che diffondere al pubblico il codice dell'ambiente di sviluppo delle sue GPU , non ha prodotto o fatto produrre degli applicativi specifici ? Comunque credo che l'unica modo , (come la maggior parte delle volte in questi casi) sia sperimentare . Ovvero comprare una GPU , scrivere un codice per l'applicazione che interessa e verificare i risultati , facendo diversi tentativi . Eih.. ma cosa sto facendo ? Ultima modifica di Albitexm : 21-06-2008 alle 13:43. |
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Feb 2006
Messaggi: 1304
|
Quote:
Invece Nvidia crea GPU che eseguono solo shaders e CUDA, che è un linguaggio proprietario e assolutamente incompatibile con la concorrenza. Quindi dovranno inventare qualcosa per convincere gli sviluppatori a trascurare tutti gli utenti AMD no? Per ora stanno rendendo il codice eseguibile anche su CPU x86... IMHO vogliono porre CUDA come standard nella programmazione "manycore"... |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:13.




















