Comunicazione ambientale in supercomputer


10

Sto cercando riferimenti credibili che affermino quante risorse i supercomputer spendono per coordinare rispetto a svolgere un vero lavoro relativo alle attività. Le risorse potrebbero essere disponibili potenza di elaborazione, ma anche Watts sembra un'unità valida.

Credo che uno dei miei professori o libri di testo abbia detto una volta che in sistemi fortemente paralleli, fino alla metà della potenza di elaborazione disponibile viene spesa per coordinare il compito e il passaggio dei messaggi. Sfortunatamente, non riesco a trovare questo riferimento o qualsiasi altro materiale su questa proporzione.

Mi rendo conto che questo differirà molto a seconda dell'architettura del supercomputer e le implementazioni moderne probabilmente sono più efficienti in questo senso, quindi una panoramica di questa metrica tra più architetture o evoluzioni (prima e dopo l'hardware dedicato per il passaggio dei messaggi) sarebbe ancora migliore.


2
È possibile ottenere facilmente qualsiasi numero desiderato scegliendo un computer, un algoritmo e un'implementazione appropriati.
David Ketcheson,

Risposte:


10

2/3n3+2n2n

Le misure di riferimento includono RPEAK (il numero massimo teorico di operazioni in virgola mobile al secondo per il sistema) e RMAX (il numero massimo di operazioni conseguite al secondo nel benchmark HPLinpack).

È tipico che RPEAK sia una frazione sostanziale di RMAX, indicando che in questo compito di riferimento, gli attuali supercomputer possono ottenere una frazione significativa delle loro prestazioni teoriche di picco. Ad esempio, nelle classifiche dei supercomputer TOP500 di novembre 2015, la macchina più veloce, Tianhe-2, ha RPEAK = 54.902 petaflop e RMAX = 33.863 petaflop.

Tuttavia, il benchmark HPLinpack è ampiamente considerato come non rappresentativo dei carichi di lavoro attuali. I risultati di HPlinpack in genere sovrastimano le prestazioni dei supercomputer nelle applicazioni reali di un fattore importante.

Un nuovo benchmark, chiamato HPCG, è in fase di sviluppo. Questo benchmark comprende operazioni comunemente eseguite in metodi iterativi per la soluzione di grandi sistemi di equazioni sparse derivanti da PDE discretizzate. Questo carico di lavoro è molto più impegnativo per i computer ad alte prestazioni. È anche molto più rappresentativo di ciò che i supercomputer vengono utilizzati nella pratica.

Alcuni primi risultati di HPCG stanno arrivando a meno del 5% di RPEAK. Ad esempio, Tianhe-2 ha RPEAK = 54.902 petaflop e HPCG a 0,58 petaflop (vedi riferimento sotto a una presentazione su HPCG).

I benchmark TOP500 HPLinpack sono disponibili all'indirizzo:

http://www.top500.org/

Una presentazione su HPCG è disponibile all'indirizzo:

http://www.hpcg-benchmark.org/downloads/isc15/HPCG-ISC15-FINAL-SLIDES_update1.pdf

Il sito Web di HPCG è all'indirizzo

http://www.hpcg-benchmark.org/


1
2/3n3+2n2

3
Questo non sembra rispondere alla domanda, poiché non dice nulla sul passaggio dei messaggi.
David Ketcheson,

Risponde parzialmente alla domanda, nel senso che questi parametri indicano quanto efficientemente vengono utilizzate le unità a virgola mobile: puoi sottrarre da una per scoprire quanto tempo viene speso per tutto il resto, incluso il passaggio di messaggi tra le altre cose.
Brian Borchers,

6

La risposta onesta è che non lo sappiamo. La risposta dipende fortemente da ciò che viene effettivamente eseguito e dal codice che l'utente ha scritto. Come sottolinea Brian Borchers, c'è una grande differenza tra due benchmark in cui abbiamo tutto il codice e presumibilmente sappiamo cosa sta facendo quel codice, ma c'è molto disaccordo su quanto sia rappresentativo questo codice di ciò che gli utenti dei supercomputer stanno effettivamente facendo. Senza un'analisi dettagliata del codice sorgente e una pesante strumentazione di codici reali su macchine reali, trovare questo rapporto è quasi impossibile. Ci sono alcuni progetti che stanno iniziando a raccogliere dati che potrebbero essere in grado di avvicinare la comunità alla risposta a questa domanda, ma non è per niente risolta.

In effetti, la domanda non è nemmeno chiara. Se la scheda di comunicazione di un nodo del cluster ha un processore che può essere utilizzato solo per la comunicazione, come si fa a contare il tempo che questa scheda trascorre inattivo non gestendo la comunicazione (né altro)? Cioè, ciò che conta come "potenza di elaborazione disponibile"? Contiamo i programmi scritti male che hanno routine di elaborazione e comunicazione non ottimizzate uguali a quelle ottimizzate? Che cosa succede se qualcuno usa un anti-pattern noto nel suo codice che deliberatamente sotto-utilizza la CPU? Che dire di programmi paralleli imbarazzanti che non comunicano affatto (questi vengono eseguiti su supercomputer, te lo prometto)?

Non perderei tempo a cercare di quantificare un'osservazione improvvisata in un libro o dal tuo professore. Questi tipi di affermazioni sono lì per ricordarci che la programmazione parallela è difficile e generalmente condotta male. Inoltre, i supercomputer non sono perfettamente progettati per eliminare o ottimizzare tutti i rifiuti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.