GPU per applicazioni di number crunching

Pubblicità
Se l'idea è quella di usare il Fermi che ha una capacità di calcolo in doppia precisione decisamente superiore al processore G200 che state usando ora, allora l'unico consiglio è quello per ora di valutare il sistema di sviluppo e la facilità di programmazione dell'algoritmo su GPU, non le prestazioni. Il salto prestazionale da G200 a Fermi sulla carta dovrebbe essere enorme, soprattutto per i calcoli in doppia precisione.
Perfetto, e' esattamente quello che abbiamo in mente. In effetti il nostro rapporto con la tecnologia e' un po' come quello del contadino con la frutta: non devi raccoglierla quando e' acerba, ma neanche aspettare che sia perfettamente matura, altrimenti e' troppo tardi. L'idea sarebbe di fare i porting di tutti i codici sulla Geforce, poi fare girare tutto sui Fermi quando arriveranno, sperando che ci sia compatibilta'.

(Lo SLI (o analogo CrossFire) è un sistema di comunicazione tra GPU che viene però usato per dividere il lavoro del rendering 3D. Non ha capacità di distribuire il calcolo GP tra 2 GPU. Infatti sono noti tutti i problemi di supporto a schede SLI da parte di molte applicazioni di calcolo che vengono fatte girare sulle schede di tipo "gaming". Le schede Tesla non hanno neanche il connettore SLI. Direi che questo metodo di comunicazione non è da prendere in considerazione. Bisogna valutare quanto il sistema (inteso come CUDA e relativi driver) riesce a distribuire il carico di lavoro su più schede, ma in questo caso credo servano le Tesla (basate su G200 già acquistabili oggi o più avanti su Fermi).
Grazie, mi confermi quanto sospettavo. In effetti un gruppo di nostri colleghi che si occupa di grafica ha un cluster di 8x2 Geforce, e quando ho chiesto come facevano la comunicazione mi hanno risposto che per loro non e' critica, in quanto le Geforce gestiscono porzioni di schermo inipendeti e devono fare poca o nulla comunicazione. Ora credo di capire che usino appunto SLI, che per noi invece non va bene.

A quanto è dato sapere oggi ATI non ha intenzione di fare nulla di simile alle schede Tesla di nvidia. Almeno non a breve. Entrare in tale mercato richiede uno sforzo per la creazione di un framework stabile e consolidato che ATI non ha. Un suo ingresso, ammesso che la tecnologia che ha ora in mano possa competere con il Fermi, richiederebbe comunque qualche hanno (2 o 3) di preparazione ovvero gli anni che nvidia ha investito in CUDA.
A quel punto però si parla già di un paio di generazioni oltre a quelle che vediamo oggi, per cui non è dato sapere a noi mortali come le cose evolveranno. Il mercato GPGPU è praticamente appena nato e le variabili in gioco sono molte. Ecco perchè credo che uno studio più sul metodo di sviluppo che sulle prestazioni attuali possa essere più indicativo.
Grazie, questa info e' preziosa per me. Mi sembra che nVidia con i Tesla voglia provare l'assalto al mercato delle "cpu" prestazionali, intese come chip non pensati per applicazioni grafiche ma per il calcolo intensivo. Ho letto che hanno fatto un accordo con il Portland Group, che produce compilatori C# e Fortran# molto noti in ambito scientiico, per sviluppare compilatori GPU-oriented. Questa sarebbe una bella rivoluzione nel campo del calcolo scientifico. Mi chiedo se ATI possa/voglia fare la stessa cosa, visto che dipende da AMD, che forse non vuole costruire la concorrenza in casa ai propri chip.

Tieni presente che la velocità con cui si stanno sviluppando le GPU è oltre il doppio rispetto a quella delle CPU, per cui se oggi non ritenete l'implementazione si GPU conveniente è possibile che in non meno di un paio di anni la questione possa invertirsi. Se i tempi di sviluppo dell'applicazione, come credo, sono più lunghi di un anno, allora la valutazione sulle prestazioni e i benefici va fatta sulle potenzialità future, tenendo conto del tipo di calcoli effettuati, non certo su quello che si ha per mano oggi (il G200 che usate oggi è il rudimento del GPGPU, che migliorerà decisamente con Fermi che a sua volta migliorerà ancora secondo le dichiarazioni di nvidia prima della fine dell'anno).
Ottimo punto da tenere ben presente, grazie.

ciao, monticelli
 
Il chip GT200 di Nvidia è un chip fretta e fuggi, nel senso che se nvidia avrebbe lavorato alla revisione e alla gestioni di una maggiore e migliore gestione della cache nella propria architettura le prestazioni in ambito di calcolo sarebbero circa 8-9 volte maggiori di quelle offerte ora dal chip GT200.

Fermi invece trae i punti di forza del "vecchio" chip GT200, con una attenta revisione alla cache e alla gestione della dram, oltre alle tantissime migliorie apportate.
Capito. In effetti in un suo white paper nVidia promette proprio un guadagno di un fattore 8 con i Fermi rispetto al chip GT200 per i calcoli in doppia precisione...

Se usavate un cluster di ben 400 nodi di 2 cpu quad-core è impossibile eguagliare tali prestazioni con alcune nvidia tesla.
Bisogna sapere il budget, le risorse disponibili.
Per tali compiti come la fluidodinamica computazionale, nella nostra sede dell' università possediamo per le ricerche alcuni cluster composti da circa una trentina di sistemi U1 equipaggiati ognuno con 4 gpu tesla, forniti dalla stessa Nvidia circa 6-7 mesi fa.
Beh, tieni presente che non possiamo usarlo tutto per noi, altrimenti i colleghi ci sparano: ci sono quelli che fanno imaging del sottosuolo per la ricerca petrolifera, quelli che processano i dati del genoma umano che arrivano dai sequenziatori, quelli che fanno CFD (fluidodinamica), etc.
Insomma, quando si tratta di risorse di calcolo siamo un po' tutti fratelli/coltelli, pur lavorando nello stesso centro. E' molto appealing la promessa di nVidia di potersi fare, con Fermi/Tesla, una piccola supermacchina personale (!) per il calcolo scientifico.

Secondo me se siete abbastanza avanti nelle ricerche potreste chiedere esigenti richieste prestazionali direttamente ad nvidia, come ha fatto al politecnico di milano se finanziate ingenti progetti e sviluppi nvidia vi fornirà il materiale necessario per le ricerche e per lo sviluppo di nuove "idee".
Nvidia al politecnico di milano ha stanziato circa 3 milioni di € per concepire nuovi progetti e fornire il materiale occorrente, come in questo caso i server necessari.


Se ti può interessare posso consigliarti anche l' acquisto di alcune workstation:

E4 Computer Engineering S.p.A. | The Professional Solution
Grazie mille per l'informazione e la dritta. Provo a parlarne con il nostro coordinatore di progetto, un signore di Oxford molto preciso. Gia' ora mi sta facendo qualche obiezione sul fatto di legarci in modo univoco ad un unico vendor (nVidia), che per giunta non e' neanche europeo. Forse l'abbocco diretto con nVidia, se permettesse un accordo esterno al progetto, potrebbe essere la soluzione giusta:sisi:

un saluto,
monticelli
 
Volevo ringraziarvi tutti,
siete stati molto utili e molto gentili. Ho capito che la cosa piu' ragionevole e' puntare su nVidia, facendo prima lo sviluppo sulle geforce e poi passare tutto sui Fermi/Tesla, quando saranno disponibili. Ho anche capito il discorso SLI e affini e faro' sfoggio della cosa con i colleghi del gruppo di visualizzazione, la prossima volta che li incontro in mensa ;)
Molto interessanti, per me, pure le considerazioni sul trend del calcolo scientifico con GPU, che mi fanno pensare che e' esattamente ora il momento di fare i passi in questa direzione. Bravi voi di PoliMI che avete iniziato 6 mesi fa!

Vorrei chiedere un'ultima cosa, per me molto importante, a te Fall e a tutte le altre persono che hanno esperienza del settore: visto che si parla di nVidia, qual e' il linguaggio "giusto", C-Cuda oppure openCL?
Io vorrei usare C-Cuda perche' mi sembra piu' consolidato e con una serie di software matematico gia' disponibile e utile per noi; il nostro coordinatore, con qualche ragione, spinge verso openCL perche' e' un linguaggio non proprietario ma usabile anche su ATI.
Consigli? Commenti?

Grazie mille ancora una volta, :birra:
monticelli
 
Sicuramente OpenCL garantirà la compatibilità tra nvidia e ATI. Il problema sta solo nell'efficienza. Possibile che la questione compatibilità, come in tutti gli altri casi, voglia dire astrazioni che diminuiscono l'efficienza.
Dovreste valutare questo impatto per capire se la questione compatibilità vale la diminuzione di efficienza. Comunque, tieni conto che come già detto, ATI non sarà in grado di offrire schede dedicate al calcolo per qualche annetto, e il mercato sarà dominato e condotto a proprio piacimento da nvidia che lo sta forgiando.
Pensare oggi a voler essere compatibili con un produttore che non ha un chiaro piano su come entrare nel mercato HPC, che è pure in contrasto come hai ben detto tu, con il proprio settore CPU, mi sembra un po' prematuro.
 
Quello che dite mi convince ulteriormente della scelta C-CUDA. Ci sono gia' un sacco di cose disponibili scritte in questo linguaggio, ed effettivamente la portabilita' di OpenCL e' solo virtuale, visto che l'unico competitor di nVidia non sembra voler investire nell'HPC.
Non sapevo che nVidia parlasse addirittura di uscire con Fermi2 nell'anno in corso. Mi sembra che, al di la' di quelli che saranno i risultati, stiano facendo uno sforzo davvero notevole.

Per Fall4: ho fatto casino, nel senso che tutte le volte che hai scritto OpenGL io ho letto OpenCL (certo che questa idea di chiamare tutti i linguaggi open con il nome "Open*L"...)

Vi faro' sapere come procede, se siete interessati.
A presto
monticelli
copy.png
favicon.ico
 
Se vuoi un supporto completo alle openCL le soluzioni che possono offrire il miglior supporto HW sono le schede DX11 per ora esclusiva di ATi.

Precisamente che tipo di calcoli e operazioni devi eseguire?
Per alcune sono meglio ATi, per altre potrebbe essere vantaggioso aspettare fermi di Nvidia.

Allo stato attuale Nvidia ha solo più dotazione di SW proprietario, a livello di GPU bounding sembrano essere avanti le ATi (anche DX10) grazie a delle cache condivise tra gruppi di alu reali e non simulate come si fa su GT200.
 
Se vuoi un supporto completo alle openCL le soluzioni che possono offrire il miglior supporto HW sono le schede DX11 per ora esclusiva di ATi.

Precisamente che tipo di calcoli e operazioni devi eseguire?
Per alcune sono meglio ATi, per altre potrebbe essere vantaggioso aspettare fermi di Nvidia.
Sono operazioni molto semplici: prodotti matrice-vettore che, a livello di programmazione diventano dei semplici loop che contengono moltiplicazioni e somme tra reali a 64 bit (nell calcolo numerico e' frequente che metodi matematici anche complessi si implementino attraverso una programmazione elementare). Mentre c'e' gia' qualche studio su come ottimizzare questi prodotti matrice-vettore con nVidia (questo, ad esempio), non ho trovato niente del genere con ATI.

Allo stato attuale Nvidia ha solo più dotazione di SW proprietario, a livello di GPU bounding sembrano essere avanti le ATi (anche DX10) grazie a delle cache condivise tra gruppi di alu reali e non simulate come si fa su GT200.
In realta' noi facciamo molto affidamento (speriamo non troppo:sisi:) sulle nuove Fermi: vorremo "preparare tutto" gia' adesso, lavorando sulla GeForce, per poi passare i programmi sulle Fermi. Spero che le Fermi colmino lo svantaggio che c'e' ora rispetto alle ATI.

Un saluto,
monticelli
 
Pubblicità
Pubblicità
Indietro
Top