View Full Version : NVIDIA arriva in aiuto degli sviluppatori OpenCL
Redazione di Hardware Upg
10-09-2009, 16:30
Link alla notizia: http://www.hwupgrade.it/news/software/nvidia-arriva-in-aiuto-degli-sviluppatori-opencl_30063.html
La società americana rilascia OpenCL visual profiler, un software destinato ad agevolare il lavoro degli sviluppatori OpenCL
Click sul link per visualizzare la notizia.
Ma se non ho capito male openCL è solo nel mondo MAC..
La controparte su pc? Sono le applicazioni scritte in CUDA così spaiate o esiste un progetto per creare uno standard??
Non avrebbero dovuto essere le directX 11?
Ma se non ho capito male openCL è solo nel mondo MAC..
La controparte su pc? Sono le applicazioni scritte in CUDA così spaiate o esiste un progetto per creare uno standard??
Non avrebbero dovuto essere le directX 11?
Le OpenCL sono liberie OpenSource sviluppate dal gruppo Khronos. Così come le OpenGL, che servono per sfruttare l'hardware video per produrre grafica, come le OpenAL, che servono per sfruttare l'hardware audio, le OpenCL (Open Computational Library) servono a sfruttare l'hardware "video" per fare calcoli più "standard", come operazioni e divisioni.
CUDA è una tecnologia sviluppata da NVIDIA, così come una parte delle Direct3D 11 sviluppate da Microsoft, ossia il "Compute Shader", sono progettate entrabe per fare la stessa cosa:
ossia facilitare i calcoli "standard" utilizzando i processori grafici
OpenCL pare sia in uso nel mondo MAC in quanto nuove versioni di MacOS pare sia in sviluppo con parte con queste API. CUDA è ormai parte integrante di Adobe CS4 che notoriamente va sia su WIN32 che su MAC. OpenCL ovviamente come nella filosofia di Khronos Group si propone di spaziare tra tutte le piattaforme, mentre DirectX 11 è sviluppata attualmente per rimanere vincolata a sistemi Windows Vista/7, porting linux esclusi.
jokerpunkz
10-09-2009, 17:07
io pensavo che il progetto Cuda fosse in concorrenza con openCL :mbe: .....
perche nVidia appoggia e dà una mano?
forse perchè openCl è gia stato integrato in un Os mentre Cuda no (come farebbe poi, che è closed source)?
Con CUDA di scrivi i kernel (ovvero il "nocciolo" matematico) delle applicazioni GPGPU esattamente come con OpenCL.
Ma dico, avete una minima idea di cosa è? :D
io pensavo che il progetto Cuda fosse in concorrenza con openCL .....
perche nVidia appoggia e dà una mano?
forse perchè openCl è gia stato integrato in un Os mentre Cuda no (come farebbe poi, che è closed source)?
Non penso che sia esattamente concorrenza, dopotutto OpenCL sfrutta un architettura esistente e NVIDIA a tutto il vantaggio a dichiarasi OpenCL compatibile per vendere di più anche su piattaforme UNIX-like dove meglio si spandono progetti opensource... e poi c'è da ricordare che CUDA non è del tutto proprietario... va anche su schede video ATi, male ma funziona...
psychok9
10-09-2009, 17:20
Solo io continuo a pensare che questi standard chiusi, in presenza di standard "più aperti", comportano solo più confusione e la stagnazione della concorrenza? Per non parlare di un blocco "di fatto" al mercato...
Sarebbe ora che Microsoft (ma non penso che lo farà mai se non costretta), entrasse in qualche modo nel Khronos Group, portando linfa vitale alle OpenGL, spendendo anche meno soldi in R&D, e con OpenCL, OpenAL e OpenGL che girino su OSX, Windows e Linux... avremmo la tanto agognata concorrenza, visto che per i svilluppatori basterebbe creare soltanto il client per quella data piattaforma ma con degli standard grafici, audio e fisici precisi.
In una situazione di libero mercato, si occuperebbe di più del suo sistema, lascerebbe libertà all'utente di scegliere la piattaforma anche per gaming... e vabe' sto sognando. L'UE si occupa di cose più importanti, come l'integrazione di IE e WMP!!! Hai capito...
Secondo me, il miglior modo di non farsi accusare di negligenza verso i consumatori, è proprio quello di fare le accuse più strampalate a Microsoft... ottenenedo 2 obiettivi: non si perseguono i veri problemi, e giustamente l'UE passa per il cattivo :D
Scusate se sono andato OT :)
p.s. Se le DX11 andassero in difficoltà per la scarsa penetrazione di mercato, sarebbe un buon segno per reinventare le librerie del futuro, più accessibili per tutti :)
gianly1985
10-09-2009, 17:22
Le OpenCL sono liberie OpenSource sviluppate dal gruppo Khronos.
Oddio, direi più "supportate" dal gruppo Khronos.
Chi le ha sviluppate originariamente è Apple, in stretta collaborazione con nVidia.
In the world of 3D programming, OpenGL fills that role. As you've surely guessed by now, OpenCL aims to do the same for general-purpose computation. In fact, OpenCL is supported by the same consortium as OpenGL: the ominously named Khronos Group. But make no mistake, OpenCL is Apple's baby.
Apple understood that OpenCL's best chance of success was to become an industry standard, not just an Apple technology. To make that happen, Apple needed the cooperation of the top GPU vendors, plus an agreement with an established, widely-recognized standards body. It took a while, but now it's all come together.
OpenCL is a lot like CUDA. It uses a C-like language with the vector extensions, it has a similar model of memory hierarchy, and so on. This is no surprise, considering how closely Apple worked with NVIDIA during the development of OpenCL. There's also no way any of the big GPU vendors would radically alter their hardware to support an as-yet-unproven standard, so OpenCL had to work well with GPUs already designed to support CUDA, GLSL, and other existing GPU programming languages.
http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/14
http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/15
(link interessanti per capire come funziona OpenCL)
Con CUDA di scrivi i kernel (ovvero il "nocciolo" matematico) delle applicazioni GPGPU esattamente come con OpenCL.
Ma dico, avete una minima idea di cosa è?
Con CUDA ci scrivi quello che vuoi anche l'interfaccia di rete, o programmi di criptazione... è un linguaggio tipo-C per programmare la GPU.
è una specie di API così come OpenCL è un API, ossia un'interfaccia di programmazione avanzata. Quindi ci programmi, quindi ci programmi di tutto, bene o male...
Oddio, direi più "supportate" dal gruppo Khronos.
Chi le ha sviluppate originariamente è Apple, in stretta collaborazione con nVidia.
Hai ragione! Ecco qual era il pezzo di storia che non mi tornava in testa, grazie di avermelo ricordato :)
Con CUDA ci scrivi quello che vuoi anche l'interfaccia di rete, o programmi di criptazione... è un linguaggio tipo-C per programmare la GPU.
è una specie di API così come OpenCL è un API, ossia un'interfaccia di programmazione avanzata. Quindi ci programmi, quindi ci programmi di tutto, bene o male...
Guarda che lo so, io ci ho messo mano eh.
Non parlo senza cognizione come fa chi non programma con questi strumenti :D
L'ambito di elezione resta cmq la computazione orientata alla processazione parallela (tipicamente kernel matematici quindi, trasformate varie, ecc), data l'architettura stessa dell'hardware che la presuppone (le GPU).
ecco ritorniamo al tempo in cui ut funzionava meglio su nvidia a scapito di ati dal momento che gli sviluppatori lavoravano a stretto contatto con gli ingenieri della stessa, ottimizzando il codice per la determinata linea o casa...
ecco ritorniamo al tempo in cui ut funzionava meglio su nvidia a scapito di ati dal momento che gli sviluppatori lavoravano a stretto contatto con gli ingenieri della stessa, ottimizzando il codice per la determinata linea o casa...
Guarda che AMD può partecipare al consorzio, è tutto libero.....
Guarda che lo so, io ci ho messo mano eh.
Non parlo senza cognizione come fa chi non programma con questi strumenti
L'ambito di elezione resta cmq la computazione orientata alla processazione parallela (tipicamente kernel matematici quindi, trasformate varie, ecc), data l'architettura stessa dell'hardware.
Ma le usi per fare delle demo o dei prodotti finiti, per esempio per l'università o per programmi scientifici. Sono curioso di sapere in che ambito riesci ad applicarle.
Ma le usi per fare delle demo o dei prodotti finiti, per esempio per l'università o per programmi scientifici. Sono curioso di sapere in che ambito riesci ad applicarle.
Ovviamente anche prodotti finiti, ammira questo:
http://fastra.ua.ac.be/en/
Ovviamente anche prodotti finiti, ammira questo:
http://fastra.ua.ac.be/en/
Sì questo lo avevo già visto, ma volevo sapare se tu (permettimi il tu) avevi completato qualche progetto (per lavoro o università). Mi interessava conoscere l'opinione di qualcuno che ci lavorasse già, perchè prevedo di farne uso maggiore in futuro (non solo in-house demo). Avrei voluto avere la tua opinione di sviluppatore, come ti trovi e come valuti i risultati, se me la puoi dare.
Poi giuro che la pianto di rompere.
pabloski
10-09-2009, 17:45
veramente AMD già partecipa a Khronos ed è uno degli sviluppatori di OpenCL
perchè ATI abbia creato Stream e Nvidia Cuda è tutto da spiegare, visto che poi entrambe vogliono OpenCL
e inoltre ricordo che OpenCL va molto aldilà di gpu computing e si pone come framework per lo sviluppo su sistemi eterogenei, quindi i programmi OpenCL girano su cpu/multicore e gpu, con la possibilità di supportare in futuro gli fpga
in sostanza qualsiasi processore ( centrale, grafico, riconfigurabile ) ci sia nel sistema, OpenCL è in grado di sfruttarlo
inoltre è bene ricordare che Cuda, OpenCL e Brook+ ( usato da ATI ) sono tutti linguaggi derivati dal C
pabloski
10-09-2009, 17:50
Sì questo lo avevo già visto, ma volevo sapare se tu (permettimi il tu) avevi completato qualche progetto (per lavoro o università. Mi interessava conoscere l'opinione di qualcuno che ci lavorasse già, perchè prevedo di farne uso maggiore in futuro (non solo in-house demo). Avrei voluto avere la tua opinione di sviluppatore, come ti trovi e come valuti i risultati, se me la puoi dare.
Poi giuro che la pianto di rompere.
posso risponderti io visto che uso Cuda
dal punto di vista del linguaggio e del framework non c'è niente di strano, tranne un paio di parole chiave che fanno capire al compilatore/runtime che certe funzioni sono kernel della gpu e un paio di variabili sottintese che vengono passate alle funzioni/thread
il resto è puro e semplice C, senza differenze
il problema vero è per i progetti complessi, perchè il sistema è fortemente multithread, quindi tutti i casini derivanti dal multithreading che normalmente i programmatori evitano, vanno affrontati
però per chi è abituato al multithreading, Cuda ( Stream e OpenCL anche ovviamente ) è una pacchia
in termini di performance non c'è storia....una gpu elabora al ritmo di 150-200 volte tanto rispetto ad una cpu e tieni conto che nvidia e ati sfornano gpu sempre più potenti a ritmi serrati
per le applicazioni parallelizzabili e quelle che fanno uso intensivo di calcoli fpu, il gpgpu è una vera manna....ovviamente una gpu non sarà mai brava nell'elaborare stringhe ( copia, ricerca, ecc... )
ma del resto le gpu sono fatte per fare i conti, non il copia-incolla dal browser all'editor
Sì questo lo avevo già visto, ma volevo sapare se tu (permettimi il tu) avevi completato qualche progetto (per lavoro o università). Mi interessava conoscere l'opinione di qualcuno che ci lavorasse già, perchè prevedo di farne uso maggiore in futuro (non solo in-house demo). Avrei voluto avere la tua opinione di sviluppatore, come ti trovi e come valuti i risultati, se me la puoi dare.
Poi giuro che la pianto di rompere.
No io per ora solo demo, cmq puoi rivolgerti al PoliMI e vedere a che punto stanno loro :D
ma del resto le gpu sono fatte per fare i conti, non il copia-incolla dal browser all'editor
Appunto :D
Tra l'altro ho visto che gli informatici puri (non noi ingegneri che viviamo di FFT :asd: ) avevano provato a studiare le performance di automi cellulari con le GPU qualche anno fa, quello è un ambito teorico molto molto interessante :)
Solo io continuo a pensare che questi standard chiusi, in presenza di standard "più aperti", comportano solo più confusione e la stagnazione della concorrenza? Per non parlare di un blocco "di fatto" al mercato...
Io avrei detto proprio il contrario, dato che OpenGL è stagnate, confusa e ha portato al blocco del suo mercato.
Infatti OpenCL sarebbe l'ideale sulla carta, ma temo che faranno una brutta fine a causa dei compute shaders, che sicuro come le tasse staranno anche sulla prossima Xbox.
DX dall'altro lato lo muove fin troppo il mercato, sono fuori le 11 senza giochi per le 10 :asd:
Vi ringrazio. Io fino ad ora avevo usato gli shader HLSL per effettuare calcoli GPGPU, con tutto lo sbattimento e i limiti del caso, ma almeno funzionavano anche su Direct3D 9 per quanto poco facessero.
Effettivamente è vero pabloski, ho provato a seguire la demo di GPUGems per effettuare il QuickSort delle Texture via CUDA ma l'ho trovato macchinoso e ho abbandonato a metà (si noti la determinazione), eppure avrebbe dovuto essere abbastanza parallelizzabile, a detta loro...
Visto che io e il PoliMi abbiamo un brutto rapporto, posso chiedervi cosa fanno le vostre applicazioni? (le mie sono promesse da marinaio)
pabloski
10-09-2009, 18:39
per quel che riguarda me lo uso principalmente per la simulazione di reti neurali
Io avrei detto proprio il contrario, dato che OpenGL è stagnate, confusa e ha portato al blocco del suo mercato.
Infatti OpenCL sarebbe l'ideale sulla carta, ma temo che faranno una brutta fine a causa dei compute shaders, che sicuro come le tasse staranno anche sulla prossima Xbox.
DX dall'altro lato lo muove fin troppo il mercato, sono fuori le 11 senza giochi per le 10
opengl stagnante? ma se qualche mese fa è uscita l'ultima release
e poi se parliamo di mercato videoludico, parliamo di wii e quindi di opengl, altro che directx
poi come fai ad usare il gpgpu con le directx che sono un'api di alto livello? se fosse così semplice, nvidia avrebbe fatto usare opengl o le stesse directx, invece di inventarsi cuda
opencl invece è un tentativo di creare un metalinguaggio in grado di sfruttare tutte le gpu sul mercato, cosa che per ora non è fattibile al 100% perchè è necessario maneggiare le gpu a basso livello
opencl però sfrutta llvm che è un framework per la generazione di compilatori ottimizzanti aot e jit
quando opencl sarà completato, allora potrà maneggiare i meccanismi di basso livello al posto nostro e a quel punto non avrà più senso usare cuda o brook
fino ad allora però io sarò costretto ad utilizzare cuda e a soffrire per installarlo su linux :D
MiKeLezZ
10-09-2009, 20:34
io pensavo che il progetto Cuda fosse in concorrenza con openCL :mbe: .....
perche nVidia appoggia e dà una mano?
forse perchè openCl è gia stato integrato in un Os mentre Cuda no (come farebbe poi, che è closed source)?OpenCL è stato fatto anche da NVIDIA
Purtroppo nei forum ci sono i fanboy che dicono le cose cattive, tipo ho sentito per parecchi mesi dire "AMD è più brava perchè supporta OpenCL mentre NVIDIA no"
Per fortuna poi la verità viene a galla... e fino a prova contraria, come al solito, è NVIDIA che si prodiga nei progetti (che sia CUDA, OpenCL, 3DVision o altro), mentre da parte di AMD tutto tace
p.s. CUDA significa anche OpenCL, non possono essere in concorrenza
maumau138
11-09-2009, 01:01
Da quello che ho capito io Open CL viene implementato da Nvidia e Ati attraverso i loro linguaggi proprietari.
In pratica è come se le istruzioni andassero tradotte due volte prima di poter essere compilate decentemente.
Non so se è corretta come interpretazione, ma potrebbe essere il motivo per il quale Nvidia continua a sviluppare CUDA e Ati sviluppa Stream, oltre al fatto che al momento non so Open Cl a che punto sia, mi pare sia stato ratificato il protocollo, ma come diffusione siamo a 0.
Edit: Mi sono espresso malissimo, sarà per l'ora, quindi non linciatemi.
gianly1985
11-09-2009, 01:13
Open Cl a che punto sia, mi pare sia stato ratificato il protocollo, ma come diffusione siamo a 0.
Almeno in ambito Mac è già diffuso (o lo sarà a breve) su qualche milione di macchine grazie a OSX 10.6 Snow Leopard (che implementa nativamente OpenCL 1.0)
GPU supportate (al momento) su Mac:
NVIDIA GeForce 8600M GT, GeForce 8800 GT, GeForce 8800 GTS, GeForce 9400M, GeForce 9600M GT, GeForce GT 120, GeForce GT 130.
ATI Radeon 4850, Radeon 4870
Marketing (dal sito Apple):
http://img.skitch.com/20090911-pt4ih11k2p1ncp4hu8g9gk8red.jpg
Documentazione per sviluppatori (per OSX):
http://developer.apple.com/mac/library/documentation/Performance/Conceptual/OpenCL_MacProgGuide/OpenCLontheMacPlatform/OpenCLontheMacPlatform.html#//apple_ref/doc/uid/TP40008312-CH108-SW1
Se vi interessa buttarvi su CUDA con qualcosa di esotico e da veri hacker:
http://www.crark.net/Cuda-OpenSrc.rar
E' l'algoritmo del più famoso cracker di password per il formato RAR :p
Liuk1984
11-09-2009, 13:52
Almeno in ambito Mac è già diffuso (o lo sarà a breve) su qualche milione di macchine grazie a OSX 10.6 Snow Leopard (che implementa nativamente OpenCL 1.0)
GPU supportate (al momento) su Mac:
NVIDIA GeForce 8600M GT, GeForce 8800 GT, GeForce 8800 GTS, GeForce 9400M, GeForce 9600M GT, GeForce GT 120, GeForce GT 130.
ATI Radeon 4850, Radeon 4870
Marketing (dal sito Apple):
http://img.skitch.com/20090911-pt4ih11k2p1ncp4hu8g9gk8red.jpg
Documentazione per sviluppatori (per OSX):
http://developer.apple.com/mac/library/documentation/Performance/Conceptual/OpenCL_MacProgGuide/OpenCLontheMacPlatform/OpenCLontheMacPlatform.html#//apple_ref/doc/uid/TP40008312-CH108-SW1
Al momento anche i drivers NVIDIA per windows/linux con supporto per CUDA dalla versione 2.2 supportano openCL.
Ovvio che è diverso da Snow Leopard che le implementa direttamente nell'OS ma è comnunque già qualcosa!
No io per ora solo demo, cmq puoi rivolgerti al PoliMI e vedere a che punto stanno loro
Eccomi! :D
sto lavorando proprio ora a un progetto per un esame ed esso prevede il porting di un'applicazione da CUDA a OpenCL.
Per quanto ne so io (5° anno inginf) per ora credo sia uno dei primi progetti che coinvolgono OpenCL direttamente (NVIDIA ha da poco rilasciato i compilatori).
ciauz
Xeon3540
01-10-2009, 07:15
volevo un consiglio se conviene ma anche in futuro acquistare un ati o una nvidia?mi ha dato molte delusione ati non parliamo dei giochi niente fisica e altro.....
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.