View Full Version : C++ AMP, il GPU computing secondo Microsoft
Redazione di Hardware Upg
16-06-2011, 14:13
Link alla notizia: http://www.hwfiles.it/news/c++-amp-il-gpu-computing-secondo-microsoft_37252.html
Microsoft annuncia le estensioni C++ AMP che permetteranno agli sviluppatori di sfruttare in modo adeguato la potenza di calcolo messa a disposizione dalle GPU
Click sul link per visualizzare la notizia.
Tedturb0
16-06-2011, 14:19
Mah.. da quando in qua M$ si fa paladina di specifiche open?
To demonstrate the capability of C++ AMP Microsoft showed a rigid body simulation program that ran on multiple computers and devices from a single executable file and was able to scale in performance from 3 GLOPS on the x86 cores of Llano to 650 GFLOPS on the combined APU power and to 830 GFLOPS with a pair of discrete Radeon HD 5800 GPUs.
http://www.pcper.com/news/General-Tech/AFDS11-Microsoft-Announces-C-AMP-Competitor-OpenCL
...notevole il test su Llano...inoltre mette in luce come microsoft stia già collaborando con AMD per spingere verso l'utilizzo massiccio di DirectCompute e simili...finalmente si aprono interessanti proposte per l'uso combinato cpu/gpu...
...Gabriele potresti gentilmente aggiungere il link della fonte?...
gabriele_burgazzi
16-06-2011, 14:45
Errore mio, hai ragione. A seguire il link alla fonte:
http://techreport.com/discussions.x/21134
ercole69
16-06-2011, 15:41
http://www.pcper.com/news/General-Tech/AFDS11-Microsoft-Announces-C-AMP-Competitor-OpenCL
...notevole il test su Llano...inoltre mette in luce come microsoft stia già collaborando con AMD per spingere verso l'utilizzo massiccio di DirectCompute e simili...finalmente si aprono interessanti proposte per l'uso combinato cpu/gpu...
Dai bench emerge che llano è davvero una bella bestia visto che produce una potenza quasi pari a 2 5800 affiancate (anche perchè probabilmente la APU interna viene spenta o sfruttata a regime molto basso con le schede esterne, visto che mi pare di ricordare che con opencl le 5850 facevano più di 400GFlops a testa).
Si, llano sembra essere una bella bestia; il che fa ben sperare per Bulldozer!
Non capisco perché Microsoft abbia sviluppato C++ AMP rilasciandola open. A questo punto non potevano intervenire direttamente su OpenCL?
Forse gli avrebbe poi creato problemi di licenza nell'inclusione in Visual Studio?
In ogni caso ben venga l'open-ness.
Dai bench emerge che llano è davvero una bella bestia visto che produce una potenza quasi pari a 2 5800 affiancate (anche perchè probabilmente la APU interna viene spenta o sfruttata a regime molto basso con le schede esterne, visto che mi pare di ricordare che con opencl le 5850 facevano più di 400GFlops a testa).
...penso ci sia anche un problema di sync per il funzionamento apu con gpu esterna...
Mah.. da quando in qua M$ si fa paladina di specifiche open?
Eh già... siccome MS è brutta e cattiva non può farlo?
Non capisco perché Microsoft abbia sviluppato C++ AMP rilasciandola open. A questo punto non potevano intervenire direttamente su OpenCL?
Forse gli avrebbe poi creato problemi di licenza nell'inclusione in Visual Studio?
Visual Studio supporta già OpenCL.....
Mah.. da quando in qua M$ si fa paladina di specifiche open?
In realtà MS ha al proprio interno una serie di tecnici (ed una intera minidivisione) dedicata a progetti open. Solo che è poco pubblicizzata....
WillianG83
16-06-2011, 17:59
Mah.. da quando in qua M$ si fa paladina di specifiche open?
Beh finché certa gente ragionerá come te, microsoft puó fare quel che vuole che ci sará sempre della gente con i paraocchi pronta a criticarla indipendentemente dalla scelta che fa.
Prima che fai l'offeso ti anticipo dicendo che la tua domanda non poteva essere piú ostile, tipico delle persone fanboy che hanno come base microsoft cacca invece tutto quello che non é microsoft é cosa buona o ottima (dipende se ha simpatia per apple o no)
November
16-06-2011, 18:13
In realtà la notizia è molto fumosa. A parte il solito tentativo da parte di Microsoft di imporre il proprio standard quando ce ne sono già altri, non vedo cosa ci sia di open (non mi sembra che la scelta delle api e la sua implementazione sia aperta). Quanto all'"estensione", è del compilatore o realizzata via template library (tipo Intel TBB, )?
November
16-06-2011, 18:18
Beh finché certa gente ragionerá come te, microsoft puó fare quel che vuole che ci sará sempre della gente con i paraocchi pronta a criticarla indipendentemente dalla scelta che fa.
E sempre della gente pronta difenderla a spada tratta. In realtà bisogna essere onesti e obiettivi, specifiche condivise e realizzate con altri, da parte di MS, non si sono mai viste (e per buoni motivi, almeno dal loro punto di vista). Non è questione di religione, ma di convenienza economica. I soliti denigratori sono indubbiamente fastidiosi, ma quelli che non si rendono conto di questo sono anche peggio.
Pier2204
16-06-2011, 18:43
E sempre della gente pronta difenderla a spada tratta. In realtà bisogna essere onesti e obiettivi, specifiche condivise e realizzate con altri, da parte di MS, non si sono mai viste (e per buoni motivi, almeno dal loro punto di vista). Non è questione di religione, ma di convenienza economica. I soliti denigratori sono indubbiamente fastidiosi, ma quelli che non si rendono conto di questo sono anche peggio.
Condivido quasi tutto, tranne che (dal loro punto di vista) quando la convenienza economica si sposta su un altro terreno, condivisione di risorse o aderenza a standard diffusi, sono pronti ad accettare la sfida, cosa che non sempre è da tutti.
In sostanza, hanno capito anticipatamente che imporre standard oggi è solo deleterio e non porta a nulla, molto meglio seguire passi già trattati o in via di definizione, per poi competere a livello qualitativo.
Il cambio di strategia, nonostante qualcuno non se ne sia accorto, non è dovuto al fatto che MS sia diventata più buona, (buono o cattivo sono termini relativi riguardo aziende di quel calibro), ma perchè è chiaro che l'epoca del monopolio Wintel sta volgendo al termine.
Consci di questo, il terreno di competizione si sta spostando nella competizione vera, qualità, prodotti, innovazione.
per quanto mi riguarda saluto questa cosa come un fatto estremamente positivo, ..magari ci fosse la stessa cosa in altri ambiti, in particolare a casa nostra, cominciando a livello politico...
November
16-06-2011, 20:43
In sostanza, hanno capito anticipatamente che imporre standard oggi è solo deleterio e non porta a nulla, molto meglio seguire passi già trattati o in via di definizione, per poi competere a livello qualitativo.
Scusa, ma dove starebbe accadendo tutto questo? In quali prodotti o quali standard?
Il cambio di strategia, nonostante qualcuno non se ne sia accorto, non è dovuto al fatto che MS sia diventata più buona, (buono o cattivo sono termini relativi riguardo aziende di quel calibro), ma perchè è chiaro che l'epoca del monopolio Wintel sta volgendo al termine.
Può essere che non abbia ben capito cosa intendi dire, ma il punto è che il classico SO desktop (ma potenzialmente anche quello aziendale, visto che il cloud - più probabilmente privato - potrebbe anche avere un certo successo sul lungo periodo) sta iniziando un percorso di discesa. Ma non mi sembra che MS abbia cambiato politica, sta solo provando a cambiare certi prodotti (e vedremmo se avranno successo) mentre continua, per quanto possibile (ma non più come un tempo dove non c'erano Google e Apple così forti), a cercare di imporre i propri standard (o a comprarsi quelli ben affermati altrui, tipo Skype). Per altro in America la competizione aziendale, specie per i colossi, è tipicamente vissuta come una vera e propria guerra, dove ogni colpo, anche scorretto, è valido (nulla da invidiare in verità).
In questo caso particolare stanno cercando di imporre, grazie alla fama del loro ambiente di sviluppo e del loro SO, C++ AMP e DirectCompute (le loro API), in modo da togliere di mezzo quelle degli altri vendor (che purtroppo non hanno la stesso potere in ambito software) o OpenCL. Il copione è assolutamente sempre lo stesso. Poi, sulla loro qualità non mi pronuncio (anche perché bisognerà toccarla con mano prima), ma mi limito a notare che quando c'è stata competizione vera MS non ne è uscita tanto bene; nonostante questo potrebbe diventare un successo, ma più che altro per la posizione di vantaggio in cui si trova per affermare questi standard. Staremo a vedere.
Pier2204
16-06-2011, 21:18
Scusa, ma dove starebbe accadendo tutto questo? In quali prodotti o quali standard?
Internet Explorer ne è un esempio.
certo fino alla versione 6/7 avevano quasi l'80% del loro browser installato non ci pensavano minimamente di seguire gli standard, anzi, li osteggiavano sempre, crandosi di conseguenza una certa antipatia da parte degli sviluppatori, che da una versione all'altra era un problema, non solo, ma da un browser e l'altro bisogna fare 2 versioni diverse di software.
Ora con l'avanzata di Firefox prima, Chrome dopo è chiaro che devono accettare gli standard CSS3 e HTLM 5 in via di definizione, non hanno più la forza di imporre niente.
Può essere che non abbia ben capito cosa intendi dire, ma il punto è che il classico SO desktop (ma potenzialmente anche quello aziendale, visto che il cloud - più probabilmente privato - potrebbe anche avere un certo successo sul lungo periodo) sta iniziando un percorso di discesa. Ma non mi sembra che MS abbia cambiato politica, sta solo provando a cambiare certi prodotti (e vedremmo se avranno successo) mentre continua, per quanto possibile (ma non più come un tempo dove non c'erano Google e Apple così forti), a cercare di imporre i propri standard (o a comprarsi quelli ben affermati altrui, tipo Skype). Per altro in America la competizione aziendale, specie per i colossi, è tipicamente vissuta come una vera e propria guerra, dove ogni colpo, anche scorretto, è valido (nulla da invidiare in verità).
In questo caso particolare stanno cercando di imporre, grazie alla fama del loro ambiente di sviluppo e del loro SO, C++ AMP e DirectCompute (le loro API), in modo da togliere di mezzo quelle degli altri vendor (che purtroppo non hanno la stesso potere in ambito software) o OpenCL. Il copione è assolutamente sempre lo stesso. Poi, sulla loro qualità non mi pronuncio (anche perché bisognerà toccarla con mano prima), ma mi limito a notare che quando c'è stata competizione vera MS non ne è uscita tanto bene; nonostante questo potrebbe diventare un successo, ma più che altro per la posizione di vantaggio in cui si trova per affermare questi standard. Staremo a vedere.
Il punto è proprio come dici, il desktop sta iniziando una discesa continua, ed è il terreno dove MS ha una percentuale altissima di installato, ora devono confrontarsi con altri colossi che hanno quote altissime nel mobile, settore dove è previsto il più alto tasso di sviluppo.
Chiaramente le loro API fanno parte del loro sistema, il fatto che queste C++ AMP siano aperte anche a piattaforme non microsoft non la vedo come voler imporre o togliere di mezzo gli altri vendor, se gli altri sono più bravi non basta il nome MS.
Poi tutto è possibile, ma su questo non ci giurerei
November
16-06-2011, 21:59
Internet Explorer ne è un esempio.
Infatti è un prodotto, sconfitto, che a loro non interessa più e al quale secondo me lavorano piuttosto poco ormai.
Chiaramente le loro API fanno parte del loro sistema, il fatto che queste C++ AMP siano aperte anche a piattaforme non microsoft non la vedo come voler imporre o togliere di mezzo gli altri vendor, se gli altri sono più bravi non basta il nome MS.
Ma, prima di tutto bisogna vedere di cosa si tratta, secondo bisogna vedere cosa intendono per open, perché a me sembra che di open non ci sia niente, o che comunque sia un'apertura fasulla, come quella di silverlight. Del resto scopo e modo di fare mi sembrano sempre i soliti. Se il supporto va nel compilatore di sicuro il loro è già pronto, mentre tutti gli altri no, curioso no?
Pier2204
16-06-2011, 22:32
Infatti è un prodotto, sconfitto, che a loro non interessa più e al quale secondo me lavorano piuttosto poco ormai.
:confused: Inizio Maggio, ha un share del 17% considerando che va solo su windows 7 rispetto agli altri che vanno su tutto, a loro non interessa a tal punto che stanno lavorando sul 10
November
16-06-2011, 23:20
:confused: Inizio Maggio, ha un share del 17% considerando che va solo su windows 7 rispetto agli altri che vanno su tutto, a loro non interessa a tal punto che stanno lavorando sul 10
Non è un prodotto strategico, non da solo (e la comparsa di Bing non è un caso). E' solo uno degli elementi del mondo web, nel quale sta provando (imho con poco successo) ad imitare google.
sierrodc
16-06-2011, 23:27
@November
Qui c'è un esempio di codice:
http://hothardware.com/News/Microsoft-Demos-C-AMP-Heterogeneous-Computing-at-AFDS/
Non sono esperto di c++, però qualche annetto fa avevo usato OpenMP, dici che oramai è obsoleto?
Mah.. da quando in qua M$ si fa paladina di specifiche open?
Embrace, Extend, Extinguish.
Prima si fanno paladini di proposte con le specifiche aperte (ma codice sorgente e brevetti sono un altro paio di maniche), poi "estendono lo standard" con roba che implementano solo loro e forti della loro posizione predominante fanno fuori la concorrenza.
e io piccolo sviluppatore godo con quello "standard esteso" che mi permette di lavorare meglio e più velocemente per la maggioranza dell'utenza
Non ho ben capito, ma un'applicazione del genere funziona con GPU sia nVidia che ATI?
e io piccolo sviluppatore godo con quello "standard esteso" che mi permette di lavorare meglio e più velocemente per la maggioranza dell'utenza
Nella maggior parte dei casi non ti permette di lavorare meglio, ti da solo l'impressione che sia più semplice ma sopratutto ti lega meglio a Microsoft.
Considera ad esempio come mai .Net non abbia raggiunto gli obiettivi dichiarati ufficialmente da Microsoft e per AMP abbiano dovuto usare C++, mentre invece Apple zitta, zitta usa da tempo LLVM per ottimizzate automaticamente il codice per CPU e GPU e con Xcode4 è uscita con il supporto pieno per LLVM su tutta la linea (iPhone, iPad, ed i vari Mac). :read:
devbeginner
17-06-2011, 11:20
Mah.. da quando in qua M$ si fa paladina di specifiche open?
.NET è standard ECMA da prima che tu conoscessi il significato di "open", posto che tu lo sappia anche ora.
devbeginner
17-06-2011, 11:25
Embrace, Extend, Extinguish.
Prima si fanno paladini di proposte con le specifiche aperte (ma codice sorgente e brevetti sono un altro paio di maniche), poi "estendono lo standard" con roba che implementano solo loro e forti della loro posizione predominante fanno fuori la concorrenza.
il solito blablabla.
nell'ecosistema .NET girano Ruby, Python, PHP (questi sono open sì?) e lo fanno piuttosto bene, con tanto di documentazione al seguito.
Mai dato un occhio a Codeplex?
Dai su...
Nella maggior parte dei casi non ti permette di lavorare meglio, ti da solo l'impressione che sia più semplice ma sopratutto ti lega meglio a Microsoft.
Considera ad esempio come mai .Net non abbia raggiunto gli obiettivi dichiarati ufficialmente da Microsoft e per AMP abbiano dovuto usare C++, mentre invece Apple zitta, zitta usa da tempo LLVM per ottimizzate automaticamente il codice per CPU e GPU e con Xcode4 è uscita con il supporto pieno per LLVM su tutta la linea (iPhone, iPad, ed i vari Mac). :read:
nell'anno del signore 2011 per sviluppare su iPhone ti devi scordare il garbage collector e lui parla di LLVM (che per altro si sta cercando di implementare nei linguaggi che girano sul DLR).
Ma va va :muro: :rolleyes:
.net non ha raggiunto gli obiettivi?!
per AMP hanno "dovuto" usare C++ ?!?
Xcode?!?
Iphone, Mac ?!
ehhehe
Visual Studio supporta già OpenCL.....
Non lo uso quindi non sapevo... :)
Non ho ben capito, ma un'applicazione del genere funziona con GPU sia nVidia che ATI?
Considerando che C++ AMP è stato presentato all'AMD Fusion D.S., questa lo supporterà a pieno insieme ad OpenCL; nVidia, analogamente, supporta OpenCL e DirectCompute quindi di sicuro abbraccerà pure questo.
SE rispettano le API standard si, un'applicazione del genere funzionerà su entrambe le piattaforme.
Considera ad esempio come mai .Net non abbia raggiunto gli obiettivi dichiarati ufficialmente da Microsoft e per AMP abbiano dovuto usare C++, mentre invece Apple zitta, zitta usa da tempo LLVM per ottimizzate automaticamente il codice per CPU e GPU e con Xcode4 è uscita con il supporto pieno per LLVM su tutta la linea (iPhone, iPad, ed i vari Mac). :read:
A me sembra che .NET venga usato praticamente ovunque ormai... poi dovuto usare C++? Perché scusa, a parte C++ e Fortran quale linguaggio viene utilizzato per il CPU computing? Sempre da lì devi passare.
Apple zitta zitta ha ottimizzato GCC.
nell'anno del signore 2011 per sviluppare su iPhone ti devi scordare il garbage collector e lui parla di LLVM (che per altro si sta cercando di implementare nei linguaggi che girano sul DLR).
Ma va va :muro: :rolleyes:
Quella è stata una scelta deliberata di Apple e come forse ben saprai LLVM gira sia con o senza garbage collector (può essere implementato sia dai runtime che a livello di librerie di supporto specifico di un certo linguaggio).
A me sembra che .NET venga usato praticamente ovunque ormai... poi dovuto usare C++? Perché scusa, a parte C++ e Fortran quale linguaggio viene utilizzato per il CPU computing? Sempre da lì devi passare.
Viene usato praticamente ovunque (su S.O di Microsoft) ... solo che in codice .Net managed puro si scrivono le applicazioni che una volta si scrivevano con il Visual Basic pre-Net oppure che altri scrivono in Java, mentre per il resto si finisce con il mixare codice managed ed unmanaged ecc. ecc.
Viene usato anche su Windows CE, ma come con i runtime precedenti devi ricordarti di non usare un sacco di roba che c'e' solo sul desktop, ecc. ecc.
E questo ci porta alla necessità di usare per molta roba il "vecchio" C++ nonostante Microsoft la smeni sempre con quanto è più bello, moderno ed efficiente usare C#. ;)
Apple zitta zitta ha ottimizzato GCC.
Hai presente il CLang ? (compilatore C/C++ scritto da zero, ottimizzato per LLVM e sponsorizzato da Apple)
devbeginner
17-06-2011, 15:14
Quella è stata una scelta deliberata di Apple e come forse ben saprai LLVM gira sia con o senza garbage collector (può essere implementato sia dai runtime che a livello di librerie di supporto specifico di un certo linguaggio).
una scelta cretina (non la prima, nemmeno l'ultima) lato sviluppo.
IL GC è stato creato per scaricare il dev del compito di dover allocare/disallocare risorse in continuazione.
Quando qualche sviluppatore chiede insistentemente il supporto gli viene risposto che "non ci sarà per evitare che l'autonomia cali drasticamente" adducendo che il garbage collector porta ad un aumento della memoria e delle risorse occupate.
Peccato sia esattamente il contrario, è molto meglio che un automa gestisca i vari use case piuttosto che un umano che si può tranquillamente dimenticare di rilasciare/deallocare le risorse.
Tant'è che l'iPhone non dura certo più degli altri smartphone di fascia alta.
Alla fin fine gli unici campi dove è necessario avere sempre sotto controllo lo stato di un oggetto in memoria sono le simulazioni e l'hard time in generale, ecco perché i motori grafici 3D sono (ancora) in C++.
sapete dove posso trovare una guida o una documentazione che mostra come funziona?
Alla fin fine gli unici campi dove è necessario avere sempre sotto controllo lo stato di un oggetto in memoria sono le simulazioni e l'hard time in generale, ecco perché i motori grafici 3D sono (ancora) in C++.
Oppure qualsiasi applicazione in cui maggiori prestazioni fanno la differenza, mica solo le simulazioni.
devbeginner
17-06-2011, 19:09
Oppure qualsiasi applicazione in cui maggiori prestazioni fanno la differenza, mica solo le simulazioni.
a parità di applicazioni ed HW sono proprio curioso di vedere quali mirabolanti differenze di prestazioni possa offrire l'iPhone rispetto ad un WP7 che si avvale di .NET o di Android con Java.
Benchmark alla mano.
Occhio perché stiamo parlando di utilizzo o meno del GC che può fare la differenza, non di come l'iPhone gestisca le applicazioni native piuttosto che quelle di terze parti, perché è tutt'altra faccenda.
a parità di applicazioni ed HW sono proprio curioso di vedere quali mirabolanti differenze di prestazioni possa offrire l'iPhone rispetto ad un WP7 che si avvale di .NET o di Android con Java.
Benchmark alla mano.
Il riferimento alle prestazioni era riguardo l'utilizzo di C++, non sulla scelta di non permettere l'uso del garbage Collector su iPhone.
la nuova libreria amp è già disponibile? vs2010 la integra o dobbiamo aspettare la prossima versione?
Tedturb0
23-06-2011, 22:20
.NET è standard ECMA da prima che tu conoscessi il significato di "open", posto che tu lo sappia anche ora.
da quanto ne so non tutto .net è standard e i brevetti royalty free.
Tedturb0
23-06-2011, 22:25
una scelta cretina (non la prima, nemmeno l'ultima) lato sviluppo.
IL GC è stato creato per scaricare il dev del compito di dover allocare/disallocare risorse in continuazione.
Quando qualche sviluppatore chiede insistentemente il supporto gli viene risposto che "non ci sarà per evitare che l'autonomia cali drasticamente" adducendo che il garbage collector porta ad un aumento della memoria e delle risorse occupate.
Peccato sia esattamente il contrario, è molto meglio che un automa gestisca i vari use case piuttosto che un umano che si può tranquillamente dimenticare di rilasciare/deallocare le risorse.
Tant'è che l'iPhone non dura certo più degli altri smartphone di fascia alta.
Alla fin fine gli unici campi dove è necessario avere sempre sotto controllo lo stato di un oggetto in memoria sono le simulazioni e l'hard time in generale, ecco perché i motori grafici 3D sono (ancora) in C++.
forse il fatto che iPhone non abbia GC è il motivo per cui all'atto pratico sembri ancora piu veloce dei moderni smartphone dual core con applicazioni scritte in java
solo un ipotesi eh :sofico:
devbeginner
29-06-2011, 08:46
da quanto ne so non tutto .net è standard e i brevetti royalty free.
http://www.ecma-international.org/publications/standards/Ecma-335.htm
ercole69
29-06-2011, 09:04
http://www.ecma-international.org/publications/standards/Ecma-335.htm
Se leggi gli agreements dicono che le licenze sui brevetti relativi all'ECMA-335 (e sul ECMA-334 relativa a C#) sono concesse a tutti ma non necessariamente in modo gratuito (reasonable terms and conditions). Inoltre è vero che .NET è basato sull'ECMA ma non è detto che rispecchi l'ECMA al 100% quindi implementazioni "fuori standard" (come per l'xml di office) potrebbero essere coperte da brevetti non cedibili.
devbeginner
29-06-2011, 09:15
forse il fatto che iPhone non abbia GC è il motivo per cui all'atto pratico sembri ancora piu veloce dei moderni smartphone dual core con applicazioni scritte in java
solo un ipotesi eh :sofico:
non credo proprio :)
Anche perché in svariate situazioni è più reattivo/più veloce il codice interpretato...
Tedturb0
30-06-2011, 20:28
non credo proprio :)
Anche perché in svariate situazioni è più reattivo/più veloce il codice interpretato...
si certo, e gli asini volano :sofico:
poi, come disse un mio amico fanatico di java alla prima esperienza seria con c++, "java non e' lento, e' il c++ che e' veloce" :)
devbeginner
01-07-2011, 11:18
si certo, e gli asini volano :sofico:
poi, come disse un mio amico fanatico di java alla prima esperienza seria con c++, "java non e' lento, e' il c++ che e' veloce" :)
che noia
http://drdobbs.com/184401976?pgno=1 :)
di test ne è piena la Rete, basta cercare.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.