utilizando que poo los empleado datos clase c# .net distributed-computing

c# - que - ¿Existen soluciones simples para distribuir trabajo computacional en.NET?



c# que capture los datos de un empleado utilizando poo (4)

En la computación distribuida en general, hay dos modelos: paso de mensajes y memoria compartida.

Parece que está interesado en la transmisión de mensajes, ya que generalmente involucra varias computadoras que se comunican a través de la red. La memoria compartida utiliza el sistema de memoria para comunicarse entre procesos. Desde mi (limitada) experiencia en computación distribuida, casi todos los que usan Message Passing como su modelo se han mudado a MPI. MPI es un marco que se ha implementado en muchos idiomas. Hay algunas implementaciones de .NET MPI bastante fuertes por ahí.

Todo este post asume que estás haciendo "computación distribuida" en un escenario HPC. En tal caso, tendría muchas computadoras potentes, conectadas a través de una red de interconexión, en una sala de servidores (o similar). Si está buscando algún tipo de computación distribuida entre máquinas físicas separadas (como fold @ home), tendrá que encontrar algo más o buscar su propia solución. Por lo tanto, como Leniel Macaferi menciona en su respuesta, deberá asegurarse de que su centro de datos esté ejecutando alguna versión de Microsoft HPC Server. La mayoría de los clústeres de HPC ejecutan un poco de linux, lo que obviamente le impedirá implementar una solución basada en .NET.

Así que digamos que tengo algunas computadoras en casa.

Digamos también que tengo un algoritmo que quiero ejecutar, que generalmente toma mucho tiempo resolverlo. Se puede dividir en la cantidad de partes que quiero, por lo que puedo ejecutar una parte en una máquina, otra parte en otra, etc., y al final solo necesito combinar los resultados en una de las computadoras.

Mi pregunta es si hay alguna forma fácil y directa en .NET de usar varias computadoras para hacer este tipo de cálculos. Si es así, ¿cómo se llama? No me refiero a tener que codificar todo el código IPC por mí mismo, algo similar a las tareas de BCL, pero eso me permitiría enviar "trabajo" a otras computadoras, a través de una IP o algo así.

¡Gracias!


Es una combinación perfecta para la distro Microsoft HPC Server, ya que está especialmente diseñada para abordar este tipo de situaciones.

No sé nada que pueda hacerlo puramente basado en .NET. Eso es posible, por supuesto, pero requeriría algo de codificación.

Aunque no es lo que desea, le recomiendo que lea sobre la Biblioteca paralela de tareas de .NET que lo ayuda a dividir su carga de trabajo automáticamente entre las CPU (núcleos) disponibles de la computadora de forma rápida y sencilla.

Artículos interesantes relacionados con la computación distribuida:

C # Remoting y Computación Distribuida

Legión: construye tu propia súper computadora virtual con Silverlight

Windows Communication Foundation (WCF)


Microsoft HPC Server requiere un sistema operativo de servidor. Por lo que parece, no está ejecutando un sistema operativo de servidor. Suponiendo que está ejecutando una versión de escritorio de Windows con .NET 4.0 instalado, puede probar una de estas opciones:

  1. Podrías dividir manualmente el trabajo y ejecutar las piezas manualmente.

  2. Podría usar algo MPAPI y codificar sus propios nodos y trabajadores.

  3. Podría escribir una aplicación de consola y usar DuoVia.MpiVisor para distribuir y ejecutar en sus estaciones de trabajo. (Revelación completa: soy el autor de MpiVisor)

Hacer la computación distribuida de una manera informal sin mucho alboroto no es tan fácil como podría pensarse, pero cualquiera de estas dos opciones debería llevarlo allí.


Microsoft tiene en sus laboratorios de investigación un Mapa que reduce la implementación de Linq llamada Dryad Linq (actualmente, la versión beta solo está disponible en servidores HPC) pero parece muy interesante y hace lo que está buscando.