|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#8341 | |
|
Senior Member
Iscritto dal: Feb 2000
Messaggi: 11316
|
Quote:
__________________
PC 1 : |NZXT 510i|MSI PRO Z690 A|I5 [email protected] Ghz (Pcore) 4.5 Ghz (Ecore)|AIO ENDORFY NAVI F280|32 GB BALLISTIX 3600 cl 14 g1|GIGABYTE 4070 SUPER AERO OC|RM850X|850 EVO 250|860 EVO 1TB|NVMe XPG-1TB||LG OLED C1 - 55 | PC 2 : |Itek Vertibra Q210|MSI PRO B660M-A|I5 12500|32 GB KINGSTON RENEGADE 3600|ARC A770 LE 16 Gb|MWE 750w| ARC 770 LE 16 Gb Vs RTX 3070 - CLICCA QUI Ultima modifica di Maury : 25-11-2009 alle 21:37. |
|
|
|
|
|
#8342 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Intanto non hai risposto alla domanda: è la cpu che si occupa di effettuare la sostituzione? Perchè dovrebbe farlo e chi glielo dovrebbe dire? I driver nVidia? Non pilotano un chip di cui non conoscono l'architettura; sai che per scrivere un driver devi conoscere a fondo l'architettura del chip per il quale lo scrivi? Significa che se nVidia scrive un driver che dica al compilatore di una cpu intel di ottimizzare il codice per fermi, nVidia deve conoscere a menadito l'rchitettura intel (non solo fermi). Poichè continui a darmi dell'ignorante, più e meno velatamente, farò lo stesso e in maniera esplicita. Stai ripetendo che tu fai ciò di cui parli tuti i giorni. Io ti dico che non lo hai mai fatto e non sai neppure di cosa stai parlando. Non si tratta di compilare 4 righe in croce per far cambiare colore a una palla rotante, ma di fare ottimizzazioni per una architettura che devi conoscere ALLA PERFEZIONE. Tu hai ammesso di non conoscere l'architetutra del chip su cui programmi (e da come parli non lo metto in dubbio) e neppure l'architetutre dei chip grafici in generale. Quindi tu non saresti in grado di scrivere una sola riga di codice per ottimizzare il codice per il chip della tua scheda video. Però, ripeti che è quello che fai tutti i giorni. Hai affermato che una chiamata mul seguita da una add lascia libera interpretazione al chip; sbagliato, una chiamata del genere, in nessun linguaggio, permetterà l'esecuzione di una fma (ma tu ssai di cosa parli, perchè ci lavori tutti i giorni). Hai affermato che è la cpu ad occuparsi della compilazione prima di inviare il codice alla vram. Sbagliato la cpu non si occupa di afre le ottimizzazioni e neppure le sostituzioni; la cpu scrive addizione dove trova addizione e non interpreta a uso e consumo di fermi (di cui non conosce neppure l'esistenza, altro particolare che ti sfugge). Hai affermato che se ne occupa una non ben precisata entità una volta che l'intero codice è nella vram. Sbagliato, perchè nessuna entità, astrale o meno, va ad operare nella vram direttamente (d'altra parte, non sai come lavora una gpu, però sai come vanno queste cose perchè ci lavori tutti i giorni). Poi affermi che sono i driver a gestire le chiamate. Ok, cominci ad avivcinarti. A che livello? Risposta: l'intero codice viene compilato prima che vada in esecuzione. Ammettiamo che sia così; allora dove e da chi? Boh, non conosco l'architettura delle gpu, forse dalla cpu o dalla gpu stessa all'interno della vram (e risiamo al punto precedente). Il problema non sono le dx o le opengl; il problema è che state parlando di cose di cui non sapete nulla. Vi riempite la bocca con le ottimizzazioni fatte a livello di driver ma non sapete chi gestisce e dove queste ottimizzazioni. Ora, poichè non ho tempo da perdere con queste stupidaggini e quello che ho scritto è tutto sul forum, vi saluto e vi lascio con la vostra convinzione che sia come dite, anche se non sapete come, quando e dove tutto avvenga. Ma sai com'è, l'importante è avere fede |
|
|
|
|
|
#8343 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Ora, posso capire che tu non conosca l'architetutra di un chip, mi riesce difficile, però, interfacciarmi con qualcuno che ha difficoltà a capire la lingua italiana. A questo punto crogiolatevi nella vostra ignorabnza sperando che non abbiate altri emuli. Ultima modifica di yossarian : 25-11-2009 alle 22:21. |
|
|
|
|
|
#8344 | |
|
Senior Member
Iscritto dal: Feb 2000
Messaggi: 11316
|
Ah beh a giudicare dai loro post questa componente non gli manca di certo
Quote:
__________________
PC 1 : |NZXT 510i|MSI PRO Z690 A|I5 [email protected] Ghz (Pcore) 4.5 Ghz (Ecore)|AIO ENDORFY NAVI F280|32 GB BALLISTIX 3600 cl 14 g1|GIGABYTE 4070 SUPER AERO OC|RM850X|850 EVO 250|860 EVO 1TB|NVMe XPG-1TB||LG OLED C1 - 55 | PC 2 : |Itek Vertibra Q210|MSI PRO B660M-A|I5 12500|32 GB KINGSTON RENEGADE 3600|ARC A770 LE 16 Gb|MWE 750w| ARC 770 LE 16 Gb Vs RTX 3070 - CLICCA QUI |
|
|
|
|
|
#8345 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Le posizioni sono molto semplici: da un lato c'è chi afferma che poichè esistono i compilatori, basta scrivere uno shader, effettuare una chiamata a quello shader e il compilatore si occuperà di tutto. Il problema è che questo qualcuno si limita a vedere le cose a livello di linguaggio di programmazione e non si preoccupa di chi deve fare cosa, quando e perchè. Per questo motivo nessuno dei due è iin grado di fornire uno straccio di risposta a domande elementari come ad esempio, dove si trova il compilatore. O meglio, uno dei due ha risposto a questa domanda, ma si è perso strada facendo. La risposta corretta è: il compilatore (ma non volgio chiamarlo in quel modo), diciamo il tool che si occupa di effetuare le sostituzioni e le ottimizzazioni di qualunque natura è all'interno dei driver. Dei driver di chi? Di nVidia, ovviamente, nello specifico. Allora, se questo tool è nei driver di nVidia, come può essere che a fare le sostituzioni ci pensa la cpu prima di inviare il tutto alla vram? Non mi risulta che nVidia abbia cpu x86 e anche se le avesse, parliamo comunque del driver della gpu. Quindi, non può essere la cpu. Allora la gpu (escludiamo l'ipotesi che il codice sorgente arrivi già compilato per fermi). Ok, lo fa la gpu (d'altro canto il driver è suo). Quando lo fa? Risposta prima che lo shader venga elaborato. Domanda: lo shader o tutto il programma? Qui le risposte sono confuse: qualche shader, tutto il programma, boh, sicuramente avviene prima; semmai prendo il raccordo ecc. Insomma, mi pare che ci siano poche idee ma ben confuse. Poi, se si scambiano anche delle domande per delle affermazioni, allora stiamo freschi comunque, per chi non va con i paraocchi, le cose sono piuttosto semplici. Ci sono vari layer applicazione, api, sistema operativo, hardware abstaction layer, driver. La prima è, ipotesi, il gioco; la seconda non ha bisogno di presentazione. La terza è un'interfaccia tra il S.O. e i driver. Ogni S.O: ha più hal (a seconda di quanti sono i tipi di hw con cui si deve interfacciare) e ha anche un compilatore standard per ciascuna delle api di riferimento con cui si interfaccia; anche molte applicazioni hanno una o più hal a seconda del target di riferimento a livello hw. In pratica l'hal è scritto o dal produttore dell'hw o in collaborazione con esso e contiene una serie di ottimizzazioni che servono a migliorare la compatibilità e a implementare qualche funzionalità extra compatibilmente con le capacità dell'hw stesso. Poi ci sono i driver che contengono tutti i tool che servono a ottimizzare i chip (nello specifico quelli grafici). I compiler contenuti nel S.O. sono uguali per tutti, perchè lo stesso s.o. deve interfacciarsi con hw ati dx11 o dx7, oppure nvidia a shader dedicati o unificati, ecc. Quindi non possono contenere ottimizzazioni per un particolare tipo di hw o, peggio, per un solo chip. Di conseguenza, le ottimizzazioni si possono fare solo ad un livello inferiore rispetto a quello del s.o., ossia a livello di hal o di driver. In ciascuno dei due casi, non è la cpu di sistema che si occupa di gestire queste ottimizzazioni ma il chip a cui sono dedicate le ottimizzaioni, ovvero la gpu (nel caso specifico). Qui subentra il "come funziona una gpu" che i nostri baldi arrampicamuri dimostrano (e confessano) di ignorare. E qui mi fermo, perchè queste cose le ho già ripetute più volte. Di una cosa sono certo: i clipping plane e lo shader replacemnt di NV30 non erano gestiti dalla cpu e non avvenivano at compile time Ultima modifica di yossarian : 25-11-2009 alle 22:13. |
|
|
|
|
|
#8346 | |
|
Senior Member
Iscritto dal: Feb 2008
Città: Arezzo
Messaggi: 1025
|
Quote:
|
|
|
|
|
|
#8347 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Io ho detto che non conosco a menadito l'architettura delle GPU (come evidentemente conosci te) perchè programmo in opengl e quindi non mi occupo di ottimizzazioni che effettuano i compilatori. L'ho detto subito. Tutto è partito da questa fantomatica penalizzazione per questa maledetta FMA. Siccome conosco come viene gestito il codice degli shader, ho solo ipotizzato che si potesse fare questa "sostituzione" durante la compilazione degli shader (che avviene come da te e da me più volte detto a runtime). Poi ci possono essere altre ragioni tecniche come la questione degli arrotondamenti che lo impediscono, ma la storia che alla GPU arrivi un codice compilato "generalista" e ridicola. Il driver è fatto per gestire bene una certa architettura ed il driver di fermi sarà fatto per gestirla al meglio. Quando faccio doppio click sull'eseguibile di un gioco, a quel punto gli shader non sono compilati, sono dei bei sorgenti di testo che la GPU non saprebbe interpretare. Quando dal codice del gioco arrivano alla CPU le istruzioni di caricamento e compilazione degli shader il driver gestisce la compilazione che non so se fa la cpu o la gpu. Questo l'ho detto più volte. Si su questo passo sono ignorante lo ammetto. E allora? Mi devo suicidare? Se mi dici che gira su GPU bene ho imparato qualcosa di nuovo. In ogni caso è sempre un compilatore, cioè è esso stesso un software che gira su un hardware. il compilatore è "compilato" e scritto per dove deve girare, è lui che sa cosa deve fare e lo fa, sia che giri sulla GPU che sulla CPU. Io di primo acchito direi che gira sulla CPU (visto che mi sembra più semplice scrivere un compilatore con un set di istruzioni di una CPU che di una GPU) ma se con tanta veemenza dici che gira sula GPU ci credo, non è che devi insultarmi per questo. Questo compilatore lo ha programmato NVIDIA che conosce bene l'architettura per cui uscirà lo shader compilato. L'operazione di sostituzione non è una operazione che deve considerare dipendenze o quant'altro, ma è solo "vedo una istruzione, ci metto questa". Non capisco dove stia il problema. Non vedo cosa deve conoscere NVIDIA di così profondo dell'architettura INTEL per poter scrivere un compilatore che non deve generare codice per intel ma che da uno shader testuale tiri fuori un pezzo di codice interpretabile dalle sue GPU. I driver servono anche a questo.
Non vedo perchè non si possa ammettere nemmeno la possibilità che si possa non conoscere tutto lo scibile umano su un argomento, anche se lo si padroneggia molto bene come te e lo si affronta da anni. |
|
|
|
|
#8348 | |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
|
|
|
|
|
|
#8349 | |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
Comunque ho trovato una parte initeressante nel testo che avevo già indicato in precedenza (per chi vuola approfondire, sappia che è un libro di 1200 pagine un po caruccio e oramai non + aggiornatissimo): "Unlike some other shading language APIs out there, GLSL is designed to accept shader text rather than precompiled binaries. This makes it possible for the application to provide a single universal shader regardless of the underlying OpenGL implementation. The OpenGL device driver can then proceed to compile and optimize for the underlying hardware. Another benefit is that the driver can be updated with improved optimization methods, making shaders run faster over time, without any burden on application vendors to patch their applications." Superbible pag 528 C'erano anche altre fonti dove era spiegato con + precisione e più dettagliatamente, ma tra i tanti libri che ho faccio fatica a trovarle. Almeno una sufficienza per l'impegno la merito suvvia... Ultima modifica di skizzo99999999 : 25-11-2009 alle 22:43. |
|
|
|
|
|
#8350 | ||||||
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Quote:
Quote:
Quote:
Quote:
Quindi, la vram contiene codice digeribile per una gpu e, in più, ci sono delle "istruzioni aggiuntive" che indicano come comportarsi in presenza di una derminata operazione. Ti chiedo scusa per gli insulti Quote:
Comunque, completiamo l'esecuzione. La gpu inizia a caricare il codice all'interno della instruction cache del dispatch processor; da li, una parte va nei registri assegnati alle istruzioni. Il thread porcessor legge prende le istruzioni, le legge, decide a quale cluster di alu mandarle in esecuzione. Devi vedere il thread processor come un vero e proprio processorre a cui mancano solo le pipeline di calcolo. Nel afre questa operazione, quando trova una sequenza di mul e add, in pratica una madd, la sostituisce con una fma e la invia alle alu per l'esecuzione. Qui viene caricata all'interno degli instruction buffer insieme a lle altre istruzioni. In questa fase le istruzioni sono eseguite in modalità FIFO, mentre il thread processor gestisce i thread in modalità out of order facendo anche renaming e reordering dei registri contenuti nei buffer. Quindi la alu manda in esecuzione direttamente una fma (ma la trasformazione è avvenuta in run time dentro la gpu). Perchè non se ne può occupare intel o amd? Perchè i driver nVidia non si interfacciano con la cpu. La cpu è un'entità del tutto generica: può essere un quad core, un mono core, una cpu di 15 anni fa, può essere in order o out of order e basta che varino il numero di registri o la loro dimensioni che cambia l'isa. Il driver si può interfacciare solo con ciò che conosce bene (ovvero la gpu) ma, attraverso la hal, può far si che la cpu comunichi al thread processor il da farsi. QUOTE=skizzo99999999;29836549] Non vedo perchè non si possa ammettere nemmeno la possibilità che si possa non conoscere tutto lo scibile umano su un argomento, anche se lo si padroneggia molto bene come te e lo si affronta da anni.[/quote] non pretendo che lo si conosca. Non credo che qualcuno di noi possa vantarsi di qualcosa del genere. L'unica cosa che chiedo è che si stiano a sentire anche le ragioni dell'altro, senza ragionare per partito preso. Discutendo con calma, tra persone intelligenti, si trova sempre un punto di incontro |
||||||
|
|
|
|
#8351 | |
|
Senior Member
Iscritto dal: Feb 2006
Città: Looking for a place to call home
Messaggi: 5325
|
Quote:
Cerco di ricapitolare... Il problema sta nel fatto che diverse persone (Rys compreso, credo) credono che la sostituzione venga fatta a compilation time e non "on the fly". Ossia mentre il pc carica un livello di un gioco e la cpu fa la normale compilazione degli shaders che la gpu si troverà ad usare in quel livello, il thread processor si occuperà di sostituire tutte le operazioni MADD che troverà in FMA. Ed è il motivo per cui parlano di operazione "for free". Esiste un costo, ma viene mascherato dal fatto che nessuno si accorgerà di un caricamento di qualche secondo più lento, al peggio. Quello che sostiene yossarian è che però tale operazione non può essere fatta in maniera così massiccia, perchè il thread processor può operare le sostituzioni solo sulle porzioni di codice (suppongo porzioni molto limitate) che si trovano nei suoi buffer. Questo comporta che in realtà tale sostituzione venga fatta quasi "on the fly", comportando un costo prestazionale di un certo rilievo, che può essere mascherato in qualche modo, come anche no. yoss non fustigarmi se ho sbagliato...
__________________
A.L.M. @ HWBOT | Personal PC: Asus N56VZ | Work PC: Lenovo Thinkpad T420 (Core i5 2520M, 4GB ram, 320GB 7200rpm) | Mobile device: iPhone 4S Work It Harder, Make It Better, Do It Faster, Makes Us Stronger, More Than Ever Hour After Hour Work Is Never Over Ultima modifica di A.L.M. : 25-11-2009 alle 22:56. |
|
|
|
|
|
#8352 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Quello di cui avevo parlato dall'inizio era il fatto che questa sostituzione, per quanto possa essre mascherata dal fatto che la gpu gestisce migliaia di thread in simultanea, avrà sempre un impatto sulle prestazini e non potrà essere for free come qualcuno sostiene. Nota bene che ho parlato di sostituzione non di ricompilazione di tutto il programma o di un gruppo di shader. |
|
|
|
|
|
#8353 | ||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3669
|
Quote:
Quote:
In pratica la sostituzione di cui parli lo farà il modulo ottimizzatore del compilatore. Per il resto il discorso è chiuso punto e basta. |
||
|
|
|
|
#8354 |
|
Senior Member
Iscritto dal: Feb 2006
Città: Casale Monferrato,San Lucido,Gignod
Messaggi: 10932
|
totale: la scheda video servirà ancora o no?
__________________
ASRock 939 Dual-SATA2 + AM2 Board + Athlon X2 5000+ @3000, ATI 5770, PSU SilentMaxx 400W |
|
|
|
|
#8355 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Il fatto è che si tende spesso a parlare a sproposito di operazioni for free e ho voluto puntualizzare che le cose non stanno così (d'altra parte, anche nell'ultimo articolo ho criticato la tesi che una madd equivale ad una moltiplicazione e ad un'addizione in un singolo ciclo. Le cose non stanno proprio così (visto che un'addizione può richiedere da 5 a 7 cicli ad esempio Ultima modifica di yossarian : 25-11-2009 alle 23:06. |
|
|
|
|
|
#8356 |
|
Senior Member
Iscritto dal: Feb 2008
Città: Arezzo
Messaggi: 1025
|
Quindi, dando per buoni i calcoli fatti da HW.fr basati sulle informazoni architetturali che nVidia ha rilasciato fin'ora e che ipotizzano una moderata potenza computazionale di fermi in single precision, considerando che anche ad alte frequenze di lavoro da parte dei CUDA cores questa potenza non aumenti di molto o perlomeno non come vorremmo augurarci che sia, considerando inoltre che benchè nVidia abbia portato avanti più di tutto il resto l'argomento GPGPU e che abbia parlato della prossima propria scheda come un mostro di potenza calcolatrice per quest'ambito ha anche promosso in continuazione le sue tecnologie per i videogiochi ( Physx e 3DVision) e secondo alcune recenti dichiarazioni ha precisato che non abbandonerà i videogiocatori e che questi potranno stare tranquilli e divertirsi cone le sue nuove schede video, e considerando ancora che non stanno di sicuro riprogettando tutto e che grosso modo la frittata è fatta, quale potrebbe essere la soluzione affinchè "Fermi" non si trasformi in un avvertenza per i videogiocatori che stanno frugando nel portafoglio per comprarsi le suddette schedozze? Insomma, so che non siete ingegneri nVidia, e nemmeno avete la sfera di cristallo, ma pensate davvero che questa generazione di gpu sarà un mezzo flop per questa società? Che abbiano davvero sbagliato tutto? o che siano partiti per crerare qualcosa che poi si sono accorti non potrà andare come speravano?
|
|
|
|
|
#8357 | |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
Quello che non capisco è, tanto per fare un'altro esempio, che cosa NVIDIA debba conoscere di approfondito sulla CPU per scrivere un compilatore (che esegue quindi le istruzioni e le ottimizzazione per cui è stato programmato) che compili dei sorgenti che dovranno poi essere eseguiti non sulla CPU intel, ma su una GPU NVIDIA. Andando ancora + sul pratico: ho uno shader composto da a.fs e a.vs (fragment e vertex), ovviamente testuali, che do in pasto ad un compilatore che ho scritto io (facendo una ipotesi assurda che potessi scrivere un compilatore), per esempio gpu.exe, e che restituisce un codice out.dat che sia il linguaggio della mia GPU che ho progettato. Cosa c'è di difficoltoso (a parte l'ovvio...)? non mi sembra che per scrivere un programma x86 i programmatori di mezzo mondo conoscnao la cpu intel come un igegnere intel, ed un compilatore che deve generare codice NON per l'architettura INTEL non mi sembra diverso da un qualsiasi altro software... EDIT: hai letto la citazione dal libro che ho scritto poco sopra? Ultima modifica di skizzo99999999 : 25-11-2009 alle 23:16. |
|
|
|
|
|
#8358 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Dalle scelte fatte, se fossero confermate, mi sentirei di dire che è un chip molto più votato al gpgpu che non al gaming ma che si può difendere bene anche negli altri ambiti. Altra incignita, ovviamente, il prezzo |
|
|
|
|
|
#8359 | |
|
Senior Member
Iscritto dal: May 2006
Messaggi: 19401
|
Veramente è proprio qui il problema...
![]() Quote:
Mi sbaglierò anche ma personalmente credo semplicemente che alla Nvidia non siano esattamente così sprovveduti come questi ritardi e come queste speculazioni ci porterebbero a pensare...fanno GPU da decenni, sono i leader (fino a prova contraria) del mercato GPU desktop non credo vogliano abbandonare con tanta leggerezza questo mercato. Se invece all'uscita di gf100 si dimostrerà che hanno sbagliato davvero tutto (anche se rimarrebbero intatte le potenzialità del chip in GPUcomputing), pazienza...vedremo di meglio al prossimo giro (è già successo). @yoss: hanno cancellato la costituzione! |
|
|
|
|
|
#8360 |
|
Senior Member
Iscritto dal: Feb 2008
Città: Arezzo
Messaggi: 1025
|
Ah ah, scusa per il soffocamento. Di sicuro volevano prendere due piccioni con una fava, speriamo che non ne abbiano presi solo uno e mezzo e che ci tocchi il mezzo o peggio la fava
.
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:14.












.








