¿Es posible combinar la potencia de procesamiento de 2 computadoras?

14

Aquí hay algunas preguntas, ojalá pudieras iluminarme.

  1. ¿Es posible combinar la potencia de procesamiento de 2 computadoras?
  2. ¿Cómo lo hago?
Wern Ancheta
fuente
77
1) Ciertamente 2) Con enorme dificultad.
Daniel R Hicks

Respuestas:

11

No es transparente cuando un programa en ejecución puede usar de alguna manera la segunda máquina para ejecutar código, ya que están lógicamente separados sin que la CPU pueda comunicarse o acceder a la memoria del otro.

Eso no significa que no pueda combinar la potencia de procesamiento:

  1. El software específico puede tener componentes que pueden ejecutarse en otras máquinas, por ejemplo, plegamiento de proteínas, SETI @ home. Estos tienden a ser especializados, es decir, no puede iniciar Excel y decirle que use otra computadora para el cálculo.
  2. Si está realizando tareas intensivas en el procesador, puede usar la máquina secundaria para ejecutarlas, por ejemplo, codificar / recodificar una transmisión de video.

Si está buscando aprovechar la computadora secundaria de alguna manera, poder controlarla remotamente es crucial. Dos formas de hacerlo son mediante algún tipo de acceso remoto (RDP, VNC) o, alternativamente, algo como sinergia +.

mindless.panda
fuente
1
Digamos, por ejemplo, que tengo 4 GB de RAM en mi computadora portátil y 4 GB en mi PC, ¿un RDP me permitirá ejecutar virtualmente un programa con 8 GB de RAM?
TGamer
5

Una de mis líneas más usadas: ¡Sí y No!

Sí, es posible, para ciertas aplicaciones que están diseñadas para funcionar de esta manera. (Conocido comúnmente como un clúster: más información aquí )

No, no es posible (al menos hasta donde yo sé) sacar dos computadoras, "unirlas" y obtener la memoria combinada, la potencia de procesamiento y todo lo demás.

William Hilsum
fuente
1
@ ~ quack sí, y dije para ciertas aplicaciones ... Como la pregunta fue etiquetada con Windows-7, supuse que se refería a una computadora todos los días con cualquier programa listo para usar ... De todos modos, no se requieren clústeres de Beowulf aplicaciones especialmente escritas? ... No soy un experto, nunca usé una, pero leí rápidamente beowulf.org/overview/index.html (especialmente los últimos dos párrafos)
William Hilsum
lo siento, eliminé mi comentario anterior después de volver a leer y noté que ya había vinculado al concepto de agrupación. Los beowulfs están diseñados en torno a componentes estándar y son una forma de "unir" múltiples sistemas, pero tiene razón en que realmente no funcionan para programas que no están diseñados específicamente para ellos.
quack quijote
4

Es muy posible! Pero a juzgar por la simplicidad de su pregunta, supongo que le gustaría simplemente ejecutar un programa que mágicamente hará que su computadora sea el doble de rápido, lo que no es posible.

Debe comprender que cuando un programa se ejecuta, mantiene su estado provocando que la CPU mueva la memoria entre el HDD, la RAM y los registros de la CPU, así como las direcciones en varios componentes (como tarjetas de video o tarjetas de red). El problema con el uso de una CPU de otra computadora para ayudarlo es que necesita acceso a la misma memoria. Y mantener una imagen especular de la memoria de su computadora en otra computadora requiere tanta sobrecarga que fácilmente anula el propósito de intentar agregar otra computadora para obtener rendimiento :)

Pero el tipo de cosas que se pueden dividir entre varias computadoras son la representación de imágenes o algunos cálculos matemáticos que pueden funcionar de forma independiente.

Nippysaurus
fuente
3

Si lo que está buscando es un método para combinar la potencia de procesamiento de dos PC en una, la forma "más fácil" de hacerlo es configurarlas a ambas como máquinas virtuales utilizando software como VMWare ESXi (tenga en cuenta que esto requerirá dispositivo para tener hardware compatible) y crear un grupo de recursos o clúster y crear una máquina virtual que utilice los recursos de ambas computadoras. Esto NO le proporcionará una velocidad completa de 2x (perderá recursos debido a la virtualización) y es una solución limitada debido a los posibles requisitos de compatibilidad, pero es la respuesta más "correcta" a su pregunta. La máquina virtual actuará como una sola PC con la potencia de procesamiento de ambos hosts menos la sobrecarga requerida para mantener la virtualización.

George Spiceland
fuente
Me temo que la comunicación entre los anfitriones será el cuello de botella.
gronostaj
1
Sí, la comunicación entre hosts puede ser un cuello de botella, esto es parte de la sobrecarga involucrada. Las redes que no son de gigabit serían el principal culpable de esto, pero dada la disponibilidad barata y prolífica de gigabit, no creo que esto sea especialmente penalizador. Sin embargo, eso es cierto para todo el procesamiento distribuido en red, y VM es un escenario mucho más utilizable con una complicación significativamente menor que las Llamadas a procedimiento remoto y las aplicaciones escritas personalizadas dedicadas a (lo que de todos modos tendría que ser) computación distribuida en red.
George Spiceland
2

Estoy de acuerdo con las otras respuestas:

  • Si tiene un enorme libro de Excel de varias hojas y desea poder ejecutar Excel dos veces más rápido (actualizar fórmulas y escenarios, ejecutar macros, etc.), no tiene suerte.
  • Si tiene una aplicación personalizada que se divide fácilmente, como encontrar la raíz cuadrada de cada número entero de 1 a 1,000,000, debería ser fácil para usted dividir el problema en pedazos y distribuirlos.
  • Si tiene una aplicación personalizada como calcular los primeros 1,000,000 de dígitos de π (pi), es posible que pueda hacerlo, si comprende el espacio del problema lo suficientemente bien.

Si está hablando de desarrollar software para ejecutar en un entorno distribuido (multi-computadora), aquí hay un par de sugerencias:

  • Use llamadas a procedimiento remoto (RPC) . Así como puede hacer que un host sea un servidor de archivos o un servidor web, los RPC le permiten hacer una máquina, esencialmente, un servidor de CPU. Conceptualmente, tendría una máquina maestra, que sería un cliente RPC, y llamaría a funciones de biblioteca que se ejecutarían de forma transparente en el servidor. En su forma más simple, esta arquitectura no le daría ningún beneficio de rendimiento, ya que solo una CPU se estaría ejecutando en cualquier instante. Sin embargo, en el modelo asincrónico, el cliente podría iniciar un procedimiento remoto en el servidor y luego hacer otras cosas mientras el servidor se está ejecutando.
  • Utilice un lenguaje diseñado para procesamiento paralelo, como Unified Parallel C (UPC) . Esta es una extensión del lenguaje C con facilidades para datos distribuidos y ejecución simultánea. Referencias
Scott
fuente