QNA > Q > Quanto Sono Potenti 20 Cluster Di Raspberry Pi Rispetto A Una Singola Scheda I7?

Quanto sono potenti 20 cluster di Raspberry Pi rispetto a una singola scheda i7?

tl;dr: Implementare applicazioni per cluster è completamente diverso dall'implementare applicazioni su un singolo computer. Senza un benchmarking attentamente studiato le loro prestazioni non sono paragonabili. La mia ipotesi è che un cluster sia più lento per la maggior parte dei problemi. I cluster sono una buona scelta se il problema può essere decomposto in molti sottoproblemi indipendenti e se la dimensione del problema è troppo grande per qualsiasi singolo computer da gestire. Mi vengono in mente l'apprendimento automatico, il data mining e l'implementazione di motori di ricerca.

-

Onestamente, non posso dirlo senza un benchmarking. Quello che posso dire con certezza è che un cluster di 20 macchine ha un tipo di performance completamente diverso da un singolo computer con un Intel Core i7. Spiegherò perché.

Un normale computer desktop dotato di un Core i7 ha un singolo spazio di indirizzamento. Questo significa che i programmi possono (per lo più) assumere che tutte le parti della RAM possono essere raggiunte con più o meno le stesse prestazioni (tempo di accesso, larghezza di banda alla CPU/disco)*.

La principale differenza con i cluster è che lo spazio degli indirizzi dei nodi non è condiviso. Se i dati di un altro nodo sono necessari, i dati devono essere trasferiti attraverso la rete. Questo porta alle seguenti sfide:

  1. La maggior parte dei programmi non può fare uso di un cluster. (In realtà, la maggior parte dei programmi non può nemmeno fare uso di più di un core sulla stessa macchina). Quando un programma per un cluster viene creato, allora la comunicazione attraverso il passaggio di messaggi deve essere eseguita. Librerie come MPICH, OpenMPI e ZeroMQ rendono la vita più facile, ma il programmatore deve sapere cosa sta facendo.
  2. Solo pochi algoritmi (tra cui quelli per i cosiddetti problemi "embarrassingly parallel") producono un aumento lineare della velocità, ad esempio, raddoppiando il numero di nodi, si dimezza il tempo di calcolo. Spesso però i nodi devono coordinarsi o condividere risultati intermedi. Se i nodi lo fanno molto spesso è game over perché la rete è così lenta rispetto ai bus interni del nodo.
  3. Ad un certo punto la rete e l'overhead di comunicazione diventeranno colli di bottiglia. Allora l'aggiunta di altri nodi non aumenterà più le prestazioni. Con 20 nodi si potrebbe già raggiungere questo limite, ma sono necessari dei benchmark per verificare questa affermazione.

*) In realtà, questo è completamente falso. I seguenti fattori lo trasformano in una storia complessa:

  • Cache per rendere più veloce l'accesso ai dati usati di frequente,
  • Paging (mappatura dello spazio virtuale degli indirizzi della RAM per processo nello spazio reale),
  • Swapping (spostamento di pagine nella memoria non volatile, lenta se si esaurisce la RAM),
  • NUMA (Non-Uniform Memory Access), che significa che alcune CPU/Core della CPU possono accedere a parti della RAM più velocemente,
  • e sicuramente altri fattori che non conosco...

**) Certamente, i nodi Raspberry Pi battono questo perché i cavi corti riducono la latenza di rete al minimo. D'altra parte, solo 10/100 MBit Ethernet è supportato.

Di Nella

Raspberry Pi è un microprocessore o un microcontrollore? :: Come si confronta un Raspberry Pi con un i3?
Link utili