|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#8581 | |
|
Senior Member
Iscritto dal: May 2005
Città: provincia di Varese
Messaggi: 6244
|
Quote:
__________________
"La vita è un pellegrinaggio, e noi siamo fatti di cielo, ci fermiamo un poco qui, e poi riprendiamo il nostro cammino..." Q6600G0@[email protected]@801MHz-MSIGT10302GBddr5-Hannspree272PPB-Creative I-Trigue 5600 J.S.Bach, le montagne coi ghiacciai e il cielo stellato: il resto...- Ciao mamma e papà, sarete sempre con la mia anima, nei miei pensieri e nel mio cuore. |
|
|
|
|
|
#8582 |
|
Senior Member
Iscritto dal: Apr 2009
Messaggi: 3760
|
Scusa ma non ho seguito per niente questa cosa del 3d vision! me lo spiegheresti in 4 parole?
|
|
|
|
|
#8583 | |
|
Senior Member
Iscritto dal: Feb 2002
Città: Discovery
Messaggi: 34710
|
Quote:
__________________
Good afternoon, gentlemen, I'm a H.A.L. computer. |
|
|
|
|
|
#8584 | |
|
Senior Member
Iscritto dal: Feb 2002
Città: Discovery
Messaggi: 34710
|
Quote:
__________________
Good afternoon, gentlemen, I'm a H.A.L. computer. |
|
|
|
|
|
#8585 | |
|
Senior Member
Iscritto dal: Apr 2009
Messaggi: 3760
|
Quote:
|
|
|
|
|
|
#8586 |
|
Bannato
Iscritto dal: Apr 2009
Messaggi: 1323
|
|
|
|
|
|
#8587 | |
|
Senior Member
Iscritto dal: Mar 2004
Città: Parma
Messaggi: 5959
|
Quote:
Codice:
Instruction Fetcher
|
Instruction Translator
|
Instruction Decoder
__________________
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 |
|
|
|
|
|
#8588 | |||||||||||
|
Member
Iscritto dal: Oct 2006
Messaggi: 102
|
Quote:
Quote:
Quote:
http://www.capsl.udel.edu/conference...Papers/101.doc Come scritto nel post precedente inserire CUDA nel discorso confonde e basta. Questo schema prima di tutto non è uno schema di cosa avviene a runtime ma della catena che segue il codice dell'applicazione durante la fase di sviluppo, e quindi quando si parte dal sorgente. L'ho già spiegato prima in modo + dettagliato ma faccio un breve sunto (se si vuole dipiù basta leggere qualche post precedente). Siamo al punto che lo sviluppatore ha finito il suo progetto e deve compilare.Il grafico si divide in due dopo essere passato in "cudafe" perchè deve dividere il codice c generico dell'applicazione destinato alla CPU dal codice cuda che dovrà essere gestito dalla GPU. La parte sinistra verrà quindi gestita in maniera tradizionale usando gli strumenti di compilazione che lo sviluppatore usa solitamente (se siamo in visual studio per esempio usare il compilatore c di quell'ambiente). La parte destra invece prende una strada diversa, perchè dovrà essere compilata non per girare sulla CPU ma sulla GPU presente nel sistema, quindi ci sono tutti qui bei moduli software che servono a fa arrivare un codice "utilizzabile" dal solito OCG/JIT in modo che possa gestirlo e compilarlo come se fosse uno shader. Tutta sta roba nella grafica 3d non c'è perchè non c'è nulla da dividere (l'applicativo e gli shader sono già divisi) e la parte del grafico che li sta a sinistra NVIDIA non la vede nemmeno perchè non passando da "cudafe" non sa neanche che esista (è una battuta, ovviamente se gli shader arrivano al driver ci sarà una applicazione che glieli invia...), come non ci saranno tutte quelle operazioni della parte destra per adattare il codeice alla GPU. Sulla ultima parte riguardante le prestazioni, mi sembra di averne parlato ampiamente già nei miei post precedenti. Posso solo aggiungere che niente è più veloce di un linguaggio compilato nativamente. Infatti, parlando di programmazione generica e non grafica (dove è più facile per tutti quelli che leggono capire), un programma compilato in c è imbattibile per chiunque, che sia JAVA, uno qualsiasi della suite .net (c# ad esempio), perchè questi ultimi sono interpretati e non compilati. La compilazione JIT è stata introdotta soltanto per tentare di ridurre il gap, che comunque rimane. Se come riferimento prendo le prestazione senza la fase di JIT, il c è anche 10-20 volte più veloce. Nella grafica se ci fosse stata scelta avrebbero sicuramente compilato tutto anche li; ma visto che a differenza delle CPU in cui, almeno per il mondo windows che è quello di cui stiamo parlando, il x86 rimane incontrastato e ci sono solo delle estensioni (mmx, sse, ecc...) che si possono decidere o meno di utilizzare (e la granparte dei programmi non usa), nelle GPU l'architettura cambia in continuazione. Se gli sviluppatori compilassero i sorgenti degli shader come compilano i sorgenti dell'applicativo/gioco, visto che i tempi di sviluppo dei gichi tripla A di oggi rihiedono anni, alla data di uscita ci sarebbero già le nuove schede che non funzionerebbero. Per cui si è scelta questa strada di "compromesso" in cui la parte shader viene compilata a run-time, ma comunque compilata prima di essere eseguita. Quote:
Quote:
applicazione (per mia semplicità scritta in pseudo c) int main (int argc, char** argv) { inizializzo_contesto(); leggo_config.ini(); carico_modelli(); carico_texture(); carico_shader(); ... inizializzo_luci(); inizializzo_VBO(); ... mainloop(); } all'inizio subito dopo aver inizializzato il contesto/i (se uso varie librerie), leggo un file di configurazione che mi dice i valori di alcuni settaggi che posso impostare; poi passo a caricare i modelli, le texture (le quali possono venire subito spostate nella vram), i modelli poligonali del mondo e carico gli shader. Dentro la carica shader si carica, compila, linka, ecc... gli shader che possono essere in file distinti (io facci così) in nuo solo oppure, per mantenere meglio la proprietà intellettuale se si è implementato un algoritmo originale, possono essere anche piazzati sottoforma di stringa all'interno del sorgente c, ma è un po scomodo poi modificarli. Questo ad esempio si applica in casi in cui si debba modificare in base ad alcuni stati di esecuzione lo shader che si deve applicare, che comunque deve poi passare alla compilazione, link, ecc... Ad esempio la funzione che inizializza gli shader che uso io è più o meno così (per un singolo shader): // geometry shader GLchar *GeometryStageVSname = "Shaders/GeometryStageVS.vs"; GLchar *GeometryStageFSname = "Shaders/GeometryStageFS.fs"; GLubyte *GeometryStageVStext; GLubyte *GeometryStageFStext; create_vertex_shader_object(cpw, "Geometry", &GeometryStageVS); create_fragment_shader_object(cpw, "Geometry", &GeometryStageFS); attach_shader(cpw, &GeometryStageVSname, &GeometryStageVStext, &GeometryStageVS); attach_shader(cpw, &GeometryStageFSname, &GeometryStageFStext, &GeometryStageFS); compile_shader(cpw, "Geometry", "vertex", &GeometryStageVS); compile_shader(cpw, "Geometry", "fragment", &GeometryStageFS); create_attach_program_object(cpw, &GeometryProgram, &GeometryStageVS, &GeometryStageFS); link_program_object(cpw, "Geometry", &GeometryProgram); validate_program_object(cpw, "Geometry", &GeometryProgram); Ci sono tutte le fasi preliminari che avvengono prima dell'esecuzione e che istruiscono il compilatore su cosa e quando deve tradurre. C'è poi la fase di inizializzazione che mi sembra autoesplicativa tranne forse per la il VBO che è il VertxBufferObject e che serve per "compattare" e inviare in un formato gestibile più velocemente (e nella vram) i modelli caricati iin precedenza. Poi si lancia il mainloop, che rappresenta il ciclo di rendering che sarà eseguito all'infinito. Durante questo ciclo, dovrò renderizzare i modelli che ho caricato. Mettiamo (sto sempre semplificando molto) di avere una funzione che piazza un albero in un certo punto. Questa funzione conterrà anche i "settaggi" che servono per definirlo (colore, texture, posizione, ecc...) ed anche la chiamata al nostro benedetto shader che utilizzerà queste informazioni come input per disegnare l'albero usando gli algoritmi di illuminazione, ombre, ecc... che abbiamo scritto nello shader (ne servirà più di uno, ma facciamo finta di no) e che, tramite quels'ultimo, la GPU applicherà ai vertici e pixel che gli "arrivano" (dipende se è un vertex o un pixel shader). Quindi: imposto_colore(); uso_texture23(); traslo_nello_spazio(); glUseProgram(LightningProgram); disegno_albero(qua dentro ci saranno specificati i vertici, o comunque quale parte dei VBO usare); E' importante sottolineare che al momento della carico_shader() se stessi eseguendo il gioco sarei nella situazione di run-time dell'applicazione, ma di compile-time dello shader, il quale comunque una volta terminata questa fase non va in esecuzione nella GPU fino al raggiungimento di una glUseProgram. Quando lo sviluppatore ha finito il gioco, ha delle cartelle che contengono il codice sorgente del gioco, le texture, i suoni, i modelli, ecc... . Ci sarà probabilmetne anche una cartella che contiene gli shader (se non ha deciso di codificarlo in una stringa nel sorgente, ma per quello che succede dopo non cambia niente e rende solo più difficile seguire il discorso). Alla fine quindi compila il sorgente del gioco ed ottiene un bell'exe (fa sparire così il sorgente che tiene per se). Poi mette tutto su DVD e lo mette in vendita. L'utente compra il dvd, installa il gioco e si ritrova nella stessa situazione dello sviluppatore, ma senza il sorgente. Ha però tutti i modelli, texture, ecc... tra cui anche gli shader, ancora da compilare (per gli ovvi motivi spiegati più in alto nel post), addirittura in sorgente se è un gioco opengl (cioè se li apro con notepad vedo prorpio il codice GLSL ad alto livello, provate a scaricarvi un demo opengl già compilato che contenga shader GLSL e potrete verificare). Quando l'utente fa doppio click sull'eseguibile, il gioco esegue le funzioni descritte in precedenza, compresa la carico_shader() in cui faccio la chiamata alla compilazione. Il driver riceve gli shader e li compila. Quando arriverà il momento della glUseProgram(LightningProgram), vengono messi in esecuzione i vertex e pixel shader compilati (magari anche geometry shader se siamo in una versione delle directx/opengl che li usa) che verranno eseguiti sui successivi dati in arrivo, finche non chiamerò una glUseProgram su uno shader diverso. Un aneddoto divertente che ho scoperto tempo fa riguarda gli shader per calcolare l'SSAO (screen space ambient occlusion), che stavo cercando di capire bene in modo da implementarla. L'ambient occlusion è un effetto che simula l'illuminazione globale (che a differenza dei classici modelli locali tiene conto delle riflessioni/rifrazioni delle luci) considerando la vicinanza e inclinazione tra i vari poligoni che compongono un modello cercando di calcolare dove ci saranno delle zone + scure (angoli, cavità, ecc...) in cui la luce non "passa" per bene. E' una descrizione brutale ma se volete saperne di più in rete è una tecnica ampiamente descritta, almeno qualitativamente. E' quindi ovvio che calcolando la visibilità di ogni poligono rispetto agli altri (cioè quanta ombra ogni poligono potrebbe fare a gli altri che compongono la scena), richiede un tempo quadratico e quindi improponiobile in realtime, soprattutto se calcolata poi per pixel e non per vertex. E' stata per esempio utilizzata in shrek. Crytek, nel fantomatico Crysis (ed è uno dei tanti motivi per cui è pesante come la morte) ha introdotto una tecnica per approssimare l'AO in screen space (da cui SSAO), in modo che i calcoli vengano fatti solo sui pixel che compongono l'immagine visualizzata e non anche i pixel delle superfici nascoste o non visualizzate, ma che comunque concorrerebbero alla occlusione e quindi si dovrebbe tenerne conto. Il paper,presentato nel 2007 che descriveva in modo molto sisntetico e qualitativo la tecnica, è stato oggetto di "culto" per diverso tempo in cui molti hanno tentato di replicare la tecnica, ma con risultati inferiori. Questo fino a che qualcuno (con due OO così), sbirciando nelle cartelle del gioco ha trovato gli shader e aprendoli è riuscito + o - a capirne la tecnica pratica di base. Avevo provato anch'io a guardarli (non ho crysis ma li avevano subito piazzati in rete), ma non erano molto intuitivi, poco commentati e per giunta in directx per cui ho rinunciato. C'è anche da dire che se non vengono utilizzati dei nomi autoesplicativi per le variabili e i sampler delle texture, uno dovrebbe capire che cosa rappresentano in base a che uso ne viene fatto nello shader, ma se guardo lo shader per capire cosa fa, stiamo a cavallo... Quote:
Quote:
Quote:
sviluppatore sorgente->(compilatore)->bytecode utente (senza JIT): bytecode->(interprete)->esecuzione L'interprete è l'anello debole della catena perchè deve tradurre in linguaggio macchina istruzione per istruzione, e (in una implementazione senza scorciatotie) se c'è un loop da eseguire 100 volte, lo traduce 100 volte. Con il JIT invece appena prima dell'esecuzione (ho fatto doppio click con i mouse) compila direttamente il codice, in modo da poterlo eseguire più velocemente, Ovviamente questo comporta che il lancio sarà più lungo, ma è ampiamente compensato dalla maggior prestazione in esecuzione. Il JIT per gli shader lavora un po più "tranquillo", perchè quando l'applicativo lancia la compile, link, ecc..., non è che l'operazione successiva è l'esecuzione dello shader, ma probabilmente ci saranno altre cose da fare (come da esempio poco sopra). E' quindi un compile-time reale, ma viene chiamato JIT comunque perchè 1) viene fatto mentre l'applicativo sta già girando e lo shader partirà di li a poco. 2) viene comunque rieseguita tutte le volte che rieseguo l'applicazione Quote:
Quote:
Quote:
Ultima modifica di skizzo99999999 : 02-12-2009 alle 12:10. |
|||||||||||
|
|
|
|
#8589 | |
|
Senior Member
Iscritto dal: Mar 2001
Messaggi: 5390
|
Quote:
Stando alle specifiche, fermi dovrebbe gestire molto bene le operazioni di algebra booleana e le istruzioni di salto che, guarda caso, sono le operazioni necessarie ad effettuare questo tipo di ottimizzazione al volo Ultima modifica di yossarian : 01-12-2009 alle 19:11. |
|
|
|
|
|
#8590 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 2544
|
io consiglierei 500mg di Torazina...
__________________
[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] |
|
|
|
|
#8591 |
|
Senior Member
Iscritto dal: Jun 2005
Messaggi: 12767
|
madonna.... servirebbe un licenziamento per leggere il tuo post, visto che le ferie non basterebbero
__________________
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
★ Asus Maximus IX Hero . i7-7700 KabyLake . 32 Gb Ram . GeForce GTX 1070 ★ Mac Mini 2.5GHz . 16 Gb Ram . SSD 500 Gb ★ ★ Google Pixel 8 pro ★ iPhone 15 plus ★ Canon EOS 600D ★ Sony DSC-RX100 ★ |
|
|
|
|
#8592 | ||
|
Senior Member
Iscritto dal: Apr 2008
Messaggi: 3153
|
Quote:
nVidia da questo punto di vista ha anticipato tutti fornendo la possibilità di utilizzare la stereoscopia con occhiali lcd attivi applicabile al 90% dei game (non occorre che siano programmati appositamente)...sono il futuro perché già dal prox anno tanti produttori adotteranno la stessa tecnologia (Sony, Samsung, Panasonic e mi sembra anche Toshiba). io li ho e ti posso assicurare che una volta provati non puoi (vuoi) più tornare indietro, tutto sembra piatto e scialbo. Se vuoi x qualsiasi chiarimento sono a disposizione e non ti servono 1000euro ma con 450euro ti porti a casa monitor 120hz nativi + kit 3d Vision. ti rimando al thread apposito perché qui siamo OT http://www.hwupgrade.it/forum/showthread.php?t=1993079 Quote:
__________________
Case: Stacker 830 nVidia Edition-Ali: Corsair HX1000W-Mobo: Asus R2E-CPU: i7 920 3,80 Ghz-Dissi: NH-U12P SE-Ram: Dominator 6GB 1600Mhz CAS8-VGA: Zotac GTX480 2-Way SLI-HDD: 2x150GB Raptor Raid0;1TB WD10EADS-Schermo: Acer GD245HQ+nVidia 3D Vision -SO: Win8 Pro x64-Mouse: Razer Mamba-Cuffie: Sharkoon X-Tatic 5.1 Digital-Gaming: G13-G25-Rumble Pad 2, Xbox360 controller
Ultima modifica di Diobrando_21 : 01-12-2009 alle 19:05. |
||
|
|
|
|
#8593 |
|
Bannato
Iscritto dal: Apr 2009
Messaggi: 1323
|
|
|
|
|
|
#8594 |
|
Senior Member
Iscritto dal: Mar 2004
Città: Parma
Messaggi: 5959
|
Ahhhh.... quindi nelle gpu non esistono come nelle cpu meccanismi di data/instruction prefetch ?
Edit: Sempre in riferimento all'argomento, esecuzione codice shader ovviamente
__________________
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 Ultima modifica di eXeS : 01-12-2009 alle 20:38. |
|
|
|
|
#8595 |
|
Senior Member
Iscritto dal: Aug 2008
Messaggi: 1601
|
mah
__________________
Per consigli...Pcbrain hurricane69ToXSys_Dwn,breakz,JackBellaria,tonypiu,alekturbo,$iMoNe_In$aNe,mauroalfa,Ale__xi,alex,TonyM.G.,umby29268,iasudoru,emanuelemessinese,garfles,piccoletto72, franknos90,mimmo68,PilloPallo,Re tony, JeanCaneo, tidus780, Knukcles, hulkster2g, xcloud, saint80,BruceWilliss,canna1988,Lov3r, The Incredible,TiEfSchWarZ,ciciolo1974,scruffy,Marki91,ivanbio,schumy83,kinchi,coontrol86,Rossomalpelo roger82 tutti felici.. |
|
|
|
|
#8596 |
|
Senior Member
Iscritto dal: Sep 2008
Città: Terracina Lt
Messaggi: 3827
|
Bè se nn esce almeno qualcosa entro natale ,si puo dire che nvidia nn è stata per niente di parola .....
__________________
Ho concluso con:streke, pisse, fedex89 ,JonnyX, Blasio, Kuccy, Marcopa83, Leccese, canna1988, Kinotto88, dejan_465, whitedevils, gianc89, Wuillyc2, APcom A.T.C.,Veltosar |
|
|
|
|
#8597 |
|
Senior Member
Iscritto dal: Nov 2008
Città: (VA)
Messaggi: 10993
|
considerando che io le aspettavo per metà novembre XD
__________________
CPU: i9 13900k @def | MoBo: MSI Tomahawk Z790 | RAM: DDR5 Fury 2x32GB 6000 C30 | VGA: RTX 5080 | PSU: Seasonic Focus GX850 | Dischi:WB SN850 500GB + Crucial P2 1TB +2TB | Monitor + TV: Asus MG279Q + Samsung 65" QN90A
|
|
|
|
|
#8598 |
|
Senior Member
Iscritto dal: Sep 2008
Città: Terracina Lt
Messaggi: 3827
|
Idem...allora si vede che i problemi ci sono ,e forse anche + grossi del previsto
__________________
Ho concluso con:streke, pisse, fedex89 ,JonnyX, Blasio, Kuccy, Marcopa83, Leccese, canna1988, Kinotto88, dejan_465, whitedevils, gianc89, Wuillyc2, APcom A.T.C.,Veltosar |
|
|
|
|
#8599 |
|
Senior Member
Iscritto dal: Feb 2000
Messaggi: 11339
|
che ci sia qualcosa che non va è palese, se manco col Natale in arrivo vola una mosca vuole dire che le acque sono molto scure...
__________________
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 |
|
|
|
|
#8600 |
|
Senior Member
Iscritto dal: Sep 2008
Città: Terracina Lt
Messaggi: 3827
|
Anche perchè, sinceramente ,se partiamo da ottobre e finiamo a marzo ....nn mi sembra un ottima strategia commerciale far rimanere la concorrenza 6 mesi da sola sul mercato a coprire tutte le fascie di prezzo
__________________
Ho concluso con:streke, pisse, fedex89 ,JonnyX, Blasio, Kuccy, Marcopa83, Leccese, canna1988, Kinotto88, dejan_465, whitedevils, gianc89, Wuillyc2, APcom A.T.C.,Veltosar |
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:15.











-SO: Win8 Pro x64-Mouse: Razer Mamba-Cuffie: Sharkoon X-Tatic 5.1 Digital-Gaming: G13-G25-Rumble Pad 2, Xbox360 controller
hurricane69ToXSys_Dwn,breakz,JackBellaria,tonypiu,alekturbo,$iMoNe_In$aNe,mauroalfa,Ale__xi,alex,TonyM.G.,umby29268,iasudoru,emanuelemessinese,garfles,








