Ve li ricordate? La coppia di scettica e credente che hanno cambiato il modo di fare televisione e serie tv negli anni 90, X-File.
Mi sono ispirato a loro per questo post, perchè sono stufo della disinformazione che viene fatta dietro l’hardware quando si deve lavorare, da una parte la totale confusione che c’è su internet a proposito della potenza e delle soluzioni hardware per chi deve fare editing video, postproduzione, 3D, dall’altra gli assemblatori di computer che sono totalmente ignoranti, prendendo a paragone il mercato del gaming come fonte assoluta dei benchmark, quando in realtà chi lavora non può affidarsi a quelle informazioni.
Facciamo una premessa : i giochi e i software di editing/postproduzione/3d si basano su principi di gestione della memoria, dei core, delle GPU completamente diversi, per questa ragione una configurazione che per i giochi mostra un incremento notevole di potenza, magari per l’editing il discorso è ininfluente.
Tutto il mio articolo è fondato sulla ricerca delle performance lavorative, quindi se qualcuno vi fornisce informazioni discordanti chiedete quali sono le sue fonti e le ragioni operativo pratiche su cui si basano le sue conoscenze, se non utilizza almeno due o tre pacchetti di postproduzione e 3d non è attendibile.
Parliamo dei processori
Tanti anni fà il signor Gordon Moore, coofondatore della Intel, teorizzò con la prima legge di Moore che i processori avrebbero raddoppiato il numero dei loro transistor e di conseguenza la loro potenza ogni 2 anni.
Quello che non considerò furono tre fattori :
- c’è un limite alla dimensione del processore, un limite alla miniaturizzazione delle piste altrimenti ad aumento di potenza si rischia la elettromigrazione e quindi corto delle piste.
- c’è un notevole aumento di temperatura all’aumento della potenza del processore e va dissipata in modo efficiente per non avere oltre che consumi notevoli, problemi di stabilità (vedi i moderni cellulari octacore che sembra di avere uno scaldino sul viso).
- I programmatori sono diventati sistematicamente più pigri e inefficienti, se negli anni 90 i programmatori compilavano il software ottimizzato per il singolo processore e all’installazione si sceglieva la versione più adatta, oggi molti programmi non sono neanche ottimizzati per il multicore, multiprocessing sprecando fino al 80% delle risorse
Ad ognuno di questi fattori c’è rimedio, nel tempo sono cambiate le tecnologie e se si vuole…
- la stratificazione permette la creazione di processori multicore (a oggi 72), con ridotti rischi di elettromigrazione, ma alcuni produttori per evitare il rischio mettono dei “lucchetti” alle potenzialità del processore, ovvero la velocità non è costante ma oscillante a seconda della richiesta di sistema, il chè è bene per ottimizzare risorse, scaldare meno, consumare meno, ma nel momento in cui lavoro e lascio a renderizzare un computer per 60 ore (il 3d o la postproduzione anche giorni di rendering), quel processore rischia di toccare picchi di durata non prevista e passare dal semplice spegnimento al danno diretto del processore.
- oggi sia i dissipatori attivi di buona qualità che i dissipatori a liquido sono discretamente economici da permettere a chi lavora di dissipare tutto il calore che serve, peccato che il principio è come quello delle vecchie lampadine a incandescenza, si sprecava una quantità inusitata di energia in calore invece che in luce/calcolo
- qualche programmatore che ottimizza i software esiste ancora, mi vengono in mente per il 3d Zbrush, 3D coat, Clarisse, software che sembrano magici per quello che fanno, ma in realtà si tratta solo di buona programmazione.
parliamo delle schede video
Nel mercato di oggi si sta spingendo molto sulla scheda video e sull’utilizzo delle GPU per il calcolo, un discorso molto moderno e approccio innovativo, che iniziò circa 40anni fà con Steve Wozniac in Apple nel 1977 e con Commodore con Amiga nel 1985, in quel caso i programmatori lavoravano a basso livello, gestivano direttamente i chip delle schede video spremendo ogni bit disponibile, oggi i programmatori si appoggiano a librerie di sistema che utilizzano poi l’hardware, parliamo di Metal2 nel caso di Apple per chip (Nvidia, Intel, AMD), Cuda per Nvidia, OpenCL per AMD, Nvidia, Intel (standard open a più tipi di chip, ma purtroppo meno performante).
Questo vuol dire che a seconda delle scelte dei programmatori possono sfruttare meglio o peggio le risorse hardware del sistema, questo è il motivo per cui il programma di editing X arranca con il fullHD sulla stessa macchina dove il programma di editing Y gira fluido in 4k.
La scheda video oggi viene sfruttata per accelerare come minimo :
- decodifica dei file h264, h265 (la maggioranza dei file video generati da smartphone, macchine fotografiche e telecamere di fascia medio – bassa, quindi se già la lettura del file e la sua decodifica impegna la scheda, questa ha meno risorse per i task successivi
- accelerazione effetti video / audio in tempo reale
- gestione di rappresentazione o calcolo 3D (esiste una intera categoria di motori di rendering di alto livello, alcuni nati dai giochi come U-Render o Octane Render che usano solo esclusivamente la GPU per il calcolo.
- riduzione rumore video, da Neat video in poi…
- gestione interfaccia video (sprechiamo risorse e memoria video della scheda visto che ne hanno già poca…)
- Compressione in formati H264, H265 per output video.
parliamo delle CPU
Nel mercato di oggi dopo aver raggiunto una sorta di limite nella creazione di processori con Clock sempre più alti, si è passati alla creazione di wafer, strati multipli dove i diversi core si combinano tra di loro, per cui invece di avere un potentissimo motore, abbiamo la somma di tutti questi motori. La logica è inopinabile, più efficiente e potente, e in caso di danno parte del processore resta attiva e quindi funzionante, ma…
A oggi il tallone d’achille è lo sfruttamente di tali core, perchè di base il sistema operativo riceve le chiamate di calcolo dal programma, le smista ai diversi core del processore, restituisce i risultati, peccato che tale approccio sia differente e meno efficiente dell’accesso diretto dei programmi ai singoli core del processore, e quindi si perdono troppi cicli macchina in questi passaggi, inoltre se è il sistema a gestire l’assegnazione è possibile che semplici task come aprire un browser possa rubare troppe risorse ad un rendering, o ne vengano sprecate in vario modo.
Il risultato di questa gestione è che i programmi progressivamente perdono potenza, come se avessimo una macchina che ha le marce fino alla quinta, ma quando iniziamo ad accelerare ci sollevano le ruote dal terreno facendolo solo sfiorare.
Ora perchè tutto questo discorso?
Perchè contrariamente a quello che fanno credere tutti, non ci sono sempre salti proporzionali tra il valore economico di CPU e GPU e le risultanti di potenza nei programmi di editing, post, 3D, quindi si può sprecare investimenti su schede e cpu costose senza avere dei veri e propri salti prestazionali con i software.
Inoltre col fatto che spesso questi chip non sono usati al 100% dai software il rischio maggiore è quello di veder inutilizzati buona parte delle risorse.
Come verificare prima dell’acquisto cosa comprare?
Dopo anni di esperimenti ho verificato un paio di test affidabili oggi (agosto 2018), poi spero di essere smentito e vedere software da lavoro ultraottimizzati come i giochi che sfrutteranno meglio le differenze operative di CPU e GPU.
Parlo di benchmark affidabili perchè storicamente i produttori di schede video e driver hanno spesso barato per risultare ottimi nei benchmark in voga nel momento ma non nelle reali performance; è sempre stato complesso fare benchmark che offrissero indicazioni sull’uso reale, perchè i benchmark eseguono calcoli per sovraccaricare i diversi processori e strumenti dell’hardware, ma spesso gli sviluppatori di benchmark sono ottimisti, ovvero pensano che anche i programmatori dei software sfrutteranno come loro tutte le funzionalità, cosa che non accade quasi mai.
Per le GPU un buon benchmark è OctaneBench, ovvero una scena 3d calcolata esclusivamente con la GPU, tramite il motore di rendering Octane render, il risultato di benchmark e differenze tra una GPU e l’altra mi ha dato stesso riscontro utilizzando le differenti GPU su programmi come :
- Adobe Premiere
- Adobe After Effects
- Davinci Resolve
- NeatVideo denoiser
- Avid
- Fusion
La cosa imbarazzante sono i risultati, che potete leggere voi stessi, ovvero la differenza tra le Titan e una GTX 980ti oltre al quadruplo del prezzo è solo per la quantità di memoria a bordo, ma le performance… NO!!!
facciamo un riassunto veloce?
- GTX 1080ti euro 800 (di media) score 185
- Quadro P6000 euro 4.500 (ci sono da 6000) score 169
- Tesla P40 euro 7.000 score 166
- GTX 1080 euro 550 score 135
- GTX 980Ti euro 450 score 130 (posseggo la Asus Strix che fa 141 di score)
- Titan X euro 665 score 129
- Quadro P4000 euro 800 score 101
- Titan Black euro 1800 score 80
- Titan Z euro 2400 score 77
quindi contrariamente a quello che dicono la maggior parte delle persone, quando si passa al lato operativo lavorativo (NON STIAMO GIOCANDO nel vero senso del discorso) le schede considerate più performanti sono le più sfigate in un rapporto potenza prezzo, senza considerare che molti software (Resolve, Octane, Neatvideo, and more) sono capaci di sfruttare il multigpu, quindi scegliendo oculatamente la piastra del computer e le schede video, si possono ottenere performance che le superschede si possono solo che sognare mettendo 2 o più schede in parallelo. Esistono poi delle riflessioni parallele da fare in riferimento alla vecchiaia delle schede, perchè dopo qualche anno le schede non vengono più supportate nei software e quindi un investimento molto alto se non si ripaga velocemente si rischia di vederlo sparire nelle nuove versioni dei software.
Teniamo inoltre conto del fatto che pur essendo teoricamente pensate per il multiGPU le schede madri non sono pensate per usarle tutte… ovvero spesso non ci sono abbastanza lane per la distribuzione dei calcoli o banalmente pur essendo una E-Atx le schede sono troppo vicine e il problema sarà il calore generato perchè ogni scheda manda aria calda alle spalle della scheda davanti a lei e quindi il surriscaldamento sarà dietro l’angolo, e non si potrà applicare un raffreddamento a liquido perchè non c’è spazio per montare i radiatori sulle schede tra una scheda e l’altra.
Come verifico la potenza delle CPU?
per le CPU esistono ancora più benchmark e spesso inutili… perchè molti programmi non sfruttano il multicore o il multithreading, o non usano tutte le funzioni integrate, quindi una CPU dual core, ma con clock più alto offrirà all’atto finale un tempo di calcolo inferiore rispetto ad un octacore con un clock inferiore durante l’export di un file video.
Un buon benchmark per il processore è CineBench, usato anche da molte testate giornalistiche importanti per testare le performance dei computer, esso utilizza il core del motore di rendering 3d Maxon Cinema 4D, motore che testa sia l’openGl che la cpu, single core e multicore. Diventa semplice verificare tramite lo score quanto sia potente la CPU in uso singolo o combinato col Multithreading.
La cosa divertente è che usando un processore antico (Q3-2013) come un Intel i7 4930k ottengo uno score di 927. Guardando le prestazioni dei processori moderni… potrei avere qualche delusione… come potete vedere sotto la media dei processori di oggi offrono o le stesse performance o meno ancora… altrimenti si deve investire in modo consistente, e qui si vedono solo i prezzi dei processori.
- Intel core i5 7640k euro 154, score 716
- Intel core i7 4790k euro 290, score 836
- Intel core i7 7700k euro 300, score 960
- Intel core i7 7740k euro 356, score 999
- Intel core i7 8700k euro 326, score 1230
- AMD 2700X euro 267, score 1964
- Intel XEON W-2150B euro 750, score 2350
- Intel core i9 7900x euro 850, score 2355
- AMD 1920X euro 440, score 2428
- Intel core i9 7940X euro 1,100, score 2929
- AMD 1950X euro 790, score 3334
- Intel core i9 7980XE euro 2,100, score 3920