|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#8321 | ||
|
Senior Member
Iscritto dal: Mar 2004
Città: Parma
Messaggi: 5957
|
Quote:
Quote:
Se al thread processor passo la sequenza di caratteri contenuti in un sorgente scritto in hsls piuttosto che glsl, che cavolo vuoi che ci capisca.
__________________
case: phanteks eclipse 500a - cpu: 9800x3d - aio: arctic liquid freezer iii 360 - mobo: msi b650 gaming plus wifi - ram: g.skill flare x5 6000 cl30 - gpu: rtx 5080 fe - storage: samsung 980pro 1tb, 960 evo 500gb, 850pro 512gb - psu: enermax revolution d.f. x 850w |
||
|
|
|
|
#8322 | |
|
Senior Member
Iscritto dal: May 2006
Messaggi: 19401
|
Quote:
|
|
|
|
|
|
#8323 | |||
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Risposta: nelle alu per essere eseguito. Quindi, mentre le alu iniziano ad eseguire il codice compilato, il thread processor caricherà altro codice, eseguirà le stesse operazioni di ottimizzazione, sostituzione, deciderà cosa inviare a chi (perchè nel frattempo riceve informazioni dai vari cluster di alu sullo stato delle elaborazioni) e ripete il ciclo. Quote:
Quote:
Tra le altre cose, parliamo di architetture superscalari in cui, si cerca esplicitamente la minor dipendenza possibile dal compilatore (parlo di nVidia, ma le stesse ATi sono di tipo vliw dinamico la cui dipendenza dal compilatore è inferire rispetto a quelle vliw di tipo statico). |
|||
|
|
|
|
#8324 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
mi sembra ovvio che all'interno di driver unificati ci siano parti dedicate ognuna ad una famiglia specifica di GPU: sennò che li fanno a fare? mi sembra talmente ovvio che non ci sia da meravigliarsi. Infatti prima di avere driver unificati mi sembra di ricordare che c'erano driver diversi per ogni scheda. Non è che coi driver unificati le diverse schede usano gli stessi, semplicemente il pacchetto d'installazione è lo stesso
|
|
|
|
|
#8325 | |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
Riguardo all'occupazione degli shader compilati, per loro natura non è che siano di milioni di righe di codice, occupano qualche kbyte ognuno. Ultima modifica di skizzo99999999 : 25-11-2009 alle 18:21. |
|
|
|
|
|
#8326 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
|
|
|
|
|
|
#8327 | |
|
Senior Member
Iscritto dal: May 2006
Messaggi: 19401
|
Quote:
|
|
|
|
|
|
#8328 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Non sono un esperto dell'architettura interna delle GPU, per cui non se esattametne dove lo piazzi. Se dovessi azzardare, come ho già detto, penso stiano nella vram, ma cmq sparerei a caso. Comunque qui NVIDIA non deve inventare niente: io sviluppo su una x1600pro e non lo so dove metta tutti gli shader che compila, ma da qualche parte stanno, sono circa una trentina tra fragment e vertex, e li compilo tutti prima di entrare nel loop di rendering durante la fase di caricamento del modello. In tutto occupano 164kb, ma sono i sorgenti GLSL, non ho idea di come valutare l'occupazione del codice compilato
|
|
|
|
|
#8329 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
I milioni di righe di codice sono quelli del programma che deve girare sulla gpu non le 4 righe di una ottimizzazione o di uno shader replacement. E comunque, anche quelle devono essre caricate on chip perchè quando il thread porcessor trova l'istruzione (contenuta nei driver) che, all'atto della compilazione o dell'ottimizzazione o chiamala come vuoi, deve sostituire l'istruzione x con quella y, deve avere accesso all'istruzione y. Ora, se mi parli di un generico compiler per opengl o d3d, posso essere d'accordo che la compilazione posso farla dovunque: se mi dici che devi fare una specifica ottimizzazione per un determinato chip, ti rispondo che quell'ottimizzazione non può essere affidata al generico compiler e può essere eseguita solo in runtime e on chip. Il compiler generico per d3d del codice sorgente, restituirà l'equivalente di una madd in linguaggio macchina. L'operazione di sostituzione non è a carico del generico compiler per quel linguaggio di programmazione. Ultima modifica di yossarian : 25-11-2009 alle 18:42. |
|
|
|
|
|
#8330 |
|
Senior Member
Iscritto dal: Sep 2002
Città: Roma
Messaggi: 9318
|
Vabbè ma in soldoni quando dovrebbero uscire?
Avevo sentito che erano state presentate ma alla fine si era rivelato un fake (cosi mi pare di aver capito) , e le davano per la presentazione prima del 2010... o sbaglio?
__________________
CPU: AMD 5950x Mobo: Asus ROG Crosshair VIII Impact X570 Mini-DTX Ram: 64GB 2X32GB Vengance LPX 3600Mhz cas18-22-22 GPU: PowerColor Hellhound 9070XT HD: Samsung 980 PRO 2TB Nvme 4.0 + WD_BLACK 4TB SN850X |
|
|
|
|
#8331 |
|
Bannato
Iscritto dal: Oct 2009
Messaggi: 6442
|
guarda io ero rimasto che le dovevano presentare a gennaio.
|
|
|
|
|
#8332 | |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
Ora, ripeto per l'ennesima volta, su questo nessuno ha certezze, ma a me sembra ragionevole che una possibile ottimizzazione per fermi possa essere la chiamata di una FMA tutte le volte che il codice richiederebbe una MADD. Questa sostituzione (che ripeto non è neanche una sostituzione, visto che se la cosa funzionasse così le MADD manco sarebbero contemplate) è banale e può essere fatta staticamente dal compilatore del GLSL. Le ottimizzazioni che invece compie il thread processor/dispatcher o chi per lui sono tutt'altra cosa e presumo contemplino cose tipo il reordino delle istruzioni per l'esecuzione fuori sequenza, in modo da trovarne indipendenti in quantità sufficienti da riempire il più possibile le ALU. Siccome queste cose è evidente che non possono essere fatte a priori prima dell'esecuzione, è ovvio che le deve fare il "silicio" al volo. Ma la FMA invece che la MADD è tutta un'altra storia. Tra l'altro non penso sia una cosa così speciale. Quando scrivo GLSL non è che scrivo MADD, che di suo è già una ottimizzazsione, visto che è una moltiplicazione seguita da una addizione eseguita in un solo passaggio. Siccome il compilatore che esamina il sorgente guarda le operazioni da svolgere, quando vede una MUl seguita da una ADD dice: "toh, qui visto che ho l'HW per fare una MADD invece che fare una MUL + ADD la faccio" e scrive MADD nel codice compilato. Invece, il compilatore pilotato dai driver del FERMI potrebbe vedere una MUL + ADD e lasciare una MUL + ADD oppure mettere una FMA. Una delle due strade dovrà pur prendere e mi sembra ovvio quale sia la più conveniente. Poi ci possono essere mille altre ragioni perchè questo non si possa fare, ma sicuramente non è perchè la compilazione avviene al volo durante l'esecuzione dello shader E se ora non capisci, hai ragione, ma per sfinimento. Spero almeno sia stato utile a qualcun'altro |
|
|
|
|
|
#8333 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Se ho capito male correggimi pure. Se le cose stanno così, parliamo di poche righe di codice e di un compilatore standard (che non effettua operazioni di replacement). Giustamente dici: se volessi far fare una sostituzione potrei pianificarla a tavolino e inviare al chip il codice già ottimizzato. Fin qui ok. Ora prova a fare lo stesso ragionamento per tutti i giochi passati, presenti e futuri. Cioè, per ognuno devi far ricompilare il codice facendo le dovute ottimizzazioni. Ogni volta che esce un'espansione faccio la stessa operazione; per una patch idem, ecc ecc. Ovvero, riscrivo tutto il codice dei giochi a beneficio di una sola architettura video? E dove metto questo nuovo codice? Nei driver (da quanti GB)? e dove carico i driver? Nella ram video? Non è molto più funzionale inserire all'interno dei driver una istruzione del tipo:"ehi ciccio, quando trovi una madd non eseguirla perchè non sei capace; piuttosto pprova con una fma". In questo modo ho la certezza che qualunque madd, di qualunque gioco presente, passato e futuro, compresnivo di patch, add on e espansioni, sarà rimpiazzata da una fma. Il tutto il poche righe si codice che possono essere caricate on chip (magari nell'instruction cache) all'avvio. Unico inconveniente è che l'operazione può farla solo la gpu e solo in run time (perdendo un po' di tempo) |
|
|
|
|
|
#8334 | ||
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Mi sembra di essere su scherzi a parte... ma dai che adesso ci capiamo. Mi sento che è la volta buona. Tu dici:
Quote:
Quote:
|
||
|
|
|
|
#8335 | |||||||
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Quote:
Quote:
Quote:
Avviene prima ma non all'atto della compilazione del compiler standard ma dopo che lo shader è stato caricato all'interno della gpu e la stessa ha potuto leggere le relative istruzioni. Solo allora sa dove intervenire e in che modo (ogni mul e add dello shader deve essere sostituita con una fma). Mi sembra un concetto tanto elementare che mi pare assurdo che si stia a parlarne da due giorni. Un chip non ha nessuna cognizione di ciò che deve fare fino a che qualcuno non gli dice che deve fare qualcosa. Quote:
Quote:
Vediamo...... Quote:
mi pare che qui a non capire sia qualcun altro. Eppure sono concetti piuttosto semplici. Non mi interessa avere ragione e non ho tempo da perdere a parlare di cose su cui ho lavorato fino all'altro ieri Ultima modifica di yossarian : 25-11-2009 alle 20:43. |
|||||||
|
|
|
|
#8336 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
D'altra parte, la situazione non è dissimile da quella dei tempi di NV30, quando si faceva shader replacement sostituendo condice dx9 con codice dx8. Indovina un po' chi si occupava della sostituzione e quando? Il compiler HLSL della cpu prima che il codice fosse inviato alla vga? Sbagliato. Ultima modifica di yossarian : 25-11-2009 alle 20:41. |
|
|
|
|
|
#8337 | |
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
|
|
|
|
|
|
#8338 | |||
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3669
|
Quote:
Yossarian mi spiace ma ti stai arrampicando sugli specchi ma orami gli specchi sono finiti. Quote:
Quote:
Scusami una domanda banale ma da quando una GPU nata per fare calcoli altamente paralleli tipo moltiplicazioni matriciali ecc. ecc. è diventata una CPU ? Sai un compilatore gira su CPU è la letteratura scentifica universitaria che lo dice non il primo devAngnew che posta su un forum. Il compilatore HLSL gira sulla CPU e guarda caso fa uso della memoria centrale per effettuare tutti i passaggi del caso e vale per NVIDIA ma anche per ATI sia chiaro. Concludo Solo e ripeto Solo il codice Macchina sarà passato alla GPU. Io considero il discorso chiuso visto che in linea di massima ho spiegato cosa fa un compilatore (soprattuto il modulo ottimizzatore) ma tu semplicemente ignori il tutto. P.S: skizzo99999999 ti consiglio di lasciar perdere. Ultima modifica di devAngnew : 25-11-2009 alle 22:37. |
|||
|
|
|
|
#8339 | |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2544
|
Quote:
![]() http://www.youtube.com/watch?v=4o29VoxtsFk
__________________
[CM Cosmos Pure] [GIgabyte Z77 X-UP7] [i7 2600K@4,2 Ghz cooled by COrsari H110] [4x2Gb Crucial Ballistic 8-8-8-24] [Radeon R9 290] [SO Crucial M4 120Gb; Games WD Caviar Black 1Tb; Storage WD Caviar Green 2Tb] [Asus Xonar D2X] [Creative Gigaworks T40 II] [Windows 7 Professional SP1 64bit] [Logitech G15] [Logitech G9x] |
|
|
|
|
|
#8340 |
|
Senior Member
Iscritto dal: Feb 2008
Città: Arezzo
Messaggi: 1025
|
A me non pare che tu abbia spiegato molto, mi pare che yossarian abbia cercato di spiegare molto di più dettagliando il discorso, anche skizzo lo ha dettagliato, ammettendo però di non avere una conoscenza specifica delle gpu. Voi due state affermando che un determinato processo avviene in un certo modo, mentre yossarian afferma che non avviene nel modo che voi descrivete, quindi, il discorso non si può certo chiudere perchè non c'è compresione, ma soltanto perchè voi rimanete sulle vostre posizioni, e yossarian sulla sua. A questo punto chi vi legge, o si fa una ricerca approfondita su documentazione che parli di queste cose, o aspetta fermi. Oppure voi continuate a discuterne portando altri esempi dettagliati, prove diciamo, e cose così, che per me è più comodo e divertente oltrechè probabilmente meglio assimilabile...spero. Ciao!
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:50.











).









