UFFICIALE AMD RX Vega 56 e 64 - La risposta ai GP104

Pubblicità
@lucusta
Grazie della lauta spiegazione :sisi: insomma dovevano farla sin dal'inizio così, evitavano tutti quelli con 770/970 al seguito che han cambiato per questa e si sono trovati problemi (con i5 locked si intende).
Per Nvidia però era controproducente visto che in OC avrebbe potuto raggiungere la sorellona.
Almeno questa volta non hanno tagliato il discorso memoria veloce e lenta come sulla 970 e 660ti, del resto la x70 è sempre un compromesso


edit: per il discorso core logici e utilizzo non lo sapevo. Sto cercando di ragionare quindi chiedo.
Ti posto questo grafico portandoti all'attenzione il 6700.
Questo significa che è carico?
Visualizza allegato 261692

Se dici 50+50% dovrebbe esserlo

si dovrebbe avere l'occupazione totale per essere sicuri, pero', ad occhio e croce le coppie sono le seguenti:
core1 con HT2 = 0.55+((1-0.55)x0.48)=76.6%
core2 con HT1 (o 4) = 0.61+((1-0.61)x0.42)=77.4%
core3 con HT3 = 0.58+((1-0.58)x0.48)=78.2%
core4 con HT 4 (o 1) = 0.61+((1-0.61)x0.41)= 77.0%
utilizzo medio CPU 77.3%

nota 1: usare prima il core e poi la rimanenza di questo moltiplicata per la percentuale d'uso dell'HT non cambia dal fare il contrario (ossia HT+((1-HT)xC)); una delle proprietà dei reciproci... il risultato non cambia.

nota 2: quando un programma gira sulla CPU e ti viene mostrata l'occupazione di risorse non è detto che tu disponga ancora di altre risorse da dedicare a quello specifico tipo di calcoli; in questa situazione la CPU potrebbe utilizzare il 100% di subunità delle ALU specifiche per quei calcoli, e quindi stare già al suo massimo operativo per l'esecuzione di quel tipo di codice.
le ALU sono composte da subunità di calcolo, spesso replicate e parallele e la stessa ALU viene congeniata con un numero variabile di questo tipo di subunità a seconda del tipo di calcoli che si prevede incontrerà per la maggiore (un ragionamento statistico, insomma... aumenti la potenza di calcolo su quel genere di calcoli che incontri piu' spesso).
per capirlo è semplice: abassi la frequenza; le il processore, man mano che cali, presenta ancora la stessa occupazione di calcolo significa che è arrivato alla saturazione per quel tipo di codice, anche se stà sempre al 25% (abbassando la frequenza farai meno calcoli in assoluto, ma la stessa porzione relativa per le possibilità del processore, quindi la stessa % di occupazione).

puoi guardare ora il confronto con l'i7 5960x.
l'HT è trascurato, perchè ha 8 core fisici; i thread sembra che girino solo su quelli.
core1 con core 2 =0.39+((1-0.39)x0.39)=62.8%
core3 con core8 = 0.61+((1-0.61)x0.25)=70.8%
core 4 su core 7 = 0.59+((1-0.59)x0.30)=71.3%
core5 con core6 = 0.36+((1-0.36)x0.41)=62.2%
occupazione media se lo consideriamo come un quadcore = 66.8%
i core HT puoi considerarli come un'altro 3% medio, quindi passi a 69.8%

da qui, se i due processori avessero lo stesso IPC, parametrizzando per la frequenza e normalizzando sul 5960x abbiamo:
69.8% del 5960x
77.0x3.0/3.4=67.9%
67.9/69.8=97%

questo gioco è DX11.3, usa 8 trhead e con il 6700 a 3.4ghz si riesce ad andare al 97% di quanto si possa fare con il 5960x.
processore strozzato? il 6700 è probabile, ma non saprei dirti del 5960x.
si dovrebbe vedere che FPS generano e confrontarli con l'occupazione di una scheda inferiore, per vedere se scalano tutti e due in modo lineare.
a guardare come sono occupati e dal fatto che il 6700 perde quel pelino, si direbbe che questo sia al limite dell'uso per quel gioco;
parliamo quindi di un'occupazione massima di un'ALU Intel tra il 70 e il 75% sul quad quando arriva a saturazione (un po' lo devi concedere anche al resto dei processi attivi), ma trasfigurato in octacore, parametrizzato, siamo sul 61.8% e riportato al livello del 5960% (ossia diviso 0.97) arriviamo al 63.7%; mettici quel 5% di occupazione del sistema da parte del resto dell'OS e siamo 68.7%.
ora, qui abbiamo un'occupazione media del 69.8% (ed è media, ossia non guardi i picchi, in cui di sicuro perdi parecchie prestazioni)... pure il 5960x è saturo.
se si guarda l'occupazione della GPU si capisce anche in che maniera.
di solito è guru3d che usa il 5960x, e lo fa a 4.5Ghz; se gli FPS scalano linearmente da 3.0ghz a 4.5ghz, è segno che nemmeno a 4.5ghz puoi essere sicuro che la GPU non sia tarpata dal processore, se invece fa meno di quanto si possa vedere in una linearità diretta tra fps su ghz, la GPU non è tarpata e viene usata al 100% nella maggior parte del tempo... se fa di piu', pero', significa che la CPU a 3.0Ghz le fa sicuramente da tappo.

quindi è sicuro che il 6700 è carico, ed è probabile che lo sia anche il 5960x, e se non lo è stà proprio al limite delle sue possibilità.

un i5, messo in mezzo a questi, non sfigurerebbe piu' di tanto; ha solo 4 core fisici, ma puo' spingerli anche lui al 70% anche senza usare l'HT; il resto è OS, quindi starebbe a circa l'85% di occupazione, ma non andrebbe molto meno rispetto al 6700@3.4Ghz.

non è difficile capire che il ryzen, invece, le prende da tutti... ma avevo già letto che risultava male su quel gioco, almeno sulla beta.
in questo caso Ryzen viene usato senza SMP, quindi userà 8 core per 8 thread, ma i suoi core "pesano" solo il 66% rispetto a quelli intel, in questa situazione, parametrati poi per la frequenza... viene in aiuto solo lo scaling in multithread, che gli fa guadagnare qualcosa (ma parliamo di un 5-10%).
su ryzen basta sommare gli l'occupazione degli 8 core, mediarla in 8 e otteniamo un'occupazione media del 40.8%;
3.6 su 3.4 abbiamo 38.5% (parametrizzato per frequenza) da cui per IPC 25.4%, da cui, passando da un quad ad un octacore (x2) otteniamo 50.9%.
rispetto al 6700 (che ha un'occupazione massima del 70-75%):
50.9/70=72.7% (prendiamo, per semplicità, che gli 8 HT del ryzen si occupino del carico dell'OS).
diamogli il suo meritato 10% sullo scaling dei thread, siamo al 80.0% degli fps di un 6700 con la stessa scheda video.
il 6700 fa 100fps, ryzen 1800x farebbe 80 fps... un abisso sotto.
se lo porti a 4,1ghz sei a 91fps... tanto puoi sperare contro un i7 non k: al massimo il 91%, strizzando bene la CPU (e se il 6700 non era già sufficente per la scheda, non lo sarà nemmeno ryzen).
ma qui abbiamo anche cambiato architettura di base, e ci sarebbe da normalizzare per una vita, per riuscire a tirare fuori i numeri (che poi basta eseguire il bench e si vedono).

tanti discorsi per capire qual'è il tappo e la sua causa: programmano a tools e non ci mettono le mani, quindi codice gonfio e poco gestito, ed un octacore va come un quad....
 
Ultima modifica:
Grazie della spiegazione. Comunque la prima cosa che ho fatto per stabilizzare la frequenza è stato far scendere la temperatura il più possibile mandando su di giri del blower. Ovviamente la temperatura è passata dai 75°C sulla CPU a 60°C ed idem sulle HBM da 80°C a 65°C. In questo caso la frequenza media di esercizio si alza di un pò ma continuando a fluttuare tra i valori impostati sugli Stati 6 e 7: non arriva MAI a lambire il valore impostato sul 7. Il limite insomma è una frequenza molto "dinamica".

Che tu sappia poi le HBM2 quale range di temperature operative e di sicurezza dovrebbero avere che non trovo nulla?

cerco il datasheet; mi sembra di averlo letto (ricordo 105°C, ma era HBM per gli switch ad alta frequenza... di solito usano grado militare).
 
Molto interessante, stavo cominciando anche io ad informarmi sul rapporto tra megathread e numero di core/thread della cpu, e rispettivo sfruttamento (se non sbaglio è lo stesso discorso per cui, per sfruttare al meglio una 1080Ti/titan, sarebbe meglio una cpu a 6 o più cores).
La mia domanda qui, un po' da ignorante, è sul quel calcolo di utilizzo dei core fisici / logici che hai fatto.
Tecnicamente, per poter avere dei core logici, c'è bisogno di inserire delle componenti extra, che di preciso non so quali siano (ma presumo ALU extra, o parti di ALU). Quello che voglio dire è che, sfruttando un core fisico più il suo corrispettivo logico, non si avrà un 200% di prestazioni, ma molto di meno (mi pare di ricordare un 130% per quanto riguarda intel, ma vado a memoria). Insomma, credo che quel discorso dei due core (fisico/logico) al 50% + 50% = 100% sia un filo grossolano, anche se esatto in concetto.

Poi potrei benissimo sbagliarmi, per questo chiedo :)

hai una percentuale superiore solo se usi piu' thread e questi usano diverse parti delle ALU, non usate dal thread principale.

facciamo un esempio:
stesso codice, quindi stesse subunità utilizzate;
massimo sfruttamento della CPU al 75%
sulla stessa ALU (o su due ALU coordinate usate in SMT) hai al massimo quelle subunitò poer qui calcoli, quindi dividerai quella percentuale di utilizzo.
ricorda pero' che i core logici sono di natura differente.
se uno è il principale, l'altro, come subordinato, avrà solo la rimanenza, ma te la mostrerà normalizzata:
100 è tutta l'occupazione della ALU in tutte le sue subunità di calcolo;
i calcoli la usano, in quella circostanza, al massimo al 75%;
il core principale si prende il 50% della potenza della ALU, e lascia libero il 50%, ma solo il 25% della CPU, la metà di quello che avanza, esegue i calcoli che servono;
il core subordinato prende quel 50% e lo normalizza a 100% (e ti fa vedere l'occupazione rispetto al 100%, ma al suo 100%, oltretutto dinamicoin quanto cambia a seconda di quanto gli lascia libero il core principale);
di quel 100% puo' utilizzare il 50% e cerca di sfruttarlo al massimo.
totale:
sempre 75% fa, perchè al massimo quei calcoli si fanno sul 75% delle subunità.

se invece i thread sono di natura diversa e il secondo tread ha calcoli adatti a usare sia quel 25% di prima, ma anche il 25% sulle altre subunità, occupera il 100% della possibilità che gli viene lasciata da quello principale, che è il 50%
totale:
50% del principale sulle subunità per i calcoli del primo tipo che abbiamo considerato piu' 50% del 50% sulle subunità dello stesso tipo con la stessa tipologia di calcolo, piu' 50% del 50% per gli altri calcoli, ossia 50+(0.5x0.5)+(0.5x0.5)=100%
100% dell'uso della ALU, perche in assoluto la ALU la puoi usare SOLO al 100% quando in verità ti verrà mostrato 50% dal principale e 100% dal secondario, ossia 150%.. ma non è cosi'.
e questa è la migliore ipotesi di sfruttamento, perchè quel 75% di subunità le usi per 50 sul primo, per 25 sul secondo, mentre il primo lascia libere le sub unità che non gli servono ma servono al secondo, quindi altro 25 in piu'... in totale pero' puoi solo sfruttare il 100% di una ALU... non ce nè di piu'.

è un po' ingarbugliato, ma lo capisci subito... usa i regoli... e capisci immediatamente che la parte relativa normalizzata in effetti, come assoluto, non potra mai sommarsi all'altra dandoti piu' dell'unità.
 
@lucusta

come mai Core1 devo pescarmi HT2? motivazione tecnica?

la numerazione dei core non è sempre la stessa.
ora non saprei dirti come e perchè, ma può cambiare da macchina a macchina, anche con lo stesso HW (anche con il medesimo HW).
credo dipenda dal bios istallato e dall'enumerazione che impartisce.
quindi sono ID non correlati ne alla posizione fisica ne alla disposizione logica... solo numeri d'identificazione... non piu' di altro.

per questo motivo l'HT1 puo' effettivamente essere la parte logica del core5, ad esempio, ma il tuo core5 potrebbe essere in una posizione fisica diversa dal mio, pur se abbiamo stesso modello di processore e stessa mobo, ma bios diverso, ed il mio core5 essere gemello di quello che il mio sistema chiama HT3.
anche perchè il sistema non ti mostra CORE FISICO e HT, ma solo core logici.
l'abbinamento è reso difficoltoso per questo motivo; non essendoci una correlazione logica tra la numerazione d'identificazione (o meglio, non conoscendone la logica adottata), te la devi andare a cercare "a tentativi".
è per questo che ti dicevo che sarebbe opportuno avere il quadro generale, con l'occupazione totale e quelle parziali (che sono sia assolute per i core logici primari che relative e normalizzate a 100 per quello logici secondari); se hai l'occupazione totale puoi fare il check e vedere se la somma dei parziali ti ridà effettivamente quel valore.
solitamente, comunque, le coppie si abbinano con gli estremi: il piu' occupato con il piu' scarico, e via via in quest'ordine.
non importa se consideri primario quello con valore piu' alto e secondario quello con valore piu' basso o viceversa; essendo reciproci derivati dall'unità il valore calcolato in un modo è lo stesso di quello calcolato nell'altro.

questo, almeno, sugli Intel.

l'OS, quando sfrutta un'architettura Intel, riesce sempre e comunque a mediare l'occupazione di tutti i core fisici (sui vecchi e sui quad, mentre già BE , avendo una gestione VIR è leggermente diverso); su Ryzen invece è piu' caotico, perchè ha una IA di gestione che predilige lo sfruttamento delle risorse non mediando il carico su tutte, ma mediandolo a quartine (i due CCX) e, su questi a coppie, privileggiando l'esaurimento della risorsa per singola coppia e poi per singola quartina (almeno se usi la memoria in ambiente NUMA, non so se anche per il resto).

con i quad Intel, pero', a me i conti dell'occupazione totale della CPU danno sempre il check se abbino gli estremi in ordine decrescente.

questa è la mezza pecca dello scheduler di windows (e linux): non avere un ID univoco, descrittivo e posizionale (ma a breve cambierà).
è cieco sull'uso della gestione avanzata delle risorse.

comunque scusate gli OT... scriverei ore su queste cose! mi faccio prendere la mano...
 
Ultima modifica:
la numerazione dei core non è sempre la stessa.
ora non saprei dirti come e perchè, ma può cambiare da macchina a macchina, anche con lo stesso HW (anche con il medesimo HW).
credo dipenda dal bios istallato e dall'enumerazione che impartisce.
quindi sono ID non correlati ne alla posizione fisica ne alla disposizione logica... solo numeri d'identificazione... non piu' di altro.

per questo motivo l'HT1 puo' effettivamente essere la parte logica del core5, ad esempio, ma il tuo core5 potrebbe essere in una posizione fisica diversa dal mio, pur se abbiamo stesso modello di processore e stessa mobo, ma bios diverso, ed il mio core5 essere gemello di quello che il mio sistema chiama HT3.
anche perchè il sistema non ti mostra CORE FISICO e HT, ma solo core logici.
l'abbinamento è reso difficoltoso per questo motivo; non essendoci una correlazione logica tra la numerazione d'identificazione (o meglio, non conoscendone la logica adottata), te la devi andare a cercare "a tentativi".
è per questo che ti dicevo che sarebbe opportuno avere il quadro generale, con l'occupazione totale e quelle parziali (che sono sia assolute per i core logici primari che relative e normalizzate a 100 per quello logici secondari); se hai l'occupazione totale puoi fare il check e vedere se la somma dei parziali ti ridà effettivamente quel valore.
solitamente, comunque, le coppie si abbinano con gli estremi: il piu' occupato con il piu' scarico, e via via in quest'ordine.
non importa se consideri primario quello con valore piu' alto e secondario quello con valore piu' basso o viceversa; essendo reciproci derivati dall'unità il valore calcolato in un modo è lo stesso di quello calcolato nell'altro.

questo, almeno, sugli Intel.

l'OS, quando sfrutta un'architettura Intel, riesce sempre e comunque a mediare l'occupazione di tutti i core fisici (sui vecchi e sui quad, mentre già BE , avendo una gestione VIR è leggermente diverso); su Ryzen invece è piu' caotico, perchè ha una IA di gestione che predilige lo sfruttamento delle risorse non mediando il carico su tutte, ma mediandolo a quartine (i due CCX) e, su questi a coppie, privileggiando l'esaurimento della risorsa per singola coppia e poi per singola quartina (almeno se usi la memoria in ambiente NUMA, non so se anche per il resto).

con i quad Intel, pero', a me i conti dell'occupazione totale della CPU danno sempre il check se abbino gli estremi in ordine decrescente.

questa è la mezza pecca dello scheduler di windows (e linux): non avere un ID univoco, descrittivo e posizionale (ma a breve cambierà).
è cieco sull'uso della gestione avanzata delle risorse.

comunque scusate gli OT... scriverei ore su queste cose! mi faccio prendere la mano...
Comne mai dici che a breve lo scheduler di Windows cambierà?
 
Nuovo video caricato: Titanfall 2 in fullHD con frame cap a 144fps e Power Limit a +20% (quando taglia ad un certo punto la frequenza imho è perchè arriva a superare il PL). Dettagli ovviamente al massimo.

 
Ultima modifica:

sto guardando ora :sisi:
mi auto-quoto :asd:

allora deduco due cose:

1) configurazioni "cross", come ipotizzavo, lavorano alla grande
2) ho passato mesi (e qualcuno di voi anni) a guardare bench in 1080p ma a risoluzioni più alte (e realistiche) la realtà è ben diversa.

note personali:

-i ryzen sono ammirevoli
-le Vega sono belle schede se non fosse che la LC costa 750€ e consuma quanto un motore industriale
 
Pubblicità
Pubblicità
Indietro
Top