1. Architettura e hardware:
* Calcolo parallelo:
* In genere coinvolge strettamente accoppiato processori all'interno di una singola macchina o un cluster piccolo.
* I processori condividono spesso uno spazio di memoria (architettura di memoria condivisa) o hanno interconnessioni molto rapide per il passaggio dei messaggi (ad esempio all'interno di un supercomputer).
* Focus è sulla minimizzazione della latenza per la comunicazione tra i processori.
* Spesso si basa su architetture hardware specializzate come CPU multi-core, GPU o processori specializzati.
* Calcolo distribuito:
* Coinvolge accoppiato liberamente I processori si sono diffusi su più macchine, spesso disperse geograficamente.
* Macchine non condividono uno spazio di memoria comune . Ogni macchina ha la sua memoria locale.
* La comunicazione si basa su connessioni di rete , che sono generalmente più lenti e meno affidabili delle interconnessi utilizzati nei sistemi paralleli.
* Utilizza l'hardware delle materie prime (server standard, desktop, ecc.) Collegato da una rete (ad es. LAN, WAN, Internet).
2. Comunicazione:
* Calcolo parallelo:
* Memoria condivisa: I processori comunicano leggendo e scrivendo in una posizione di memoria condivisa. Richiede attenti meccanismi di sincronizzazione (blocchi, semafori) per evitare le condizioni di razza.
* Passaggio di messaggio: I messaggi espliciti vengono inviati tra i processori. Ciò è più comune in cluster strettamente accoppiati in cui la condivisione della memoria diretta non è fattibile o efficiente.
* La comunicazione è generalmente rapida e bassa latenza .
* Calcolo distribuito:
* Passaggio di messaggio: La comunicazione avviene principalmente attraverso i messaggi passati sulla rete. Gli esempi includono TCP/IP, HTTP o protocolli specializzati.
* Chiamate di procedura remota (RPC): Un'astrazione comune in cui un programma su una macchina chiama una procedura su un'altra macchina.
* La comunicazione è generalmente più lenta e più alta a causa delle spese generali di rete. Anche i guasti della rete sono una delle principali preoccupazioni.
3. Modello di programmazione:
* Calcolo parallelo:
* I modelli di programmazione spesso assumono uno spazio di memoria condiviso e richiedono un'attenta gestione della sincronizzazione e della coerenza dei dati.
* I modelli di programmazione comuni includono:
* Memoria condivisa: OpenMP, pthreads
* Passaggio di messaggio: MPI (interfaccia di passaggio del messaggio)
*Più facile da programmare rispetto al calcolo distribuito, *Quando si utilizza la memoria condivisa *, poiché gli sviluppatori non devono gestire esplicitamente i dettagli della comunicazione. Il passaggio del messaggio nel calcolo parallelo è ancora complesso, ma generalmente più semplice rispetto ai sistemi distribuiti.
* Calcolo distribuito:
* I modelli di programmazione si concentrano spesso sulla tolleranza ai guasti, sulla distribuzione dei dati e sulla gestione dei problemi di rete.
* I modelli di programmazione comuni includono:
* MapReduce (Hadoop): Per l'elaborazione dei dati su larga scala.
* Microservizi: Progettazione di applicazioni come raccolta di piccoli servizi indipendenti.
* code di messaggi (ad es. RabbitMQ, Kafka): Per la comunicazione asincrona tra i servizi.
* Programmazione più complessa rispetto al calcolo parallelo perché gli sviluppatori devono gestire esplicitamente la comunicazione, la serializzazione dei dati e la tolleranza ai guasti.
4. Tolleranza agli errori:
* Calcolo parallelo:
* Il fallimento di un singolo processore può spesso abbattere l'intero sistema, specialmente nelle architetture di memoria condivisa.
* La tolleranza ai guasti è generalmente meno preoccupata rispetto ai sistemi distribuiti, poiché vengono spesso utilizzati in ambienti controllati.
* Calcolo distribuito:
* La tolleranza agli errori è una considerazione di progettazione critica. Il sistema deve essere in grado di continuare a funzionare anche se alcune macchine falliscono.
* Le tecniche includono:
* Replica: I dati e i calcoli sono duplicati su più macchine.
* Checkpointing: Salvare periodicamente lo stato di un calcolo in modo che possa essere riavviato se si verifica un fallimento.
* Algoritmi di consenso (ad es. Paxos, zattera): Per garantire un accordo tra le macchine in presenza di fallimenti.
5. Scalabilità:
* Calcolo parallelo:
* La scalabilità è spesso limitata dall'architettura della macchina. Il ridimensionamento in genere significa aggiungere più processori o memoria alla stessa macchina, che può essere costosa e ha limiti fisici.
* Il ridimensionamento a un numero molto elevato di processori diventa sempre più difficile a causa dei colli di bottiglia superiori e di sincronizzazione della comunicazione.
* Calcolo distribuito:
* altamente scalabile. Scala facilmente aggiungendo più macchine alla rete.
* È possibile gestire enormi quantità di dati e calcoli distribuendo il carico di lavoro attraverso un cluster di grandi dimensioni.
* Il ridimensionamento orizzontale (aggiunta più macchine) è spesso più economico del ridimensionamento verticale (aggiornamento di una singola macchina).
6. Esempi:
* Calcolo parallelo:
* Simulazioni scientifiche (previsioni meteorologiche, fluidodinamica computazionale).
* Database ad alte prestazioni in esecuzione su un server multi-core.
* Elaborazione di immagini e video su una GPU.
* Calcolo distribuito:
* Motori di ricerca (Google, Bing).
* Social network (Facebook, Twitter).
* Piattaforme cloud computing (AWS, Azure, GCP).
* Piattaforme di e-commerce (Amazon, eBay).
* Network di criptovaluta (Bitcoin, Ethereum).
In sintesi:
| Caratteristica | Calcolo parallelo | Calcolo distribuito |
| -------------------- | ------------------------------------------------------------------ ------------------------------------------------------------------- |
| Architettura | Memoria strettamente accoppiata, spesso condivisa. | Vagamente accoppiato, nessuna memoria condivisa. |
| Comunicazione | Rapido, bassa latenza (memoria condivisa o interconnessioni rapide). | Più lento e ad alta latenza (basato sulla rete). |
| Programmazione | Più semplice (memoria condivisa), complesso con passaggio di messaggi | Più complesso (comunicazione esplicita, tolleranza alle guasti). |
| tolleranza agli errori | Meno enfasi, singolo punto di fallimento. | Considerazione di progettazione critica, ridondanza. |
| Scalabilità | Limitato dall'architettura hardware. | Ridimensionamento orizzontale altamente scalabile. |
Pensala in questo modo:
* Calcolo parallelo: Un team di chef che lavorano fianco a fianco nella *stessa cucina *, che condividono ingredienti e attrezzature, per preparare rapidamente un pasto.
* Calcolo distribuito: Una rete di ristoranti in diverse città, ognuna con la propria cucina e personale, che collabora per evadere un grande ordine di ristorazione. Devono comunicare ordini e coordinare la consegna.
networking © www.354353.com