bamboon ed e Doron sono corretti che molte variabili in gioco sono, ma se si dispone di una dimensione di ingresso sintonizzabile n
, si può capire la forte ridimensionamento e debole ridimensionamento del codice.
Il forte ridimensionamento si riferisce alla risoluzione della dimensione del problema (ad esempio n = 1M
) e alla variazione del numero di thread disponibili per il calcolo. Il ridimensionamento debole si riferisce alla risoluzione della dimensione del problema per thread (n = 10k/thread
) e alla variazione del numero di thread disponibili per il calcolo.
È vero che ci sono un sacco di variabili al lavoro in qualsiasi programma - tuttavia se si dispone di alcune dimensioni di input di base n
, è possibile ottenere una parvenza di ridimensionamento. Su un simulatore n-body ho sviluppato alcuni anni fa, ho variato i thread per le dimensioni fisse e le dimensioni di input per thread e sono stato in grado di calcolare ragionevolmente una misura approssimativa di quanto bene il codice multithreaded ridimensionato.
Poiché si dispone solo di 4 core, è possibile calcolare il ridimensionamento fino a 4 thread. Questo limita fortemente la tua capacità di vedere quanto sia scalabile per carichi ampiamente threaded. Ma questo potrebbe non essere un problema se la tua applicazione viene utilizzata solo su macchine in cui vi sono piccoli core count.
Hai davvero bisogno di pormi la domanda: sarà usato su 10, 20, 40+ thread? Se lo è, l'unico modo per determinare con precisione il ridimensionamento a quei regimi è di metterlo a punto in realtà su una piattaforma in cui l'hardware è disponibile.
Nota a margine: seconda dell'applicazione in uso, potrebbe non importa che hai solo 4 core. Alcuni carichi di lavoro scalano con l'aumento dei thread indipendentemente dal numero reale di core disponibili, se molti di questi thread trascorrono del tempo "in attesa" che qualcosa accada (ad esempio server Web).Se stai facendo puro calcolo, questo non è il caso
fonte
2012-03-10 01:56:17
+1 per immagini. Risposta breve, non puoi fare a meno di fare ipotesi plausibili. – Mysticial
@Mysticial ma non dovresti essere in grado di misurare con uno strumento come Intel VTune? –
@ConradFrix Non quando stai provando a indovinare le prestazioni su 16 core che non hai. È possibile, d'altra parte, utilizzare VTune per profilare le prestazioni su 4 core e basarsi su quei numeri per tentare di estrapolare a 16 core. Sarebbe, più o meno, una "supposizione istruita". – Mysticial