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

13

Aqui estão algumas perguntas, gostaria que você me esclarecesse.

  1. É possível combinar o poder de processamento de 2 computadores?
  2. Como faço isso?
por Wern Ancheta 21.03.2010 / 23:36

5 respostas

11

Não transparentemente onde um programa em execução pode de alguma forma usar a segunda máquina para executar código, já que eles são logicamente separados, sem possibilidade de a cpu se comunicar ou acessar a memória uns dos outros.

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

  1. O software específico pode ter componentes que podem ser executados em outras máquinas, por exemplo, dobragem de proteínas, SETI @ home. Estes tendem a ser especializados, ou seja, você não pode inicializar o Excel e dizer para usar outro computador para computação.
  2. Se você estiver executando tarefas com uso intensivo de processador, poderá usar a máquina secundária para executá-las, por exemplo, codificação / recodificação de um fluxo de vídeo.

Se você estiver procurando aproveitar o computador secundário de alguma forma, poder controlar remotamente é crucial. Duas maneiras de fazer isso são através de algum tipo de acesso remoto (RDP, VNC) ou, alternativamente, algo como sinergia +.

    
por 21.03.2010 / 23:41
4

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

Sim, é possível - para determinados aplicativos projetados para funcionar dessa maneira. (Comumente conhecido como cluster - Outras leituras aqui )

Não, não é possível (pelo menos tanto quanto eu saiba) tirar dois computadores da prateleira, "amarrá-los" juntos e obter a memória combinada, poder de processamento e tudo mais.

    
por 21.03.2010 / 23:39
4

É muito possível! Mas a julgar pela simplicidade da sua pergunta, eu suponho que você gostaria de simplesmente executar um programa que magicamente tornaria 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 de usar uma CPU de outro computador para ajudá-lo é que precisa de acesso à mesma memória. E manter uma imagem espelhada da memória de seu computador em outro computador exige muita sobrecarga que facilmente anula o propósito de tentar adicionar outro computador para obter desempenho:)

Mas o tipo de coisas que podem ser divididas entre vários computadores são a renderização de imagens ou alguns cálculos matemáticos que podem funcionar de forma independente.

    
por 22.03.2010 / 00:40
2

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

    
por 17.12.2013 / 22:18
1

Concordo com as outras respostas:

  • Se você tiver uma enorme pasta de trabalho do Excel com várias folhas, e você quer ser capaz de executar o Excel duas vezes mais rápido (atualizando fórmulas e cenários, executando macros, etc.), você está sem sorte.
  • Se você tiver um aplicativo personalizado que seja particionado facilmente, como encontrar a raiz quadrada de cada inteiro de 1 a 1.000.000, deve ser fácil para você dividir o problema e distribuí-lo.
  • Se você tiver um aplicativo personalizado como calcular os primeiros 1.000.000 dígitos de π (pi), você pode fazer isso, se entender bem o espaço do problema.

Se você está falando sobre desenvolvimento de software para rodar 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, RPCs permitem que você faça uma máquina, essencialmente, um servidor da CPU. Conceitualmente, você teria uma máquina mestre, que seria um cliente RPC, e chamaria funções de biblioteca que seriam transparentemente executadas no servidor. Em sua forma mais simples, essa arquitetura não oferece nenhum benefício de desempenho, já que apenas uma CPU estaria sendo executada a qualquer momento. No entanto, no modelo assíncrono, o cliente pode iniciar um procedimento remoto no servidor e depois faça outras coisas enquanto o servidor estiver em execução.
  • Use uma linguagem projetada para processamento paralelo como Unified Parallel C (UPC) . Esta é uma extensão da linguagem C com facilidades para dados distribuídos e execução simultânea. Referências:
por 17.12.2013 / 22:13