È possibile combinare la potenza di elaborazione di 2 computer?


Risposte:


11

Non in modo trasparente in cui un programma in esecuzione può in qualche modo utilizzare la seconda macchina per eseguire codice, poiché sono logicamente separati senza che la CPU possa comunicare o accedere alla memoria dell'altro.

Ciò non significa che non puoi combinare la potenza di elaborazione:

  1. Software specifici potrebbero avere componenti che possono essere eseguiti su altre macchine, ad esempio il ripiegamento delle proteine, SETI @ home. Questi tendono ad essere specializzati, cioè non è possibile avviare Excel e dirgli di utilizzare un altro computer per il calcolo.
  2. Se si stanno eseguendo attività ad alta intensità di processore, è possibile utilizzare il computer secondario per eseguirle, ad esempio codifica / ricodifica di un flusso video.

Se stai cercando di sfruttare il computer secondario in alcun modo, essere in grado di controllarlo a distanza è fondamentale. Due modi per farlo sono tramite una sorta di accesso remoto (RDP, VNC) o in alternativa qualcosa come synergy +.


1
Supponiamo, ad esempio, che ho 4 GB di RAM sul mio laptop e 4 GB sul mio PC, un RDP mi consentirà di eseguire virtualmente un programma con 8 GB di RAM?
TGamer,

5

Una delle mie linee più utilizzate - Sì e No!

Sì, è possibile - per alcune applicazioni progettate per funzionare in questo modo. (Comunemente noto come un cluster - Ulteriori letture qui )

No, non è possibile (almeno per quanto ne so) togliere due computer dallo scaffale, "legarli" insieme e ottenere la memoria combinata, la potenza di elaborazione e tutto il resto.


1
@ ~ ciarlatano sì, e ho detto per alcune applicazioni ... Dato che la domanda era taggata su Windows 7, ho pensato che intendesse un computer di tutti i giorni con qualsiasi programma standard ... Comunque, i cluster di Beowulf non richiedono applicazioni appositamente scritte? ... Non sono un esperto, non ne ho mai usato uno, ma ho letto rapidamente beowulf.org/overview/index.html (in particolare gli ultimi due paragrafi)
William Hilsum,

scusate, ho cancellato il mio commento precedente dopo aver riletto e ho notato che eravate già collegati al concetto di clustering. i beowulfs sono progettati attorno a componenti standardizzati e rappresentano un modo per "legare" più sistemi insieme, ma hai ragione nel dire che non funzionano davvero per programmi che non sono stati progettati appositamente per loro.
Quack Quixote,

4

È molto possibile! Ma a giudicare dalla semplicità della tua domanda, suppongo che ti piacerebbe semplicemente eseguire un programma che magicamente renderà il tuo computer due volte più veloce, il che non è possibile.

Devi capire che quando un programma viene eseguito mantiene il suo stato provocando la CPU a spostare la memoria tra i registri HDD, RAM e CPU, nonché gli indirizzi su vari componenti (come schede video o schede di rete). Il problema con l'utilizzo di una CPU da un altro computer per aiutarti è che deve accedere alla stessa memoria. E mantenere un'immagine speculare della memoria del tuo computer su un altro computer richiede un sovraccarico così grande che vanifica facilmente lo scopo di provare ad aggiungere un altro computer per ottenere prestazioni :)

Ma il tipo di cose che possono essere suddivise tra più computer sono il rendering delle immagini o alcuni calcoli matematici che possono funzionare in modo indipendente.


3

Se quello che stai cercando è un metodo per combinare la potenza di elaborazione di due PC in uno, il modo "più semplice" per farlo è configurarli entrambi come host di macchine virtuali utilizzando software come VMWare ESXi (attenzione che ciò richiederà dispositivo con hardware compatibile) e creando un gruppo di risorse o un cluster e creando una macchina virtuale che utilizza le risorse di entrambi i computer. Questo NON ti garantirà una velocità 2x completa (perderai risorse a causa della virtualizzazione) ed è una soluzione limitata a causa dei probabili requisiti di compatibilità, ma è la risposta più "corretta" alla tua domanda. La macchina virtuale funzionerà come un singolo PC con la potenza di elaborazione di entrambi gli host meno il sovraccarico richiesto per sostenere la virtualizzazione.


Temo che la comunicazione tra host sarà il collo di bottiglia.
gronostaj,

1
Sì, la comunicazione tra host può essere un collo di bottiglia, questo fa parte del sovraccarico coinvolto. Le reti non gigabit sarebbero il principale colpevole di questo, ma data la disponibilità economica e prolifica di gigabit non credo che questo sia particolarmente penalizzante. Tuttavia, ciò è vero per tutte le elaborazioni distribuite in rete e la VM è uno scenario molto più utilizzabile con una complicazione significativamente inferiore rispetto alle chiamate di procedura remota e alle applicazioni scritte su misura dedicate al (che dovrebbe essere comunque) il calcolo distribuito in rete.
George Spiceland,

2

Sono d'accordo con le altre risposte:

  • Se hai un'enorme cartella di lavoro Excel su più fogli e vuoi essere in grado di eseguire Excel due volte più velocemente (aggiornamento di formule e scenari, esecuzione di macro, ecc.), Sei sfortunato.
  • Se si dispone di un'applicazione personalizzata che può essere facilmente partizionata, come trovare la radice quadrata di ogni numero intero da 1 a 1.000.000, dovrebbe essere facile dividere il problema in pezzi e distribuirli.
  • Se hai un'applicazione personalizzata come il calcolo delle prime 1.000.000 di π (pi), potresti essere in grado di farlo, se capisci abbastanza bene lo spazio del problema.

Se stai parlando dello sviluppo di software da eseguire in un ambiente distribuito (multi-computer), ecco alcuni suggerimenti:

  • Utilizzare le chiamate di procedura remota (RPC) . Proprio come è possibile rendere un host un file server o un server Web, gli RPC consentono di creare una macchina, essenzialmente un server CPU. Concettualmente, si avrebbe una macchina master, che sarebbe un client RPC, e chiamerebbe funzioni di libreria che verrebbero eseguite in modo trasparente sul server. Nella sua forma più semplice, questa architettura non ti darebbe alcun vantaggio in termini di prestazioni, poiché solo una CPU sarebbe in esecuzione in qualsiasi momento. Tuttavia, nel modello asincrono, il client potrebbe avviare una procedura remota sul server e quindi eseguire altre operazioni mentre il server è in esecuzione.
  • Utilizzare un linguaggio progettato per l'elaborazione parallela, come Unified Parallel C (UPC) . Questa è un'estensione del linguaggio C con funzionalità per i dati distribuiti e l'esecuzione simultanea. Riferimenti:
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.