Cuando piensas informática de bricolaje (hágalo usted mismo), probablemente esté pensando en configurar una computadora para juegos espectacular o reunir los mejores componentes posibles por la menor cantidad de dinero. Es casi seguro que no estás pensando en montar una supercomputadora. Quizás deberías. Joshua Kiepert, estudiante de doctorado en el departamento de Ingeniería Eléctrica e Informática de Boise State, ha logrado crear una mini supercomputadora utilizando computadoras Raspberry Pi (RPi) por menos de 2.000 dólares.

Saluda a una supercomputadora casera basada en Raspberry Pi.

Raspberry Pi es una computadora de placa única con tecnología Linux. Están equipados con procesadores ARM11 de 700 MHz e incluyen una GPU Videocore IV. El Modelo B, que es el que usa Kiepert, viene con 512 MB de RAM, dos puertos USB y un puerto Ethernet 10/100 BaseT. Para su proyecto, Kiepert aceleró los procesadores a 1 GHz.

Por sí sola, la Raspberry Pi es interesante, pero parece un componente poco probable de una supercomputadora. Pero Kiepert tenía un problema. Estaba realizando su investigación doctoral sobre el intercambio de datos para redes de sensores inalámbricos mediante la simulación de estas redes en la supercomputadora del clúster Onyx Beowulf con tecnología Linux de Boise State. Este modesto, para los estándares de una supercomputadora, tiene actualmente 32 nodos, cada uno de los cuales tiene un procesador de cuatro núcleos Intel Xeon E3-1225 a 3,1 GHz y 8 GB de RAM.

Un clúster Beowulf es simplemente una colección de computadoras comerciales económicas (COTS) conectadas en red que ejecutan Linux y software de procesamiento paralelo. Diseñado por primera vez por Don Becker y Thomas Sterling en el Centro de Vuelos Espaciales Goddard en 1994, este diseño se ha convertido desde entonces en una de las arquitecturas centrales de supercomputadoras.

Entonces, teniendo a mano una supercomputadora estilo Beowulf en perfecto estado, ¿por qué Kiepert comenzó a armar su propio clúster Beowulf? En un libro blanco, Creación de un clúster Beowulf basado en Raspberry Pi(Enlace PDF) explicó,

“En primer lugar, si bien el clúster Onyx tiene una excelente calificación de tiempo de actividad, podría desactivarse por diversas razones. Cuando tienes un proyecto que requiere el uso de dicho clúster y Onyx no está disponible, en realidad no hay otras opciones campus disponible para los estudiantes además de esperar a que vuelva a estar disponible. RPiCluster proporciona otra opción para el desarrollo continuo de proyectos que requieren MPI. [Message Passing Interface] o Java en un entorno de clúster.

En segundo lugar, los RPis proporcionan una característica única porque tienen interfaces de hardware externas de bajo nivel para uso en sistemas integrados, como I2C, SPI, UART y GPIO. Esto es muy útil para los ingenieros eléctricos que requieren pruebas de hardware integrado a gran escala.

En tercer lugar, tener acceso exclusivo de usuario a un clúster está bien si el clúster tiene todas las herramientas necesarias instaladas. Sin embargo, si no es así, deberá trabajar con el administrador del clúster para que todo funcione. Por lo tanto, al construir mi propio grupo, podría equiparlo con cualquier cosa que pudiera necesitar directamente.

¡Finalmente, los RPis son baratos! La plataforma RPi tiene que ser una de las formas más económicas de crear un clúster de 32 nodos. El costo de un RPi con una tarjeta SD de 8GB es de ~$45. A modo de comparación, cada nodo en el clúster de Onyx costaba entre 1.000 y 1.500 dólares. Entonces, por casi el precio de un nodo basado en PC, ¡podemos crear un clúster Raspberry Pi de 32 nodos!”

En un correo electrónico, Kiepert agregó: “Este proyecto se inició porque hubo una semana (vacaciones de primavera) en la que no pude usar el clúster Onyx Beowulf que había estado usando. El clúster Onyx no funcionaba debido a algunas renovaciones en la computadora. laboratorio en el que reside. Eso me hizo pensar. Necesitaba continuar probando mi trabajo de doctorado, pero si no tenía acceso a Onyx no tenía ninguna opción.

Anteriormente, había pasado mucho tiempo jugando con Raspberry Pis (RPis) y también he sido usuario de Linux durante mucho tiempo (Fedora y Mint principalmente). Además, en el laboratorio de investigación donde trabajo, utilizamos RPis como servidores para nuestros sistemas de redes de sensores inalámbricos personalizados, para vincular los datos de los sensores a nuestra base de datos central. Entonces, este proyecto me permitió llevar mi experiencia previa con clusters y RPis a otro nivel, y me brindó algunas opciones para continuar con mi trabajo de tesis. Una cosa es segura es que definitivamente agrega algo a la experiencia cuando puedes usar un clúster que tú creaste”.

Para su pequeña supercomputadora, Kiepert eligió utilizar Arch Linux. Explicó: “Arch Linux… adopta un enfoque minimalista. La imagen es pequeña, ~150 MB. Se inicia en unos 10 segundos. La imagen de instalación no incluye nada adicional. La instalación predeterminada proporciona un entorno básico y mínimo que arranca a una interfaz de línea de comandos (CLI) con soporte de red. La belleza de este enfoque es que puede comenzar con la configuración más limpia y rápida y solo agregar las cosas que necesita para su aplicación. La desventaja es que debe estar dispuesto a avanzar. el proceso de aprendizaje de un enfoque diferente, pero elegante, de Linux.”

Por supuesto, su grupo RPi no es ideal. Kiepert admitió que “la propuesta de valor general es bastante buena, particularmente si el desarrollo de programas de clúster se centra en la computación distribuida en lugar del procesamiento paralelo. Es decir, si los programas que se desarrollan para el clúster son de naturaleza distribuida, pero no requieren un uso excesivo de CPU. Las aplicaciones intensivas tendrán que buscar en otra parte, ya que simplemente no hay suficiente 'potencia' disponible para hacer del RPi una opción terriblemente útil para la computación en clúster”.

En nuestra conversación por correo electrónico, Kiepert añadió que “Quizás el problema más molesto que he tenido [with setting up the cluster] fue la corrupción de la tarjeta SD. Inicialmente, tuve muchos daños en el sistema de archivos cuando apagué el clúster (muy bien usando: apagado -h ahora) e intenté iniciarlo nuevamente. Este parece ser un problema conocido con el RPi que es más probable que experimentes cuando haces overclock. Lo extraño es que solo ocurría en los nodos esclavos, no en el maestro. [The master node was a Samsung Chromebook Series 3 with a 1.7GHz dual-core ARM Cortex-A15 processor.]

Finalmente, descubrí que si simplemente desmontaba manualmente los recursos compartidos NFS antes de apagar, el problema parece reducirse. Como parte del desarrollo, creé un script para escribir las imágenes de la tarjeta SD cuando es necesario volver a crearlas. Simplemente proporciono el nombre de host y la dirección IP y el script hace el resto. ¡Esto simplifica enormemente la reimaginación, especialmente la primera vez que tuve que escribir las 32 mientras colocaba la imagen inicial en las tarjetas!”

Al final del día, Kiepert tiene una supercomputadora barata que funciona, aunque todavía usa “cinta aislante para sujetar los ventiladores de la carcasa”. Ahora, para la pregunta de 64 bits: “¿Qué tan rápido se ejecuta?”

Kiepert ejecutó High Performance Linpack (HPL), el punto de referencia de supercomputadora estándar en su computadora casera y descubrió que su RPiCluster con sus 32 procesadores Broadcom BCM2708 ARM11 en ejecución son de 1 GHz y 14,6 GB de RAM utilizable generaron un rendimiento máximo de HPL de 10,13 GFLOPS. . Eso no colocará a este clúster en la lista de supercomputadoras TOP500, pero como observó Kiepert, “la primera supercomputadora Cray-2 en 1985 alcanzó 1,9 GFLOPS. ¡Cómo han cambiado los tiempos!”

Historias relacionadas: