PDA

View Full Version : Firestream 9170: nuova scheda GPGPU per AMD


Redazione di Hardware Upg
09-11-2007, 09:43
Link alla notizia: http://www.hwupgrade.it/news/skvideo/firestream-9170-nuova-scheda-gpgpu-per-amd_23194.html

AMD presenta ufficialmente la propria nuova soluzione per elaborazioni GPGPU, utilizzando architettura RV670 e introducendo la double precision

Click sul link per visualizzare la notizia.

KiDdolo
09-11-2007, 09:52
interessante, riporto anche il link dal sito AMD (http://ati.amd.com/products/streamprocessor/specs.html) se la redazione volesse inserirlo nell'articolo.... :)

Mr Resetti
09-11-2007, 09:53
... ma non riesco bene ad inquadrare la fascia di utilizzo di questo tipo di schede!!! Chi dovrebbe utilizzarle e in che campo??? Forse servono a scopi scientifici tipo il progetto folding@home??? Anche perchè a quel prezzo si colloca in un ambito professionale e non certo per gamer!!

MaxArt
09-11-2007, 09:56
Ma serve anche come scheda video? :stordita:

coschizza
09-11-2007, 10:20
Ma serve anche come scheda video? :stordita:

normalmente queste schede come anche quelle gia disponibili dalla NVIDIA sono semplicemente delle schede video standard senza uscite, quindi sono utilizzabili solo come GPGPU.

le uniche differenze che normalmente possono pensare di fare è di usare delle gpu con funzioni in hardware aggiuntive che nelle versioni fatte per giocare vengono tolte visto che non sarebbero utilizzate, per esempio le funzioni di calcoli in doppia precisione sono implementate solo in soluzioni che ne hanno realmente necessità.

Alexhwoc
09-11-2007, 10:23
Ok ottimo che hanno deciso di promuovere sk video specifiche.
Ma credo che la cosa più importante sia invece lo sviluppo degli SDK per permettere la realizzazione di software in grado di supportare qualsiasi sk video ATi .
Non so se BOINC è già predisposto, ma se lo fosse sarebbe un boom prestazionale notevole dato che la potenza di calcolo della GPU è circa 10 volte maggiore di una CPU.

Quindi più che promuovere nuove sk video ad hoc a prezzi folli, sarebbe molto più utile promuovere lo sviluppo software.
Con 2000 dollari ( circa 1400 euro) compro:
Una sk madre con 790FX quad pcie ( circa 200 euro)
4 sk video ati hd2900 pro 512mb ( circa 1000 euro) da mettere in crossfire
1 athlon X2 6400+ black edition ( circa 200 euro)

Aggiungete circa 160 euro per un kit dual channel ddr2 1066MHz da 2GB

Alla fine ho un sistema che probabilmente non ha molto ( o niente) da invidiare a quella sk dedicata proposta da AMD.
Oltre al fatto che è molto più versatile e non è vincolato ad un solo ambito di utilizzo.

pingalep
09-11-2007, 10:37
credo che nel tuo calcolo di spesa e per le finalità della macchina che teorizzi, 2 gb di ram non ECC siano veramente sotodimensioanati.

almenot 8gb ecc

coschizza
09-11-2007, 10:45
Alla fine ho un sistema che probabilmente non ha molto ( o niente) da invidiare a quella sk dedicata proposta da AMD.
Oltre al fatto che è molto più versatile e non è vincolato ad un solo ambito di utilizzo.

allaciandomi al post che ho fatto prima ti faccio notare che questa scheda ati supporta la "Double-precision floating point" e nessuna altra gpu lo fa quindi la configurazione che hai pensato, di fatto non potrebbe far girare i software che utilizzano questo tipo di calcoli, che sono alla base degli utilizzi per i quali una persona sarebbe spinta a comprare una cosa simile.

pingalep
09-11-2007, 10:46
+il raid uno sui dischi, + 1 o 2 macchine per il controllo di errore, perchè comunque stai parlando di componenti che non hanno subito i controlli di qualità delle macchine da supercomputer.

infatti mi sembra che nei progetti seti e foldingAThome i risultati interessanti siano ripassati nei computer centrali per sicurezza.

Alexhwoc
09-11-2007, 10:47
è un esempio
Poi lo si può ampliare e/o fare altri esempi . Sta di fatto che con poco più della stessa cifra proposta da AMd per questa sk video dedicata ci si cotruisce un PC da poco meno di 2 TFLOPS.

coschizza
09-11-2007, 10:56
è un esempio
Poi lo si può ampliare e/o fare altri esempi . Sta di fatto che con poco più della stessa cifra proposta da AMd per questa sk video dedicata ci si cotruisce un PC da poco meno di 2 TFLOPS.

è vero ma se poi i software non possono sfruttare quei 2 TFLOPS alla fine cosa servono?

comunque ho capito l'dea di base che vuoi esprimere solo che sia l'ati che la nvidia stanno apposta specializzando le schede per far in modo che le gpu "economiche" fatte per giocare poi non si possano utilizzare in maniera cosi semplice in mercati professionali, cosi si possono creare dei nuovi segmenti di mercato che per loro è un bene.

Alexhwoc
09-11-2007, 11:15
allaciandomi al post che ho fatto prima ti faccio notare che questa scheda ati supporta la "Double-precision floating point" e nessuna altra gpu lo fa quindi la configurazione che hai pensato, di fatto non potrebbe far girare i software che utilizzano questo tipo di calcoli, che sono alla base degli utilizzi per i quali una persona sarebbe spinta a comprare una cosa simile.
Non credo che le GPU siano incapaci di supportare il DPFP , ma molo più probabilmente sono meno efficienti. Ovviamente perchè non costruite specificatamente per fare questo tipo di operazioni.
Sono convinto che con l' adeguato software le sk video normali hanno la possibilità di elaborare questi dati (vedi pure le emulazioni sw per i formati video o la grafica 3d).

Double precision floating point (http://www.pldesignline.com/howto/202200714;jsessionid=U0X5MUPMUT4IIQSNDLRSKH0CJUNN2JVN?pgno=1)

Mi ricordo che l' elaborazione multi GPU era già statta trattata qui su HWUP:
http://www.hwupgrade.it/articoli/skvideo/1750/nvidia-tesla-gpu-g80-per-elaborazioni-gpgpu_index.html

Alexhwoc
09-11-2007, 11:16
è vero ma se poi i software non possono sfruttare quei 2 TFLOPS alla fine cosa servono?

comunque ho capito l'dea di base che vuoi esprimere solo che sia l'ati che la nvidia stanno apposta specializzando le schede per far in modo che le gpu "economiche" fatte per giocare poi non si possano utilizzare in maniera cosi semplice in mercati professionali, cosi si possono creare dei nuovi segmenti di mercato che per loro è un bene.
come per la serie fire gl o la quadro di nvidia che poi sono semplici o complessi blocchi sw da aggirare.

Garz
09-11-2007, 11:19
... ma non riesco bene ad inquadrare la fascia di utilizzo di questo tipo di schede!!! Chi dovrebbe utilizzarle e in che campo??? Forse servono a scopi scientifici tipo il progetto folding@home??? Anche perchè a quel prezzo si colloca in un ambito professionale e non certo per gamer!!

no, di sicuro non è x gamer..
curiosità: ma è possibile utilizzare il processore delle sk video normali x elaborazione generale? che so, se io volessi crakkare un archivio rar protetto da passw potrei usare anche la sk video? ps:boinc?

Alexhwoc
09-11-2007, 11:23
+il raid uno sui dischi, + 1 o 2 macchine per il controllo di errore, perchè comunque stai parlando di componenti che non hanno subito i controlli di qualità delle macchine da supercomputer.

infatti mi sembra che nei progetti seti e foldingAThome i risultati interessanti siano ripassati nei computer centrali per sicurezza.
Il ripasso dei dati elavboarti più importanti è una routine normalissima applicata in moltissimi altri ambiti: è un controllo di sicurezza. Per i dati sensibili si effettuano anche controlli incrociati. Ma questo non ha niente a che fare con l' affidabilità del pc in sè.
Le componenti elettroiniche e meccaniche attuali (HD) hanno sistemi di controllo di affidabilità ( tipo SMART). e si possono implementare ulteriori sicurezze usando raid mirroring con sata ( recenti controller supportano l' hot swap)

E per l' affidabilità è solo una questione di conoscere bene le compomenti i il loro MTBF.

Io ho un pc che lavora H24 da più di 2 anni e mezzo. Ho sempre fatto la pulizia e la manutenzione ordinaria e n on mi ha dato mai un problema.
I componenti sono normali, niente roba da super computer

demon77
09-11-2007, 11:29
Si ok il calcolo scientifico però faccio notare che oggi come oggi buona parte dei pc desktop ha una scheda video che in fatto di calcoli non è certo da buttare... eppure viene sfruttata sostanzialmente solo per i giochi..

Ma possibile che nessuno abbia pensato di tirare fuori un driver e qualche libreria per fare in modo che i programmatori possano avvantaggiarsi della GPU per migliorare applicativi vari?

Ad esempio quelli per la conversione ed il montaggio dei video..

bs82
09-11-2007, 11:34
guarda che esistono già....

kasperky ha l'antivirus che usa le 2900xt ad esempio per velocizzare la scoperta di codice virale

Maya e altri software di CG usano la gpu per fare determinati tipi di rendering

Adobe Reader lo fa per visualizzare i PDF...

ecc

ecc

raptus
09-11-2007, 12:26
un set di estensioni al linguaggio C sviluppate inizialmente dall'università di Stanford all'interno del progetto Brook, grazie alle quali rendere più agevole la programmazione di elaborazioni GPGPU utilizzando per questo il linguaggio C.
MI risulta molto strano: estensioni al linguaggio C? Basterebbero delle librerie!!!
C'è qualcuno che può darmi il link per questo? Grazie

raptus
09-11-2007, 12:28
EDIT:
Perchè in rete (al link indicato) ho trovato solo questo:
AMD FireStream SDK: Open systems approach drives adoption
The AMD FireStream SDK delivers all the tools developers need to create and optimize applications on stream processors. Developers can begin with Brook+, an AMD-enhanced and supported implementation of Brook, the popular open-source C-level language and compiler
quindi non sono estensioni del linguaggio!

demon77
09-11-2007, 12:36
guarda che esistono già....

kasperky ha l'antivirus che usa le 2900xt ad esempio per velocizzare la scoperta di codice virale

Maya e altri software di CG usano la gpu per fare determinati tipi di rendering

Adobe Reader lo fa per visualizzare i PDF...

ecc

ecc

:stordita: ah.. sapevo di maia e 3ds per il rendering in tempo reale mentre si sta modellando la scena.. per gli altri applicativi non sapevo!
Immagino però sia sfruttabile solo per una determinata gamma di schede (le radeon HD o le Nvidia serie 8xxx ) vorrei ci fosse più uniformità.. ideale sarebbe un'estensione delle directX!

Mercuri0
09-11-2007, 14:38
Si ok il calcolo scientifico però faccio notare che oggi come oggi buona parte dei pc desktop ha una scheda video che in fatto di calcoli non è certo da buttare... eppure viene sfruttata sostanzialmente solo per i giochi..

Beh neanche la CPU in fatto di calcoli non sarebbe da buttare... e quella manco per i giochi, viene sfruttata!

demon77
09-11-2007, 16:44
Beh neanche la CPU in fatto di calcoli non sarebbe da buttare... e quella manco per i giochi, viene sfruttata!

Come no?? Veramente il fatto è proprio che adesso calcola tutto la CPU!! :D

Negli applicativi sicuramente ma anche nei giochi svolge un lavoro enorme anche se la grafica è gestita dalla GPU!

NoRemorse
09-11-2007, 16:52
evitiamo i commenti inutili dati da una lettura superficiale e senza alcuna ricerca in rete. Alcuni punti sono chiari:
Il prodotto di AMD è una buona notizia per avere competizione con i sistemi Tesla di NVidia (W la concorrenza)!
L'ambito di utilizzo è chiarissimo: elaborazione parallela di grossa mole di dati; i case studies pubblicati da NVidia e HWupgrade, e molti altri in rete sono chiarissimi.
Le chiacchere sulle CPU in questo ambito stanno a zero... meglio un cluster di 10 server o stà scheda? Eddai!
E strutture, mantenimento, condiz, alim elettrica......
Non confondiamo DPFP, MTBF, SMART supercomputer e amenità varie... Wiki please.
Numerosi spunti per la trasformazione delle comuni GPU in GPGPU ci sono, e saranno una interessante prospettiva, ma qui la richiesta è MOLTO diversa.

xeal
10-11-2007, 03:26
Un po di chiarezza

Le gpu vengono usate "solo" per i giochi perchè sono progettate per quello: quello sanno fare bene, e quello fanno. Punto.

Che poi riescano a fare anche dell'altro, ok, siamo contenti, ma non significa che riescono a farlo bene quanto una cpu, per quanto sulla carta siano più "potenti". Una cpu è progettata per essere flessibile, in un certo senso si "adatta" al software. Nel caso della gpu, invece, e il software a doversi adattare, se e solo se è possibile farlo: di conseguenza una gpu può eseguire efficientemente solo quei software, o parti di essi, che si adattino alle sue caratteristiche, quindi può fare da coprocessore e svolgere alcuni compiti "in delega" dalla cpu, ma solo se il software è stato scritto apposta; in tutti gli altri casi, la gpu sarebbe ampiamente sottosfruttata, quindi di quel "10 volte più potente" non ce ne facciamo nulla; al limite, quando non è utilizzata per fare ciò che sa fare meglio (i giochi) potrebbe svolgere alcuni compiti che non farà in maniera eccellente, ma gioverebbe, in parte, alla cpu, sgravata di qualche calcolo.

Tuttavia, siccome a livello di istruzioni cpu e gpu sono, in genere, totalmente incompatibili, una soluzione ibrida che non usi esclusivamente o solo parzialmente (come mi pare faccia kaspersky) la gpu, ma preveda l'esecuzione dell'intero software sia sulla gpu, sia sulla cpu (passando, all'occorrenza, dall'una all'altra), o la fai perchè ti serve davvero (ad esempio, le directx sono scritte per poter sopperire all'assenza di una gpu compatibile mediante emulazione software, cioè tramite la cpu, con tutte le conseguenze del caso), o perchè sei una softwarehouse supercaxxuta e ti aspetti un ritorno pubblicitario notevole, oppure perchè sei completamente pazzo: in soldoni, stiamo parlando di scrivere lo stesso software 2 volte, fare il doppio del testing per "combattere", grossomodo, il doppio dei bug, impiegare il doppio del tempo e/o il doppio delle risorse (umane, tecnologiche, ecc.) e spendere il doppio dei soldi, senza avere buone probabilità di cavare un ragno dal buco, specialmente in ambito desktop. In ambito professionale, invece, le speranze ci sono, ma si ha a che fare con esigenze più specifiche e probabilmente con (parti di) algoritmi che ben si adattano alle caratteristiche tecniche di una gpu, quindi ricadiamo nel caso "sensato": una parte del software ottimizzata per la cpu, il resto per la gpu che fa da coprocessore.

Una soluzione potrebbe consistere in un compilatore jit che traduca al volo le istruzioni della cpu in istruzioni per la gpu (facile a dirsi, molto meno a farsi, perchè alcune cose potrebbero essere difficili o impossibili da fare, e poi bisogna considerare anche il diverso modo di usare la memoria, l'eventuale necessità di un supporto da parte del sistema operativo, che a sua volta dovrebbe essere in grado di girare in parte sulla gpu - e molte cose necessarie al s.o. le gpu non possono farle, ecc.). Il jit potrebbe far parte dei driver ed essere eseguito dalla stessa gpu; tuttavia, comporterebbe delle latenze, latenze che comunque si ritroverebbero, forse anche maggiori, nello scenario con il software nativamente compilato sia per la cpu, sia per la gpu (ad ogni cambio, bisognerebbe sostituire porzioni di codice più o meno grosse, che potrebbero non rientrare in ram: sarebbe come tornare al meccanismo degli overlay autoescludenti, dvendo swappare continuamente, nella peggiore delle ipotesi, dal disco alla ram e dalla ram alla vram, e viceversa...).

Il discorso potrebbe essere diverso per Larrabee, visto che nasce come multicore x86 (in buona sostanza, si tratta di una grossa cpu, con i core un po' castrati e adattati a svolgere i compiti di una gpu/di un coprocessore), però bisognerà vedere come si comporterà in ambito videoludico (visto che stavamo parlando di normali gpu desktop usate per il general purpose, e sempre in ambito desktop). Comunque, spostare un intero processo o un gruppo di thread (assimilabili a un unico processo: altrimenti sarebbe come voler spostare singoli thread da una unità all'altra in un cluster, non è proprio la cosa migliore da farsi) dalla cpu alla gpu, nel caso di Larrabee, non dovrebbe essere particolarmente difficile.

Chiarito questo, veniamo alla differenza tra le schede in oggetto e le normali gpu desktop: a parte la memoria e altri probabili accorgimenti, la selezione dei componenti, ecc. la news dice una cosa fondamentale, che è già stata sottolineata debitamente in precedenza, ma che qualcuno ha contestato, quindi è opportuno chiarire: la doppia precisione. Nella vita siamo liberi di credere tutto quello che vogliamo, però questo, purtroppo (e non lo dico ironicamente: sarebbe veramente bello poter realizzare un desiderio solo... desiderandolo!), non implica che le cose stiano necessariamente come pensiamo. Le unità in doppia precisione, in una gpu, o ci sono, oppure non ci sono: non si possono implementare "dopo". Fpga, ovvero field programmable gate array, è tutta un'altra tecnologia: si usa per realizzare circuiti elettronici "programmabili", cioè modificabili in maniera analoga a quella usata per riscrivere una eeprom; questo consente di riutilizzare uno stesso processore in contesti diversi, o di realizzare rapidamente macchine specializzate partendo da una "base" preconfezionata, e senza grandissime pretese prestazionali. Una cpu e una gpu (ma soprattutto la cpu) hanno circuiterie molto ma molto ottimizzate, cosa che un integrato in logica programmabile non può consentire, quindi sono realizzate in maniera TOTALMENTE divera!

Ma perchè le schede per il mercato di massa non sono in double precision, mentre queste si? Non sarebbe più facile realizzare un solo progetto, e risparmiare sui costi di produzione? La risposta è no, perchè le gpu sono progettate pensando specificamente ai giochi, e i giochi non hanno bisogno, per ora, di andare oltre i 32 bit. Facciamo un piccolo salto indietro. Fino a pochi anni fa, la massima precisione richiesta dalle librerie grafiche (per implementare particolari shader, o per applicare texture) era a 16 bit (la metà di adesso, e parlando di numeri reali approssimati la differenza non è poca!), e le schede video si fermavano a 16bit. Poi, sono arrivati nuovi shader model, che hanno introdotto la precisione a 32bit, cosa che richiedeva l'adeguamento delle schede video (delle nuove generazioni, non quelle già in vendita!), e per farlo erano possibili due strade: creare unità di calcolo indipendenti, alcune a 16, altre a 32, oppure farle tutte solo a 32bit. Ma perchè tanto sbattimento? Perchè il raddoppio di precisione implica una (relativamente piccola) perdita prestazionale, che poteva farsi sentire molto con i giochi che non avevano bisogno dei 32bit. Però, fare delle unità dedicate ai calcoli a 16 bit, altre per quelli a 32 implicava un costo, perchè si tratta di mettere sul chip dei transistor in più (cioè farlo più grande); tuttavia, siccome inizialmente i giochi non usavano/usavano poco i 32bit, allora si potevano limitare le risorse dedicate a quei calcoli, a vantaggio dei 16 bit; l'altra soluzione (tutto a 32bit) era più semplice, ma rischiava di portare delle penalizzazioni (naturalmente, in questi casi si può cercare di ovviare con ottimizzazioni particolari, aumenti di clock ecc.). Alla fine, la situazione si è normalizzata, con giochi più "pesanti" e graficamente "migliori", che sfruttano appieno e prevalentemente la precisione a 32 bit. Lo stesso, naturalmente, vale anche oggi: se una gpu è prodotta e venduta, principalmente, per i videogames, e se nessun videogames userà la doppia precisione ancora per parecchio tempo, perchè mai una vga di oggi dovrebbe essere capace di calcoli sui double? Se la concorrenza non fa la stessa cosa che succede? succede che le tue schede andranno sicuramente almeno un po' più lente!

Diverso il discorso per il gpgpu di un certo livello, per il quale i calcoli in doppia precisione possono essere necessari, quindi ha senso produrre delle schede dedicate, che implementano la doppia precisione e che, naturalmente, saranno prodotte a parte, in quantità limitatà e costeranno di più (anche molto di più). In realtà, ci sono molti scenari di calcolo "pesante" (matriciale), in cui può bastare la precisione a 32 bit (specialmente se è possibile approssimare le formule con degli sviluppi numerici interi). In questi ambiti, si usano in genere dei dsp (digital signal processor)/degli stream processor, che appunto elaborano o solo interi (in genere fino a 32 bit), o solo floating point (a 16 o 32 bit, di solito), oppure sono ibridi (e continuano a "fermarsi", nella maggioranza dei casi, a 32 bit), e in questi casi una normalissima gpu può fare la sua "porca" figura (basti pensare ai risultati di folding@home con le ati 19xx, ma anche con cell, le cui spe non sono altro che dei dsp). Ma se sono stati introdotti i 64 bit nelle schede destinate al gpgpu di alto livello, si vede che c'è/si prevede una certa richiesta di queste schede anche per tutte quelle elaborazioni scientifiche che necessitano appunto della double precision (la quale, in realtà, di solito non si implementa a 64 bit, ma a 80, per avere una maggiore precisione nei calcoli prima dell'approssimazione a 64).

Spenderei le ultime 2 parole sulla possibilità di usare schede di questo tipo come "semplici" gpu: salvo complicazioni lato driver (verisimili, ma non troppo), la cosa si dovrebbe poter fare appoggiandosi ad un'ulteriore scheduzza 2d su pci (meglio se limitando la risoluzione - su pcie a 2/4x non dovrebbero esserci problemi), o una seconda scheda entry-level in sli/crossfire (se compatibile), o semplicemente una vga integrata. Mi spiego: lo standard pci express per le vga, prevede una banda non solo maggiore rispetto all'agp, ma anche simmetrica, la quale dovrebbe consentire una più "abbondante" comunicazione non solo verso la gpu, ma anche dalla gpu alla memoria centrale, quindi una migliore cooperazione tra gpu e cpu, che nei giochi dovrebbe portare ad effetti grafici/fisici migliori, più realistici; tuttavia, non mi pare che questa possibilità sia attualmente sfruttata (molto, e comunque quello che ho in mente non richiederebbe una banda eccessiva), quindi si potrebbe usare la scheda gpgpu per calcolare la grafica, quindi "tirare" fuori i frame prodotti e indirizzarli alla scheda dotata di uscite video, sia che si sfrutti un eventuale sli/cf (cioè veicolando i dati su pcie), sia che si debba passare per la memoria centrale e indirizzare i frame verso la scheda aggiuntiva o l'integrata (in ogni caso, meglio se si usa della memoria dedicata e si passa da hyper transport, così da non impegnare troppo il sistema). Ma è un discorso fine a se stesso, per dire che, in fondo, se si vuol fare qualcosa, un modo si trova; sta a vedere se conviene. ;)

Mercuri0
10-11-2007, 17:21
@xeal
In realtà il produttore potrebbe fornire librerie matematiche in due versioni: una per la gpu e una per la cpu.

Se son fatte bene al programmatore del software applicativo basterebbe uno switch al compilatore per convertire il suo software da cpu a gpu :D

Come no?? Veramente il fatto è proprio che adesso calcola tutto la CPU!!
Negli applicativi sicuramente ma anche nei giochi svolge un lavoro enorme anche se la grafica è gestita dalla GPU!
La mia era una battuta, che sottolineava come le CPU siano sovradimensionate alla maggior parte degli impieghi in ambito home, e anche per le applicazioni (sempre Home) prevedibili nell'immediato (decodifica/decodifica video) si parla di usare la GPU.

Chissà, magari il futuro delle CPU per PC è quello di "ingpuizzarsi" sempre di più, (Cell, Fusion, Larrabee) come successe tanto tanto tempo fa per con le FPU.

xeal
10-11-2007, 19:04
Se bastassero delle librerie matematiche scritte ad hoc per risolvere tutti i problemi del mondo, allora smetterebbero di esistere programmatori e software house... il produttore (di qualsiasi cosa) fornirebbe le librerie e un semplicissimo wizard per realizzare qualsiasi tipo di programma che faccia funzionare l'hardware... ma le cose nel mondo reale funzionano diversamente... algoritmi specifici richiedono implementazioni specifiche A SECONDA DELLA MACCHINA SU CUI DEVONO GIRARE, altrimenti le prestazioni vanno a farsi fottere...

CPU e GPU sono cose diverse, funzionano in maniera diversa, e vanno programmate in maniera diversa. Le librerie non c'entrano una mazza, perchè possono aiutare ma non fare miracoli: alla fine il programma sarà ottimizzato O per la cpu O per la gpu: girerà velocemente solo su una delle due; però, per poter fare questo, mi serve il mio bellissimo switch software: devo scrivere due volte il programma, con TUTTE le conseguenze che ho scritto prima, nessuna esclusa, ma soprattutto, il programma sarà grande il doppio (almeno - algoritmo di esplorazione grafi per p4/cell docet! 1200 linee di codice (cell) contro 60!), userà nei due casi strutture dati in parte differenti, e per poter passare dalla cpu alla gpu bisognerà swappare come dannati e copiare dati su dati da un tipo di struttura all'altra, col rischio di sbagliare, far saltare sincronizzazioni, ecc., ma soprattutto, a mio modo di vedere, si perderebbe ogni vantaggio prestazionale derivante dall'uso congiunto di cpu e gpu.

Provo a fare un esempio (limitato, ma spero chiaro), così forse ci capiamo... Immaginate di avere un'ipotetico computer con due processori: un G4 e un Core2Duo. I programmi sono scritti per ppc, ma grazie a Rosetta riusciamo a farli girare sul core2, e qui quasi quasi ci stiamo, perchè infondo la differenza architetturale non è eccessiva (stiamo parlando di cpu general purpose con logica ooo e tutto il resto), e inoltre la maggiore velocità del Core2 ci consente di surclassare la latenza del jit compiler: fin qui ci abbiamo guadagnato, almeno in apparenza. Però noi vogliamo usare indifferentemente entrambi i processori, quindi dovremo avere sempre a disposizione sia la copia per x86, sia quella per ppc: se il programma è grosso, una parte del codice finirà su disco, quindi bisognerà swappare in continuazione, e sappiamo bene che i page fault si mangeranno tutto il vantaggio di avere due processori e non uno solo. Ma adesso aggiungo un'altra complicazione, così ci avviciniamo un po' di più al contesto che ci interessa (sto cercando di rendere il paragone tra le difficoltà più realistico): diciamo anche che il processore x86 è impostato per lavorare in modalità x86-64. Che succede adesso? succede che saltano un po' di cose... ad esempio, raddoppiano le dimensioni dei puntatori, quindi le strutture dati dovranno essere cambiate... Provo ad essere più preciso: limitiamoci ad un semplice array di puntatori (che può essere la virtual table di un oggetto in c++ oppure un "pezzo" di array multidimensionale), e rendiamoci conto che ogni qual volta sposterò il processo da un processore all'altro, oltre ai problemi relativi al codice (possibili page fault continui) dovrò anche ricreare strutture dati importanti e perdere tempo a ricopiare dati, aggiustandoli ogni volta... Ma allora dove sta il guadagno? Semplice: pensando di usare quella macchina in questo modo non c'è nessun guadagno, anzi...

Ma allora qual'è il modo più intelligente di programmare un'architettura hardware eterogenea, come una macchina dotata di cpu e gpgpu? L'unico modo serio per farlo è capire quale tipo di software (o quali parti del mio software) si adatta meglio alla cpu e quale alla gpgpu, e realizzare il mio software (parti di esso) in modo che sfrutti pienamente o la cpu, oppure la gpu. Entrambe contemporaneamente, non è che non si possa, ma è controproducente, sotto tutti i punti di vista. AMEN!!!!!!!

xeal
10-11-2007, 19:04
Doppio :muro:

Evanghelion001
11-11-2007, 12:56
Potrebbe essere il segno, AMD anticipa ATI, non si vedeva da anni, forse si sta tornando ad un mercato meno monopolistico!

Maury
11-11-2007, 13:22
Potrebbe essere il segno, AMD anticipa ATI, non si vedeva da anni, forse si sta tornando ad un mercato meno monopolistico!

AMD anticipa ATi ? ATI è di AMD intendevi nVidia forse ? :confused: