Indicazioni sulla scelta dell’hardware per Calcoli Scientifici

L’informatica scientifica è un campo molto vasto con innumerevoli applicazioni individuali, ognuna delle quali ha le proprie specifiche esigenze hardware, ma le indicazioni fornite in questo articolo vi aiuteranno a iniziare nella giusta direzione per la vostra prossima postazione di lavoro.

Calcoli Scientifici – Requisiti di Sistema

L’informatica scientifica è un settore molto vasto! Esistono migliaia di applicazioni “scientifiche” e spesso ciò con cui si lavora è basato sullo sviluppo del proprio codice. I colli di bottiglia delle prestazioni possono derivare da molti tipi di hardware, software e caratteristiche di esecuzione del lavoro. Le raccomandazioni sui “requisiti di sistema” pubblicate dai fornitori di software (o dagli sviluppatori) possono non essere ideali. Potrebbero essere basate su test obsoleti o su variazioni di configurazione limitate. Tuttavia, è possibile formulare alcune raccomandazioni generali.

Processore (CPU)

La CPU può essere la considerazione più importante per una workstation di calcolo scientifico. La scelta migliore dipende dalla scalabilità parallela dell’applicazione, dai modelli di accesso alla memoria e dalla disponibilità o meno dell’accelerazione GPU.

Qual è la CPU migliore per l’elaborazione scientifica?

Esistono due scelte principali: Intel Xeon (single o dual socket) e AMD Threadripper Pro / EPYC (che si basano sulla stessa tecnologia). Per la maggior parte dei casi consigliamo processori a socket singolo come Xeon-W e Threadripper Pro.Le versioni attuali di queste CPU offrono opzioni con un elevato numero di core e un’ampia capacità di memoria senza dover affrontare la complessità, le spese e le complicazioni legate alla memoria e ai core dei sistemi a doppio socket.

Un maggior numero di core della CPU rende più veloce il calcolo scientifico?

Questo dipende da due fattori principali:

  1. La scalabilità parallela della vostra applicazione.
  2. Il limite di memoria della vostra applicazione.

È sempre bene capire quanto sia scalabile l’esecuzione dei vostri lavori.

Inoltre, se l’applicazione è legata alla memoria, sarà limitata dai canali ram e potrebbe fornire le migliori prestazioni con un numero inferiore di core. Tuttavia, spesso è un vantaggio avere molti core per avere più cache di livello superiore disponibile, anche se si utilizza regolarmente meno della metà dei core disponibili. Per un’applicazione ben scalabile, una CPU Intel o AMD a 32 core probabilmente garantirà un utilizzo adeguato e bilanciato dell’hardware e delle prestazioni.

Quali componenti hardware sono più importanti per le applicazioni di simulazione scientifica e ingegneristica?

I carichi di lavoro di simulazione sono il tipo più comune di elaborazione scientifica. Ciò include dinamica molecolare, chimica computazionale, FEA, CFD, fisica, praticamente tutto il calcolo scientifico e ingegneristico che non sia ricerca, ordinamento, corrispondenza di modelli o conteggio di qualcosa, come la genomica, ad esempio. Molti di questi flussi di lavoro di simulazione avranno requisiti diversi. Alcuni saranno altamente paralleli e altri saranno limitati dalla cache o dalla memoria. Le raccomandazioni hardware dipenderanno anche dalle dimensioni del problema; devi avere abbastanza memoria per eseguire il tuo lavoro! I fattori chiave che determinano le raccomandazioni hardware per i carichi di lavoro di simulazione sono:

  • Scalabilità parallela: questo deve essere determinato in base alla singola applicazione. Gli autori/fornitori del codice o la comunità degli utenti avranno informazioni che ne discutono.
  • Requisiti di memoria: questo, ancora una volta, dipende dall’applicazione, ma una regola pratica comune è quella di avere 4-8 GB di memoria CPU per core fisico. Ad esempio, una CPU a 64 core richiederebbe 256-512 GB di memoria.
  • Limitazioni di memoria: i principali differenziatori sono le simulazioni che coinvolgono “risolutori” basati su mesh numeriche che potrebbero essere vincolati alla memoria. Questo è un problema comune e non tenerne conto può comportare una configurazione di sistema che potrebbe essere sovradimensionata per numero di core e quantità di memoria e con un collo di bottiglia dovuto alla mancanza di canali di memoria. Sono consigliati Xeon di Intel e Threadripper PRO di AMD, nonché EPYC. Le CPU Dual EPYC forniranno 24 canali di memoria totali!

Un numero crescente di codici di simulazione vengono eseguiti anche su GPU con grande successo, invece che sulla tradizionale attenzione alla CPU. Quando c’è una versione accelerata da GPU di un’applicazione, probabilmente dovreste usarla! Tuttavia, molte applicazioni importanti non sono state portate su GPU a causa della difficoltà/complessità della programmazione. Il tempo lo dirà, ma gli algoritmi a precisione mista su GPU sono molto probabilmente il futuro!

Il calcolo scientifico funziona meglio con le CPU Intel o AMD?

Sia i processori Intel Xeon che AMD Threadripper PRO sono eccellenti. Entrambi i chip Xeon e Threadripper moderni supportano AVX512, ma le vecchie generazioni di hardware AMD erano limitate ad AVX2. Finché si acquista un sistema di ultima generazione e non una piattaforma di livello consumer, allora sono uguali. Tuttavia, i processori Xeon più recenti hanno un nuovo vantaggio: Advanced Matrix Extensions (AMX) e supporto per nuovi tipi di dati come BF16. Questi possono avere un grande impatto sui carichi di lavoro a precisione mista come l’elaborazione AI. Se la tua applicazione è specificamente collegata a Intel MKL o è stata creata utilizzando un compilatore Intel, allora una CPU Intel è una buona scelta.

Perché si consigliano Xeon o Threadripper Pro piuttosto che CPU di livello più “consumer”?

Il motivo più importante di questa raccomandazione sono i canali di memoria. Sia l’Intel Xeon W-3500 che l’AMD Threadripper Pro 7000 supportano 8 canali di memoria, il che può avere un impatto significativo sulle prestazioni per molte applicazioni scientifiche. Un’altra considerazione è che questi processori sono di livello “enterprise” e la piattaforma nel suo complesso è probabilmente robusta in caso di carico di calcolo sostenuto.

Scheda video (GPU)

Se la vostra applicazione dispone di accelerazione GPU (unità di elaborazione grafica), dovreste cercare di utilizzarla! Le prestazioni delle GPU possono essere molte volte superiori a quelle delle CPU per calcoli altamente paralleli.

Quale GPU (scheda video) è la migliore per la visualizzazione scientifica?

Se l’uso della GPU è la visualizzazione scientifica, una buona raccomandazione è una scheda NVIDIA RTX A-series di fascia alta, come la 4000 Ada o la 5000 Ada. Se si lavora con dati video, immagini molto grandi o simulazioni visive, i 48 GB di memoria della 6000 Ada possono essere un vantaggio. Per un tipico display desktop, le GPU NVIDIA di fascia bassa della serie professionale, come la 2000 Ada, possono essere sufficienti. Anche le GPU GeForce “consumer” di NVIDIA sono un’opzione. Qualsiasi modello, dalla RTX 4060 alla RTX 4090, è molto valido. Queste GPU sono eccellenti anche per i requisiti di visualizzazione 3D più impegnativi. Tuttavia, è una buona idea verificare con il fornitore o lo sviluppatore del software che si sta utilizzando se ha requisiti specifici per le GPU “professionali”.

Quali schede video sono consigliate per l’accelerazione del calcolo su GPU?

Ci sono alcune considerazioni da fare. Avete bisogno della doppia precisione (FP64) per la vostra applicazione? In questo caso, la scelta è limitata alla serie NVIDIA Compute, come la A100 o la H100. Queste GPU sono raffreddate passivamente e sono adatte all’uso in chassis montati su rack con la necessaria capacità di raffreddamento. Nessuna delle GPU RTX, consumer o professionali, dispone di un buon supporto per la doppia precisione.

Fortunatamente, molte applicazioni scientifiche che prevedono l’accelerazione tramite GPU funzionano con la precisione singola (FP32). In questo caso le GPU RTX di fascia alta offrono buone prestazioni e un costo relativamente basso. GPU come 5000 Ada e 6000 Ada sono di alta qualità e funzionano bene in configurazioni multi-GPU. Le GPU consumer come RTX 4080 e 4090 possono offrire ottime prestazioni, ma possono essere difficili da configurare in un sistema con più di due GPU a causa del design del raffreddamento e delle dimensioni fisiche.

Oltre alle considerazioni già menzionate, la dimensione della memoria può essere importante e in generale può essere un fattore limitante nell’uso delle GPU per il calcolo.

Di quanta VRAM (memoria video) ha bisogno il calcolo scientifico?

Questo dato può variare a seconda dell’applicazione. Molte applicazioni offrono una buona accelerazione con appena 12 GB di memoria della GPU. Tuttavia, se si lavora con lavori di grandi dimensioni o con grandi serie di dati, potrebbero essere necessari 24 GB (4500 Ada, RTX 4090) o 48 GB (6000 Ada). Per i lavori più impegnativi, la GPU di elaborazione H100 NVL di NVIDIA è dotata di ben 94 GB di VRAM!

Le GPU multiple migliorano le prestazioni dell’elaborazione scientifica?

Anche in questo caso dipende dall’applicazione. L’accelerazione multi-GPU non è automatica solo perché si dispone di più di una GPU nel sistema. Il software deve supportarla. Tuttavia, se l’applicazione scala bene distribuendo i dati o il lavoro tra le GPU, magari con Horovod (MPI), allora una workstation multi-GPU può offrire prestazioni che si avvicinano a quelle di un supercomputer di un passato non troppo lontano.

Il calcolo scientifico ha bisogno di una scheda video “professionale”?

Non necessariamente: molti calcoli scientifici importanti sono stati eseguiti su GPU NVIDIA consumer. Tuttavia, ci sono sicuramente degli aspetti da considerare, che abbiamo trattato in modo più dettagliato nelle domande precedenti (sopra).

Il calcolo scientifico funziona meglio con le GPU NVIDIA o AMD?

Grazie allo sviluppo di CUDA e alle numerose applicazioni che lo utilizzano, le GPU NVIDIA sono attualmente lo standard per l’elaborazione scientifica. Sebbene quasi tutte le applicazioni accelerate da GPU siano realizzate con CUDA, vi è un certo utilizzo di openCL (che è supportato dalle GPU AMD e NVIDIA) e vi sono utility come ROCm di AMD. Tuttavia, non sono molto utilizzate e possono essere difficili da configurare. Questa situazione cambierà sicuramente con l’aumento del lavoro svolto con i nuovi supercomputer accelerati da GPU AMD e con l’ingresso di Intel nel regno dell’accelerazione del calcolo su GPU.

Quando l’accelerazione via GPU non è appropriata per il calcolo scientifico?

Se è possibile utilizzare l’accelerazione via GPU, probabilmente lo si dovrebbe fare. Tuttavia, se la vostra applicazione ha una richiesta di memoria superiore a quella delle GPU o se il costo elevato delle GPU NVIDIA è proibitivo, allora potrebbe essere appropriata una CPU multi-core. Naturalmente, se l’applicazione non è stata scritta specificamente per supportare le GPU, non c’è alcuna magia che la faccia funzionare. Anche l’esigenza di una precisione doppia per i calcoli limita l’uso di CPU o di GPU NVIDIA di classe computazionale, queste ultime generalmente non sono adatte a una workstation e hanno un costo elevato (ma potenzialmente offrono prestazioni astronomiche).

Memoria (RAM)

Le prestazioni e la capacità della memoria sono molto importanti in molte applicazioni scientifiche. In effetti, la larghezza di banda della memoria sarà il principale collo di bottiglia dei programmi legati alla memoria. Le applicazioni che prevedono l’uso di “solutori” per le simulazioni possono risolvere equazioni differenziali che spesso sono limitate dalla memoria. Ciò si ricollega alla nostra raccomandazione di CPU con 8 canali di memoria.

Di quanta RAM ha bisogno il Calcolo Scientifico?

Dal momento che le applicazioni e le dimensioni dei lavori sono così numerose, questo dipende in larga misura dal caso d’uso specifico. È una fortuna che le moderne piattaforme workstation Intel e AMD supportino configurazioni di memoria di grandi dimensioni anche nei sistemi a singolo socket. Per i flussi di lavoro incentrati su calcoli basati sulla CPU, è normale disporre di una memoria da 256 a 512 GB, ma anche di 1 TB.

Di quanta memoria di sistema ho bisogno se uso l’accelerazione via GPU?

Esistono indicazioni generali in merito. Si raccomanda vivamente di configurare il sistema con una quantità di memoria di sistema (RAM) almeno doppia rispetto alla memoria totale della GPU (VRAM) di tutte le schede. Ad esempio, un sistema con due GPU RTX 4090 (2 x 24 = 48 GB di VRAM totale) dovrebbe avere almeno 96 GB, ma più comunemente 128 GB di memoria di sistema. Si tratta di una quantità più che doppia, ma è una configurazione tipica dei moduli di memoria (a differenza dei 96 GB). Questa raccomandazione sulla memoria di sistema serve a garantire che la memoria possa essere mappata dallo spazio della GPU a quello della CPU e a fornire lo staging e il buffering per il trasferimento di istruzioni e dati senza stallo.

Archiviazione (SSD/HDD)

L’archiviazione è una di quelle aree in cui “più di quanto si pensa sia necessario” è probabilmente una buona idea. La quantità effettiva dipende dal tipo di dati con cui si lavora. Può variare da qualche decina di gigabyte a diversi petabyte!

Qual è la configurazione di storage migliore per il calcolo scientifico?

Una buona raccomandazione generale è quella di utilizzare un’unità NVMe ad alte prestazioni con capacità di 1 TB come unità principale del sistema, per il sistema operativo e le applicazioni. È possibile configurare ulteriori unità di archiviazione NVMe per le esigenze dei dati, tuttavia sono disponibili capacità maggiori con le unità SSD “standard” (basate su SATA). Per esigenze di archiviazione molto elevate, le vecchie unità a piatti possono offrire capacità ancora maggiori. Per esigenze eccezionalmente elevate, i server di archiviazione esterni possono essere l’opzione migliore.

La mia applicazione consiglia di configurare uno “spazio di elaborazione temporaneo”, cosa devo usare?

Lo spazio di elaborazione temporaneo è una configurazione spesso utilizzata nelle applicazioni di chimica quantistica per memorizzare gli integrali. Esistono altre applicazioni che si basano sulla disponibilità di uno spazio di elaborazione temporaneo. In questi casi, un’unità NVMe aggiuntiva sarebbe un’ottima opzione. Tuttavia, se esiste un’opzione di configurazione nel software per evitare l’uso di questo tipo di spazio, questa potrebbe essere l’opzione migliore. La necessità di spazio temporaneo era comune quando la capacità della memoria di sistema era ridotta. È probabile che sia molto meglio aumentare le dimensioni della RAM se ciò consente di evitare lo spazio temporaneo, dato che la memoria è di ordini di grandezza più veloce persino delle unità SSD ad alta velocità.

Cercate una workstation scientifica?

Costruiamo computer su misura per il vostro flusso di lavoro.

Non sapete da dove cominciare? Possiamo aiutarvi!

Contattate oggi stesso uno dei nostri consulenti tecnici.