Velocità di clock rispetto al numero di core per la simulazione al computer in parallelo [duplicato]


0

La mia domanda è simile ad alcuni "speed vs. core" - domande che sono già state poste su questo sito. Tuttavia, mi interessano alcuni punti molto specifici e tecnici. Quindi spero che la mia domanda possa beneficiare di una "risposta" invece di essere basata unicamente sull'opinione pubblica.

Nel mio posto di lavoro, ci avviciniamo frequentemente a determinati problemi statistici usando la simulazione al computer. Il software che usiamo è in gran parte destinato ai single core, ma lo eseguiamo in parallelo usando più istanze di questi programmi. Le simulazioni sono intensive dal punto di vista computazionale e l'iterazione può richiedere fino a un'ora per essere completata.

Per migliorare la velocità di questi calcoli, mi è stato chiesto di proporre alcuni modelli che sarebbero più adatti. Tuttavia, non sono sicuro se, a questo punto, i calcoli trarrebbero vantaggio da una maggiore velocità di clock più di quanto non provocherebbero da processi più paralleli.

I computer che attualmente utilizziamo sono soluzioni su scala server che contengono più CPU a velocità relativamente elevata (16 core fisici, 2,9 GHz ciascuno e nessuna GPU). Quindi la decisione si riduce a due opzioni:

  • investire in macchine simili con velocità di clock leggermente superiore (ad es. 3,2 GHz) e lo stesso numero di core (diciamo 16), o in alternativa ...
  • scendere alla velocità di clock (ad es. 2,6 GHz) e andare per un numero maggiore di core (diciamo 20 o 24).

Non sono sicuro che una maggiore velocità di clock possa ripagare anche in applicazioni ad alta intensità di calcolo poiché presumo che le prestazioni non aumentino linearmente con la velocità di clock. A rigor di termini, potrei semplicemente affrontare il problema in questo modo:

  • 3,2 GHz * 16 core = 51,2 GHz, o in alternativa ...
  • 2,5 GHz * 24 core = 60,0 GHz

Tuttavia, sono abbastanza sicuro che questo calcolo sia difettoso in vari modi. Ma in che modo esattamente? Il denaro non è davvero un problema in questo caso paarticolare, e il calcolo che usa GPU deve essere escluso, sfortunatamente.

Le macchine eseguiranno Windows Server 2012 R2 e verranno utilizzate esclusivamente per questo tipo di calcoli. Tutti i programmi coinvolti sono ottimizzati per 64 bit, ma occasionalmente sono coinvolti anche programmi software a 32 bit. La memoria e l'HDD non dovrebbero essere un fattore enorme da considerare.

Saluti!


Come nel caso del dupe: dipende dai processi e dal modo in cui utilizzano il sistema. Quindi (IMO) non c'è una singola risposta da darti o un semplice calcolo che puoi fare per determinare quale è meglio. Confronta e profila il tuo codice su più piattaforme / configurazioni e poi acquista qualsiasi configurazione su cui gira meglio. Se non hai il tempo di eseguire la profilatura, quindi ottenere una configurazione con il maggior numero di core, eseguendo la massima velocità che ti puoi permettere.
Ƭᴇcʜιᴇ007

1
Se il software utilizza solo un singolo core, si desidera che quel singolo core sia il più veloce possibile in modo che una particolare istanza del software completi il ​​suo compito il più rapidamente possibile. Perché stai moltiplicando il numero di core e la frequenza di clock. Non funziona così. Sei davvero corretto. L'aumento delle prestazioni non sarà lineare ma è possibile quindi identificare il successivo collo di bottiglia. Io personalmente utilizzerei solo software computazionalmente NON a thread singolo.
Ramhound

@ Ramhound: Mi rendo conto che non funziona così, ma mi interessa Come Funziona, cioè, quali fattori alternativi devo prendere in considerazione. In effetti i programmi sono single core, ma li eseguiamo comunque in parallelo. Questo viene fatto usando un processo "principale" che avvia più istanze "worker" dello stesso programma. Quando il calcolo è intenso come per la CPU, come sopra, le prestazioni si moltiplica effettivamente con il numero di core su una data macchina. Tuttavia, ciò non consente di trarre conclusioni su ciò che porta il guadagno maggiore nello scenario sopra descritto: velocità di clock o core fisici.
SimonG

1
Non ci sono abbastanza informazioni per concludere cosa sarebbe meglio. Se hai 5 compiti, e ogni attività richiede 1 ora per essere completata su un singolo processore centrale che funziona a 3 Ghz, allora potresti completare 5 attività in un'ora se quel processore ha 5 core in esecuzione a 3 Ghz. Se si desidera ottenere le migliori prestazioni, massimizzare il numero di core e la frequenza in modo che le prestazioni siano lineari.
Ramhound

@SimonG, Tutte le risposte in questo argomento (e argomenti collegati) sono in gran parte errate. Devi comprare computer con la più grande cache on-chip disponibile, vedi superuser.com/questions/543702/...
Ale..chenski

Risposte:


1

I calcoli non sono precisi. Sono dal punto di vista matematico, ma nel calcolo è effettivamente necessario moltiplicare da 0,9 a 0,75 per ottenere il vero "potere" E più core / processori significano un numero inferiore. Ciò accade a causa della potenza del computer che è necessario per parallelizzare le attività e loro per costruire il risultato finale da diversi thread.


1
Questa osservazione aiuta già il mio scopo. Tuttavia, ritengo che, nello scenario dato, lo sforzo necessario per parallelizzare il processo sia piuttosto limitato perché i calcoli richiedono un po 'di tempo in modo tale che la comunicazione tra i processi principale e quello di lavoro non avvenga troppo frequentemente.
SimonG
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.