Perché non siamo stati in grado di sviluppare una teoria della complessità unificata del calcolo distribuito?


41

Il campo dell'informatica distribuita non è andato molto bene nello sviluppo di un'unica teoria matematica per descrivere algoritmi distribuiti. Esistono diversi "modelli" e framework di calcolo distribuito che semplicemente non sono compatibili tra loro. La pura esplosione di diverse proprietà temporali (asincronia, sincronia, sincronia parziale), varie primitive di comunicazione (trasmissione di messaggi vs. memoria condivisa, trasmissione vs. unicast), più modelli di errore (arresto di arresto, ripristino di emergenza, invio di omissioni, bizantino e così via on) ci ha lasciato con un numero intrattabile di modelli di sistema, framework e metodologie, che il confronto tra risultati di solvibilità relativi e limiti inferiori attraverso questi modelli e framework è diventato arduo, intrattabile e, a volte, impossibile.

La mia domanda è molto semplice, perché è così? Cosa c'è di così profondamente diverso nel calcolo distribuito (dalla sua controparte sequenziale) che non siamo riusciti a mettere insieme la ricerca in una teoria unificata del calcolo distribuito? Con il calcolo sequenziale, le macchine di Turing, le funzioni ricorsive e il calcolo Lambda sono stati troncati per essere equivalenti. È stato solo un colpo di fortuna o abbiamo fatto davvero un buon lavoro nell'incapsulare il calcolo sequenziale in un modo che non è stato ancora realizzato con il calcolo distribuito?

In altre parole, il calcolo distribuito è intrinsecamente inflessibile per una teoria elegante (e se sì, come e perché?), O semplicemente non siamo abbastanza intelligenti da scoprire una tale teoria?

L'unico riferimento che ho trovato per risolvere questo problema è: " Valutare due decenni di ricerca sulla teoria dell'informatica distribuita " di Fischer e Merritt DOI: 10.1007 / s00446-003-0096-6

Eventuali riferimenti o esposizioni sarebbero davvero utili.

Risposte:


26

La mia opinione è che il modello di calcolo di Turing con motivazioni astratte sia stato una buona approssimazione della tecnologia fino a poco tempo fa, mentre i modelli di elaborazione distribuita, sin dall'inizio, sono stati motivati ​​dal mondo reale, che è sempre più disordinato delle astrazioni.

Da, diciamo, 1940-1995, la dimensione delle istanze problematiche, la relativa "non importanza" del parallelismo e della concorrenza e la macro-scala dei dispositivi di elaborazione, tutti "cospirati" per mantenere le macchine Turing un'eccellente approssimazione dei computer del mondo reale. Tuttavia, una volta che inizi a gestire enormi set di dati, necessità onnipresente di concorrenza, biologia attraverso l'obiettivo algoritmico, ecc., È molto meno chiaro se esiste un modello di calcolo "intuitivo". Forse i problemi difficili in un modello non sono difficili - strettamente meno computazionalmente complessi - in un altro. Quindi credo che la complessità computazionale tradizionale stia finalmente raggiungendo (!) Il calcolo distribuito, iniziando a considerare molteplici modelli di strutture di calcolo e dati, motivati ​​da considerazioni del mondo reale.


7
Considera anche le domande che definiscono i rispettivi campi. "Supponiamo che tu possa calcolare perfettamente. Quali sono i limiti di ciò che puoi e non puoi fare?" vs. "Supponi di avere un canale, un processore difettoso o supponi di avere un avversario. Come puoi calcolare con successo di fronte a quegli ostacoli?" È più probabile che la prima domanda generi risposte "pulite". Il secondo è una richiesta per scientificizzare il disordine.
Aaron Sterling,

21

Risponderò a questa domanda dal punto di vista dei problemi grafici classici (o problemi di input / output): abbiamo una rete, ogni nodo riceve qualcosa come input e ogni nodo deve produrre qualcosa come output. Immagino che questo sia il più vicino al mondo della complessità computazionale tradizionale.

Sto certamente di parte, ma credo che in questa impostazione, non è un semplice e il modello comunemente usata di Distributed Computing: algoritmi distribuiti sincrone , con la definizione che di tempo = numero di giri sincroni in esecuzione . Nella terminologia di Peleg, questo è il modello LOCALE .

Questo modello è bello in quanto ha pochissime "parti mobili", nessun parametro, ecc. Tuttavia, è molto concreto: ha senso dire che il tempo di esecuzione di un algoritmo è esattamente 15 in questo modello. E puoi dimostrare limiti inferiori incondizionati e teorici delle informazioni: da questa prospettiva, la complessità distribuita di molti problemi dei grafici (ad esempio, la colorazione dei grafici) è abbastanza ben compresa.

Questo modello fornisce anche un approccio unificato a molti aspetti del calcolo distribuito:

  • Passaggio di messaggi vs. memoria condivisa, trasmissione vs. unicast: irrilevante in questo modello.
  • α
  • Ti piacerebbe avere un algoritmo per reti dinamiche o ti piacerebbe recuperare da guasti? Bene, se il tuo algoritmo sincrono è deterministico, puoi usarlo per costruire un algoritmo auto-stabilizzante . Ancora una volta, la complessità temporale è sostanzialmente inalterata.

Ora tutto questo va bene finché studi problemi che sono "veramente distribuiti", nel senso che il tempo di esecuzione del tuo algoritmo è inferiore al diametro del grafico , vale a dire che nessun nodo deve avere informazioni complete sulla struttura del grafico. Tuttavia, ci sono anche molti problemi intrinsecamente globali: l'algoritmo più veloce in questo modello ha un tempo di esecuzione lineare nel diametro del grafico. Nello studio di questi problemi, il modello di cui sopra non ha più senso e quindi dobbiamo ricorrere a qualcos'altro. In genere, si inizia a prestare attenzione al numero totale di messaggi o bit comunicati nella rete. Questo è uno dei motivi per cui abbiamo diversi modelli diversi.


Quindi, naturalmente, abbiamo il problema che la comunità informatica distribuita è in realtà due comunità diverse, con sorprendentemente poche cose in comune . Se raggruppi tutti i modelli di due comunità, sembrerà sicuramente un po 'confuso ... La mia risposta sopra è relativa solo a metà della comunità; Confido che gli altri riempiranno per quanto riguarda l'altra metà.


Se lo capisco correttamente, il punto è che esiste una teoria elegante solo per i sistemi sincroni e non molto altro. Rispetto a sistemi diversi da quelli sincroni, stiamo fondendo problemi / focolai di due comunità altrimenti diverse, e questo presenta problemi metodologici con lo sviluppo di una singola teoria. Ho capito bene i tuoi argomenti?
Srikanth Sastry

Grazie per la risposta molto istruttiva. Lo accetterei come LA risposta.
Mohammad Al-Turkistany,

5

Un'idea romantica per catturare vari modelli di calcolo distribuito è stata attraverso la topologia algebrica. L'idea principale è quella di costruire complessi simpliciali lasciando che i punti siano stati di processo, ognuno etichettato con un ID di processo. Questo è un primer sull'argomento. La risposta più vicina alla tua domanda è stata probabilmente toccata da Eli Gafni nel suo articolo - Informatica distribuita - Un barlume di una teoria. Nel suo articolo, mostra simulazioni su come iniziare con la memoria condivisa asincrona per due-tre processori (per fail-stop e bizantini), mostra come applicare questo al modello di passaggio dei messaggi. Fondamentale per comprendere le sue simulazioni è l'idea di visualizzare topologicamente un calcolo distribuito


4

Penso che la situazione appaia piuttosto diversa se vista nel contesto: a partire dai primi lavori e dai risultati di impossibilità sull'accordo bizantino ( PSL80 LSP82 FLP85), è stato presto chiaro che i problemi fondamentali nell'informatica distribuita possono essere risolti solo con ipotesi di sincronia rigorosa e un alto grado di ridondanza. Poiché questi limiti inferiori di risorse teoriche incondizionate sono stati considerati non realizzabili per scopi pratici, la ricerca si è concentrata sullo sviluppo di modelli più raffinati che consentivano scambi sempre più accurati di ipotesi (ad esempio sulle garanzie temporali o sulle modalità di fallimento) rispetto alle garanzie (cioè il numero di guasti simultanei di quale tipo su quale tipo di componenti tollerato, ad esempio processori, collegamenti) al fine di fornire ai progettisti del sistema gli strumenti per trovare il giusto compromesso per il sistema a portata di mano.


Comprendo che i modelli raffinati sono stati introdotti per comprendere la solvibilità "pratica" dei problemi nello spazio distribuito. Ci si aspetterebbe che questi modelli a grana fine si sistemino ordinatamente in una gerarchia per quanto riguarda la solvibilità, la complessità del tempo e la complessità del messaggio. Sfortunatamente, non è così. La mia domanda qui è: qual è la ragione di questa balcanizzazione? Se si tratta di alcuni attributi inerenti al calcolo distribuito, quali sono?
Srikanth Sastry,
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.