¿Cómo son múltiples las Raspberry Pis más poderosas que una Pi individual?

Tu amigo que dice haber construido una supercomputadora con Raspberry Pis, no ha hecho nada por el estilo. Ha construido un clúster informático. La diferencia es el tiempo transcurrido para procesar el problema.

Las supercomputadoras se ejecutan a una velocidad extrema. Los clústeres se ejecutan a la velocidad de uno de los miembros del clúster. Para que un clúster reduzca el tiempo total transcurrido, el problema debe dividirse entre las CPU del clúster. Cada CPU ejecutará su parte exactamente en el mismo tiempo que tomaría una computadora independiente del mismo tipo.

Ejemplo: si su problema normalmente demora 40 minutos en una Raspberry Pi, pero puede dividirse en 40 partes y su clúster tiene 40 miembros, en teoría puede resolver el problema en 1 minuto (en la práctica, se toma un tiempo para dividir el problema , y luego pegar los resultados de la pieza juntos).

Una supercomputadora puede demorar 40 minutos solo unos segundos (o menos).

“Los clústeres de computadoras tienen cada nodo configurado para realizar la misma tarea, controlado y programado por software”, y “generalmente se implementan para mejorar el rendimiento y la disponibilidad sobre la de una sola computadora, mientras que generalmente son mucho más rentables que las computadoras individuales de comparables velocidad o disponibilidad “.

Estas citas son del artículo relevante de Wikipedia Computer cluster – Wikipedia.

Y aquí está el artículo de la supercomputadora Supercomputadora – Wikipedia

Lo que ha creado su amigo se llama computadora de clúster , como algunas personas ya han mencionado.

La idea de una computadora de clúster es que muchos problemas tienen partes que se pueden hacer de forma independiente, por lo que podemos dar diferentes partes del problema a diferentes programas que se ejecutan simultáneamente, generalmente llamados hilos o procesos (según la preferencia y el contexto).

Como un ejemplo muy simple, digamos que quiero agregar un montón de números: 7 + 8 + 5 + 4 + 3 + 8 + 2 + 1 + 1 + 1.

Le doy aproximadamente 1/3 a un amigo, que agrega 7 + 8 + 5 + 4 = 24.

Le doy más a otro amigo, que agrega 3 + 8 + 2 = 13.

Agrego el resto; 1 + 1 + 1 = 3.

Luego les pido los números a mis amigos y los sumo; 24 + 13 + 3 = 40

Cada uno de mis amigos era, en efecto, su propio proceso en mi programa de adición.

Los procesos pueden existir en la misma máquina, ejecutándose en diferentes núcleos (de una CPU multinúcleo) o hardware potencialmente diferente (dos CPU diferentes). Los procesos también pueden existir en diferentes máquinas, comunicándose entre sí a través de redes, de la misma manera que las computadoras se comunican a través de Internet.

Lo que ha hecho tu amigo es que varios Raspberry Pi se comuniquen entre sí a través de su propia red privada, probablemente utilizando una interfaz llamada MPI . MPI es una arquitectura independiente del lenguaje que permite que diferentes computadoras físicas ejecuten el mismo programa simultáneamente y se comuniquen entre sí. La mayoría de las veces, los programas MPI están escritos en C ++, y hay toneladas de programas gratuitos disponibles en línea que se basan en MPI.

Desafortunadamente, configurar un clúster y ejecutar programas MPI es mucho más complicado que simplemente descargar un par de archivos. Si está interesado en hacer el mismo tipo de cosas, le recomiendo buscar ROCKS (www.rocksclusters.org), que es un sistema operativo que puede ayudarlo a configurar su propio clúster fácilmente y tiene documentación muy útil.

También quiero aclarar que nunca podrá hacer una supercomputadora a partir de computadoras Raspberry Pi, por varias razones muy importantes:

Primero, las computadoras Raspberry Pi no son muy potentes. Esto significa que necesitaría una gran cantidad de ellos para hacer una computadora poderosa, probablemente al menos en miles. Sería muy difícil conseguir que muchos de ellos, y el costo de conectarlos juntos sería enorme.

En segundo lugar, las Raspberry Pi tienen una red muy lenta. Esto significa que si tiene un programa ejecutándose en muchos de ellos, pasará mucho tiempo comunicándose a través de la red. Hay ciertos programas a los que no les importa la velocidad de la red, pero no muchos. Para cualquier programa que se preocupe por la velocidad de la red, un grupo de computadoras Raspberry Pi no funcionará bien.

Finalmente, a medida que agrega más computadoras a un clúster, pasa más y más tiempo comunicándose entre ellas y menos tiempo trabajando realmente en el problema que desea resolver. Dado que las Raspberry Pi no son muy potentes y tienen una red lenta, esto sucede mucho más rápidamente que con las computadoras más potentes.

Espero que esto ayude a responder tu pregunta. ¡No dude en hacerme cualquier otra pregunta que pueda tener!

Son más potentes porque tienen más procesadores, más memoria y más ancho de banda USB. Si tienes N Raspberry Pis, entonces pueden obtener N veces más números que un Raspberry Pi.

Los enlazas usando Ethernet. Eso está limitado a 100 MB y comparte el bus USB, por lo que un grupo de Rasperry Pis nunca va a vencer a un grupo de computadoras Intel con redes gigabit, pero ciertamente es más poderoso que un solo Raspberry Pi.

Cuando los vincula, usa una extensión del sistema operativo Linux llamada Beowulf. Une todas las computadoras en una sola. Tiene una pantalla, un teclado, un mouse, y para todos los efectos, es una sola computadora con una gran cantidad de procesadores.

Escribir programas que puedan usar una gran cantidad de procesadores de manera eficiente no es trivial. La mayoría de los programas solo usan uno, a veces dos. Debe poder dividir la tarea en varias partes que no necesitan comunicarse mucho entre sí.

Hay bibliotecas de código para vincular muchas computadoras. Los usuarios individuales no se vuelven más poderosos, pero algunas tareas se dividen fácilmente entre ellos y, por lo tanto, se pueden completar más rápidamente. Para un ejemplo no computacional, imagine usar un grupo de muchachos con palas para voltear el suelo de su patio. Cuantos más chicos, más rápido se completará el trabajo.

Otras tareas no pueden aprovechar el paralelismo tan fácilmente. Un ejemplo concreto es cocinar. Debido a que una cocina tiene una cantidad limitada de espacio de trabajo, a veces más de una persona que intenta usarla hace las cosas más lentas.

Para que estos funcionen más rápido, es posible que necesite el equivalente de usar una lanza de rotor en lugar de una pala

More Interesting

¿Puedo usar una Raspberry Pi para ejecutar múltiples servidores sin problemas de seguridad o rendimiento?

¿Cuáles son las principales diferencias entre Red Pitaya, Raspberry Pi y Arduino en términos de concepto y grupo objetivo?

¿Cuáles son algunos excelentes tutoriales sobre comunicación CAN por ahí? ¿Cómo implemento una red CAN entre unos pocos sensores (telemetría en un automóvil solar) y una Raspberry Pi?

¿Cuáles son los objetivos de crear cosas como Arduino y Raspberry Pi?

Cómo solucionar mi problema con SSH en Raspberry Pi

¿Qué sucede si intentas alimentar una Raspberry Pi desde un puerto USB?

¿Mi experiencia con los proyectos Arduino y Raspberry Pi me ayudará en la concentración de diseño digital (FPGA, VLSI)?

¿Cuáles son algunos pequeños programas de automatización que puedo ejecutar en una Raspberry Pi?

¿Cómo puedo construir un sistema de navegación local para un robot como el GPS?

¿Qué tiene de bueno Raspberry Pi?

¿Dónde puedo encontrar un mentor que pueda guiarme a través del desarrollo de Raspberry Pi en Mumbai?

Como novato en informática, veo videos de personas que construyen grupos de Raspberry Pi. Para un usuario doméstico, ¿cuál sería el propósito y los usos del clúster? ¿Mejoraría un clúster el rendimiento de un GIMP de Linux?

¿Sería posible desarrollar un misil (Cruise o Sam) con piezas disponibles en ferreterías y productos electrónicos como Arduino o Raspberry Pi?

¿Puede TensorFlow ejecutarse en Raspberry Pi?

¿Cuáles son los usos más populares y útiles de la computadora Raspberry Pi?