Come si fa un programma abilitato per il cluster?

3

Nel cluster computing, sembrano esserci due opzioni: reindirizzamento delle attività e divisione delle attività. Il reindirizzamento delle attività sembra abbastanza semplice, è sufficiente che il master invii le piccole chiamate ad altri nodi nel cluster per l'elaborazione (ad esempio cluster di server web (credo)). La divisione delle attività sembra tuttavia selvaggiamente più complessa. Dato che non penso che tu possa avere due thread dello stesso programma eseguiti su macchine diverse, significa che devi dividere il lavoro.

Come se si dividesse il lavoro? Riesco a vedere alcune cose come il rendering o la codifica video solo perché puoi dire a ogni nodo di lavorare su una parte diversa del video, ma quando vuoi fare cose come calcola la cifra di 5 trilioni di torta , come lo divideresti? O anche nella scienza in cui è necessario simulare il tempo o altre attività ad alta intensità di risorse?

In breve, come dividi le attività che non sono realmente progettate per la suddivisione?

    
posta TheLQ 17.11.2010 - 13:20
fonte

2 risposte

4

Non tutte le attività sono adatte per l'elaborazione parallela. Il factoring è, ma la lunga divisione non lo è. Utilizziamo il termine Algoritmo parallelo per descrivere attività progettate per essere eseguite in parallelo (potenzialmente su più computer o utilizzando più core di un singolo computer).

    
risposta data 17.11.2010 - 14:06
fonte
2

Gli informatici stavano sognando il momento in cui l'elaborazione parallela poteva essere resa realtà, e quindi è stata una sorpresa scoprire che non è davvero così vantaggioso o addirittura possibile applicare l'elaborazione parallela a molti problemi. A parte il fatto che alcuni problemi devono essere risolti in modo lineare, c'è anche il fatto che ci sono rendimenti decrescenti, vale a dire la quantità di lavoro destinata a dividere semplicemente il lavoro e distribuirlo e quindi dare un senso al lavoro fatto dal cluster in seguito inizia a diventare effettivamente più problemi del suo valore.

Sfortunatamente questa soglia dipende principalmente dal problema e quindi rende difficile sapere quando utilizzare i cluster renderebbe i calcoli più veloci, il che porta ad algoritmi molto complicati.

Tornando alla tua domanda iniziale, dipende davvero da cosa vuoi ottenere se puoi farlo o meno. Anche se va detto che se i programmatori sapessero come costruire un programma per analizzare un problema, saremmo tutti senza lavoro.

    
risposta data 17.11.2010 - 17:32
fonte

Leggi altre domande sui tag