É possível combinar o poder de processamento de 2 computadores?

14

Aqui estão algumas perguntas, eu gostaria que você pudesse me esclarecer.

  1. É possível combinar o poder de processamento de 2 computadores?
  2. Como eu faço isso?
Wern Ancheta
fonte
7
1) Certamente. 2) Com enorme dificuldade.
Daniel R Hicks

Respostas:

11

Não é transparente quando um programa em execução pode de alguma forma usar a segunda máquina para executar código, uma vez que eles são logicamente separados, sem que a cpu se comunique ou acesse a memória um do outro.

Isso não significa que você não pode combinar o poder de processamento:

  1. Software específico pode ter componentes que podem ser executados em outras máquinas, por exemplo, dobragem de proteínas, SETI @ home. Eles tendem a ser especializados, ou seja, você não pode iniciar o Excel e solicitar que ele use outro computador para computação.
  2. Se você estiver executando tarefas intensivas do processador, poderá usar a máquina secundária para executá-las, por exemplo, codificando / recodificando um fluxo de vídeo.

Se você deseja aproveitar o computador secundário de qualquer forma, é possível controlar remotamente. Duas maneiras de fazer isso são através de algum tipo de acesso remoto (RDP, VNC) ou, alternativamente, algo como synergy +.

mindless.panda
fonte
1
Digamos, por exemplo, que eu tenho 4 GB de RAM no meu laptop e 4 GB no meu PC, um RDP me permitirá executar virtualmente um programa com 8 GB de RAM?
TGamer 2/17/17
5

Uma das minhas linhas mais usadas - Sim e Não!

Sim, é possível - para certos aplicativos projetados para funcionar dessa maneira. (Comumente conhecido como cluster - leia mais aqui )

Não, não é possível (pelo menos até onde eu saiba) retirar dois computadores das prateleiras, "amarrá-los" e obter a memória combinada, o poder de processamento e tudo o mais.

William Hilsum
fonte
1
@ ~ grasnar sim, e eu disse para certas aplicações ... Como a pergunta foi marcada como Windows-7, eu assumi que ele queria dizer um computador todos os dias com qualquer programa de prateleira ... De qualquer forma - os clusters Beowulf não exigem aplicações especialmente escritos ... não sou especialista, nunca usou um, mas eu li rapidamente? beowulf.org/overview/index.html (especialmente os dois últimos parágrafos)
William Hilsum
desculpe, excluí meu comentário anterior após a releitura e percebi que você já estava vinculado ao conceito de cluster. Os beowulfs são projetados com base em componentes prontos para uso e são uma maneira de "amarrar" vários sistemas, mas você está certo de que eles não funcionam realmente para programas que não foram projetados especificamente para eles.
quack quixote
4

É muito possível! Mas, a julgar pela simplicidade da sua pergunta, presumo que você gostaria de simplesmente executar um programa que magicamente torne seu computador duas vezes mais rápido, o que não é possível.

Você precisa entender que, quando um programa é executado, ele mantém seu estado, provocando a CPU a mover a memória entre os registros de HDD, RAM e CPU, bem como endereços em vários componentes (como placas de vídeo ou placas de rede). O problema do uso de uma CPU de outro computador para ajudá-lo é que ele precisa acessar a mesma memória. E manter uma imagem espelhada da memória do seu computador em outro computador exige tanta sobrecarga que anula facilmente o objetivo de tentar adicionar outro computador para obter desempenho :)

Mas o tipo de coisa que pode ser dividida entre vários computadores é a renderização de imagem ou alguns cálculos matemáticos que podem funcionar independentemente.

Nippysaurus
fonte
3

Se o que você está procurando é um método de combinar a capacidade de processamento de dois PCs em um, a maneira "mais fácil" de fazer isso é configurá-los como hosts de máquinas virtuais usando software como o VMWare ESXi. dispositivo para ter hardware compatível) e criar um grupo ou cluster de recursos e criar uma máquina virtual que use os recursos de ambos os computadores. Isso NÃO oferece uma velocidade total de 2x (você perderá recursos devido à virtualização) e é uma solução limitada devido a prováveis ​​requisitos de compatibilidade, mas é a resposta mais "correta" para sua pergunta. A máquina virtual atuará como um único PC com o poder de processamento de ambos os hosts, menos a sobrecarga necessária para sustentar a virtualização.

George Spiceland
fonte
Receio que a comunicação entre os hosts seja o gargalo.
gronostaj
1
Sim, a comunicação entre hosts pode ser um gargalo, isso faz parte da sobrecarga envolvida. Redes sem gigabit seriam o principal culpado disso, mas, dada a disponibilidade barata e prolífica de gigabits, não acho que isso seja especialmente penalizador. No entanto, isso é verdade para todo o processamento distribuído em rede, e a VM é um cenário muito mais utilizável com significativamente menos complicações do que as Chamadas de Procedimento Remoto e os aplicativos personalizados escritos dedicados à computação distribuída em rede (o que teria que ser de qualquer maneira).
George Spiceland
2

Eu concordo com as outras respostas:

  • Se você possui uma enorme pasta de trabalho do Excel em várias folhas e deseja executar o Excel duas vezes mais rápido (atualizando fórmulas e cenários, executando macros etc.), está sem sorte.
  • Se você tiver um aplicativo personalizado que seja particionado facilmente, como encontrar a raiz quadrada de todo número inteiro de 1 a 1.000.000, será fácil dividir o problema em pedaços e distribuí-los.
  • Se você tiver um aplicativo personalizado, como o cálculo dos primeiros 1.000.000 dígitos de π (pi), poderá fazê-lo, se entender bem o espaço do problema.

Se você está falando sobre o desenvolvimento de software para ser executado em um ambiente distribuído (multi-computador), aqui estão algumas sugestões:

  • Use chamadas de procedimento remoto (RPCs) . Assim como você pode tornar um host um servidor de arquivos ou um servidor Web, as RPCs permitem criar uma máquina, essencialmente, um servidor de CPU. Conceitualmente, você teria uma máquina principal, que seria um cliente RPC, e chamaria funções de biblioteca que seriam executadas de forma transparente no servidor. Na sua forma mais simples, essa arquitetura não ofereceria nenhum benefício de desempenho, pois apenas uma CPU estaria executando a qualquer instante. No entanto, no modelo assíncrono, o cliente pode iniciar um procedimento remoto no servidor e fazer outras coisas enquanto o servidor estiver em execução.
  • Use um idioma projetado para processamento paralelo, como o Unified Parallel C (UPC) . Esta é uma extensão da linguagem C com recursos para dados distribuídos e execução simultânea. Referências:
Scott
fonte