Construya su propio supercomputador con Raspberry Pi - Sergio Iserte - E-Book

Construya su propio supercomputador con Raspberry Pi E-Book

Sergio Iserte

0,0

Beschreibung

¿Conoce la supercomputación? ¿Quiere introducirse en este campo de una forma entretenida? Sin darse cuenta, la supercomputación lo rodea en su día a día: los anuncios ajustados a sus gustos, las predicciones meteorológicas cada vez más exactas, la simulación del efecto del viento sobre un vehículo... Las empresas más influyentes, importantes avances científicos o, incluso, películas han mostrado la existencia de grandes centros de computación. No obstante, ¿sabe cómo funcionan estos sistemas, quién los usa, para qué y cómo se configuran? Construya su propio supercomputador con Raspberry Pi da respuesta a todas estas preguntas mientras lo guía en la configuración de un prototipo de supercomputador. Con este libro experimentará de primera mano la computación de altas prestaciones, desde el montaje físico del sistema hasta la ejecución de aplicaciones científicas. Así pues, gracias a esta lectura: - Aprenderá los conceptos básicos sobre la supercomputación. - Construirá su propio prototipo funcional de supercomputador utilizando hardware de bajo coste. - Configurará el sistema siguiendo patrones de diseño utilizados hoy en día en este tipo de infraestructuras. - Conocerá algunas de las herramientas clásicas en este contexto. - Instalará y ejecutará aplicaciones propias de distintas disciplinas científicas que se apoyan en la computación de altas prestaciones. - Descubrirá las tecnologías de virtualización y la utilidad de los contenedores en el mundo de la supercomputación. Este libro está escrito por cuatro entusiastas de la computación de altas prestaciones, por lo que podrá emprender su viaje hacia la supercomputación de la mano de Sergio Iserte Agut (investigador en la Universitat Jaume I y profesor de la Universitat Oberta de Catalunya), Sandra Catalán Pallarés (profesora e investigadora de la Universidad Complutense de Madrid), Rocío Carratalá Sáez (investigadora en la Universitat Jaume I) y Sergio López Huguet (investigador en la Universitat Politècnica de València). ¡Este es el momento! No dude en adquirir el libro para disfrutar aprendiendo sobre la supercomputación: una disciplina cuya importancia crece a pasos agigantados.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 238

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Construya su propio supercomputador con Raspberry Pi

Un manual sencillo para iniciarse en la supercomputación desde el entretenimiento

Sergio Iserte Agut, Sandra Catalán Pallarés, Rocío Carratalá Sáez, Sergio López Huguet

Construya su propio supercomputador con Raspberry Pi

Primera edición, 2021

© 2021 Sergio Iserte Agut, Sandra Catalán Pallarés, Rocío Carratalá Sáez y Sergio López Huguet

© 2021 MARCOMBO, S. L.

www.marcombo.com

Diseño de cubierta: ENEDENÚ DISEÑO GRÁFICO

Directora de producción: M.a Rosa Castillo

Revisión técnica: Ferran Fàbregas

Corrección: Haizea Beitia

«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».

ISBN: 978-84-267-3333-7

D.L.: B 6919-2021

Producción del ePub: booqlab

Para Enrique Quintana.

Índice general

¿Qué estoy leyendo?

I Introducción

II Fundamentos

1 ¿Qué es la supercomputación?

1.1 Introducción

1.2 Computación de altas prestaciones (HPC)

1.3 Evaluación del rendimiento en la HPC

1.4 El TOP500

1.5 El Green500

1.6 Estructura clúster

1.7 Consumo energético y refrigeración

1.8 Sistemas multiprocesador y multinúcleo

1.9 Concurrencia y paralelismo

1.10 Virtualización

1.11 Lenguajes de programación para HPC

1.12 Para profundizar...

1.13 Material recomendado

1.14 Resumen

2 Clúster con Raspberry Pi

2.1 ¿Por qué Raspberry Pi?

2.2 Raspberry Pi 4 Model B

2.3 Componentes del clúster

2.4 Para profundizar...

2.5 Material recomendado

2.6 Resumen

III ¡Manos a la obra!

3 Montaje del clúster

3.1 El sistema operativo

3.2 GNU/Linux

3.3 El sistema operativo para Raspberry Pi

3.4 Montaje hardware paso a paso

3.5 Para profundizar...

3.6 Material recomendado

3.7 Resumen

4 Configuración del clúster

4.1 Configuración inicial de los nodos

4.2 Configuración del sistema de ficheros compartido 93

4.3 Para profundizar...

4.4 Material recomendado

4.5 Resumen

5 Modelos de programación paralela

5.1 Compilador GCC

5.2 Modelos de programación paralela

5.3 Para profundizar...

5.4 Material recomendado

5.5 Resumen

6 Gestor de trabajos y recursos

6.1 Visión general

6.2 Para profundizar...

6.3 Material recomendado

6.4 Resumen

7 Aplicaciones

7.1 Rendimiento y monitorización del sistema

7.2 Aplicaciones científicas

7.3 Para profundizar...

7.4 Material recomendado

7.5 Resumen

8 Software de virtualización

8.1 ¿Qué son los contenedores?

8.2 Instalación de Singularity

8.3 Cómo usar los contenedores Singularity

8.4 Caso de uso

8.5 ¿Por qué usar contenedores?

8.6 Para profundizar...

8.7 Material recomendado

8.8 Resumen

IV Actividades propuestas

9 Actividades propuestas

V Anexos

A Temporización aproximada

B Raspberry Pi Model 3 B+

B.1 Comunicaciones internas entre componentes

B.2 Interpretación de los indicadores LED

B.3 Deshabilitar conexiones inalámbricas

B.4 Temporización aproximada

Listado de acrónimos

Glosario

¿Qué estoy leyendo?

Estimado/a lector/a:

Este libro pretende recoger una visión general e introductoria a la computación de altas prestaciones (High Performance Computing, en inglés, en adelante referida como HPC). A diferencia de otras obras, la presente no está centrada en la programación paralela o sus paradigmas, sino que profundiza en la administración, configuración y uso de sistemas HPC. Desde nuestra perspectiva, especialmente como alumnos, siempre echamos de menos una visión global del área que nos permitiera entender cómo cooperan los distintos componentes, tanto a nivel hardware como software, para crear entornos de alto rendimiento en los que ejecutar las aplicaciones pertinentes. Con la intención de proporcionar esa visión general y gracias a la experiencia que hemos ido adquiriendo al utilizar y formar parte del desarrollo de distintas infraestructuras, herramientas y aplicaciones, hemos elaborado el presente libro.

El contenido de este libro, además, incluye un componente práctico que detalla cómo construir, configurar y utilizar un “supercomputador” empleando hardware no específico para tal fin (en concreto, dispositivos Raspberry Pi 4 Model B) e instalando software habitual en sistemas HPC. Debido a que el entorno hardware creado es un prototipo, en algunos casos se usan alternativas software que difieren de las comúnmente presentes en entornos reales, lo cual está debidamente especificado cuando ocurre. Esta propuesta práctica surge a partir de un curso no obligatorio creado e impartido a nivel universitario para dar a conocer la HPC, cuyos resultados siempre han sido valorados de forma muy positiva por los estudiantes asistentes.

Finalmente, dada la visión general y práctica que se presenta, este libro no pretende ser un curso de formación específica de ninguna de las distintas disciplinas que forman parte de la HPC, así como tampoco persigue sustituir ninguno de los manuales que se puedan encontrar con una finalidad similar. Consideramos que este es un buen punto de partida para quien quiera iniciarse en la HPC y lo animamos a seguir aprendiendo y descubriendo el área con la lectura de otros libros y manuales más específicos. Para tal fin, también hemos incluido referencias bibliográficas a lo largo del manual.

Sin más, agradecemos su interés en este libro. Deseamos que sea de su agrado y que le sirva como motivación para profundizar en el campo de la HPC.

Sergio Iserte Agut, Sandra Catalán Pallarés, Rocío Carratalá Sáez y Sergio López Huguet.

Sobre los autores de este libro

Sergio Iserte Agut es investigador postdoctoral (APOSTD20) del grupo de fluidos multifásicos (GFM) de la Universitat Jaume I (UJI), donde obtuvo su Doctorado en Informática (2018), Máster en Sistemas Inteligentes (2014) y título de Ingeniería Informática (2011). Además, Sergio combina la investigación con la docencia en el área de la computación de altas prestaciones (HPC) de la Universitat Oberta de Catalunya (UOC). Actualmente participa en proyectos de computación distribuida, gestión de recursos y modelado de cargas de trabajo en supercomputadores, a la vez que centra sus intereses en la investigación del aprendizaje automático en problemas físicos.

Sandra Catalán Pallarés es profesora de la Universidad Complutense de Madrid (UCM) y miembro del grupo de investigación Architecture and Technology of Computing Systems (ArTeCS) de la misma. Obtuvo su Doctorado en Informática en 2018 en la Universitat Jaume I (UJI), donde también se tituló en el Máster de Sistemas Inteligentes en 2013 e Ingeniería Informática en 2012. Ha colaborado con instituciones como el Barcelona Supercomputing Center (BSC), The University of Texas at Austin o IBM Research Zurich. Sus líneas de investigación incluyen la computación de altas prestaciones, los modelos de programación paralela, el consumo energético y las bibliotecas de álgebra lineal.

Rocío Carratalá Sáez es investigadora postdoctoral en la Universitat Jaume I (UJI) y miembro del grupo de investigación High Performance Computing and Architectures (HPC&A). En 2015 se graduó en Matemática Computacional por la UJI, en 2016 obtuvo el Máster en Computación Paralela y Distribuida por la Universitat Politècnica de València (UPV) y en 2021 se doctoró en informática por la UJI. Ha colaborado con instituciones como el BSC, Inria (Francia) o la Christian-Albrechts-Universität zu Kiel (Alemania). Sus líneas de investigación giran en torno a la computación de altas prestaciones y se centran en el desarrollo de bibliotecas de álgebra lineal. Además, tiene experiencia docente universitaria y colabora en proyectos de innovación relacionados.

Sergio López Huguet es estudiante de Doctorado en Informática en la UPV y miembro del grupo de investigación de Grid y Computación de Altas Prestaciones (GRyCAP) del Instituto de Instrumentación para Imagen Molecular (I3M) en la UPV desde 2016. En 2015 se graduó en Matemática Computacional por la UJI y en 2017 obtuvo el Máster en Ingeniería Informática por la UPV. Desde 2016 ha trabajado en distintos proyectos internacionales que le han permitido centrar sus líneas de investigación en la computación en la nube, la computación de altas prestaciones, el procesamiento de imagen médica y los contenedores.

Parte I

Introducción

Bienvenido/a a Construya su propio supercomputador con Raspberry Pi, un libro surgido de una experiencia universitaria1 y pensado para que quien lo lea disfrute aprendiendo sobre un tema poco conocido, aunque presente en muchos aspectos del día a día: la HPC.

¿A quién va dirigido este libro?

Este libro va dirigido a todas las personas que sienten interés por la ciencia en general y la computación en particular. Concretamente, el hilo conductor de este libro es la HPC. Basándose en la experiencia adquirida como docentes, los autores consideran importante disponer de conocimientos previos básicos sobre la terminal de Linux antes de profundizar en la lectura de este manual. Si adicionalmente se dispone también de formación básica en redes y programación, la comprensión de esta obra será más sencilla. No obstante, este libro trata de ser autocontenido, es decir, se proporcionan explicaciones detalladas sobre cada uno de los términos, comandos, protocolos y códigos mencionados y utilizados a lo largo del texto, respaldadas por un glosario y listado de acrónimos al final del mismo. El objetivo principal de esta obra es describir paso a paso el montaje, configuración y evaluación de un clúster de computadores formado por dispositivos Raspberry Pi. Esto no significa que el contenido explicado en este libro solo pueda ponerse en práctica mediante esos dispositivos y no con otros. Salvando las distancias en lo que a hardware, software y sus limitaciones o diferencias respecta, los desarrollos y actividades propuestos deben poder realizarse en sistemas distintos al descrito en este manual.

Por lo tanto, los autores consideran que, además de cualquier otra persona interesada, esta obra (o parte de ella) puede servir como guía básica para llevar a cabo proyectos sobre HPC enfocados tanto a estudiantes de bachillerato como de formación profesional y universitarios.

¿Qué se aprenderá con este libro?

El objetivo principal de este libro es que el lector entienda de forma global qué es, cómo funciona y para qué se utiliza la supercomputación. Además, presenta algunas de las herramientas comúnmente usadas en este campo, lo que facilita la iniciación en el uso de las mismas.

Por otro lado, a lo largo de todo el libro se presentan las instrucciones necesarias para construir paso a paso un clúster con dispositivos Raspberry Pi 4 Model B. Este prototipo de supercomputador servirá para poner en práctica todo lo explicado: desde el montaje de los componentes hardware hasta llegar a ejecutar software común en la HPC.

¿Cómo leer este libro?

Este libro está diseñado para poder poner en práctica lo aprendido a medida que se va leyendo, por lo tanto se recomienda una lectura ordenada y consecutiva de los capítulos. Aunque los capítulos son independientes unos de otros, están planteados para construir un supercomputador con dispositivos Raspberry Pi de manera ordenada, es decir, se parte de los elementos físicos hasta llegar a la ejecución de herramientas y aplicaciones, pasando por la configuración software de las mismas. Por tanto, si se pretende llevar a cabo la implementación física del supercomputador propuesto, no recomendamos alterar el orden de lectura ni obviar ningún capítulo.

Asimismo, si únicamente se está interesado en el contenido teórico, se recomienda el mismo modo de lectura, puesto que los conceptos se van tratando desde los más elementales hasta los más complejos. Cada capítulo incluirá una breve descripción de los conceptos y herramientas presentados, que siempre podrá ampliarse consultando la bibliografía propuesta para profundizar en ese tema concreto o para resolver dudas específicas.

Sobre la estructura del libro

El libro está estructurado en cinco partes que, a su vez, contienen uno o más capítulos. El contenido de cada una de estas partes se detalla a continuación:

▪ Parte I. Es la bienvenida al libro, donde se presenta el mismo y su contexto. En esta parte del libro se encuentran las instrucciones básicas sobre cómo moverse por el libro, cómo interpretar los cuadros que aparecen a lo largo de la lectura y cómo resolver las dudas que puedan surgir. Es la parte que se está leyendo en este momento.

▪ Parte II. Está formada por dos capítulos. En el Capítulo 1 se describen distintos aspectos relacionados con la HPC, mientras que en el Capítulo 2 se detallan los componentes hardware que formarán el clúster basado en Raspberry Pi.

▪ Parte III. Constituye la parte práctica del libro y está compuesta de varios capítulos que abordan desde la configuración básica del clúster hasta la ejecución de herramientas HPC. El Capítulo 3 presenta el sistema operativo, una breve descripción de los comandos que se usarán a lo largo del libro y el ensamblado del hardware que compone el supercomputador Raspberry Pi. El Capítulo 4 explica la configuración software básica del clúster, también paso a paso. El Capítulo 5 introduce los modelos de programación más comunes en la HPC, basados en metodologías de computación de memoria compartida y distribuida. El Capítulo 6 introduce el uso de los gestores de trabajos y recursos en los supercomputadores. El Capítulo 7 recoge una serie de herramientas y aplicaciones científicas habitualmente utilizadas en entornos HPC. Finalmente, el Capítulo 8 describe los contenedores como herramientas de virtualización.

▪ Parte IV. El Capítulo 9 es el último del libro y en él se incluye una serie de actividades (y propuestas de soluciones) referentes a todo el software presentado a lo largo del libro. El objetivo es profundizar en la utilización y análisis de sistemas HPC.

▪ Parte V. Incluye dos anexos. En el Anexo A se detallan los tiempos aproximados para completar distintas configuraciones, compilaciones y ejecuciones sobre el clúster propuesto en el manual (basado en Raspberry Pi 4 Model B). En el momento de la redacción de este libro, Raspberry Pi 4 Model B es la versión más reciente de Raspberry Pi. De forma complementaria, el Anexo B contiene los detalles para construir el clúster usando el modelo anterior Raspberry Pi 3 Model B+.

Nótese que las estimaciones temporales incluidas en los anexos no tienen en cuenta el tiempo correspondiente a la lectura y comprensión de los capítulos, ni tampoco el necesario para completar las actividades propuestas.

Tras los anexos, se han incluido una lista de acrónimos y un glosario para facilitar la consulta de los principales términos utilizados a lo largo del libro.

Sobre fragmentos de código

A lo largo del libro se utilizan cuadros de texto para presentar conjuntos de comandos y sus resultados de ejecución, así como el contenido de ficheros.

Para facilitar la escritura de los códigos más largos, así como la de los ficheros de configuración de determinadas aplicaciones, se puede acceder al repositorio del libro2.

A continuación, se describe el formato de cada uno de ellos con la finalidad de que sean fácilmente identificables.

Comandos y resultados de ejecuciones

La configuración de cada uno de los dispositivos Raspberry Pi que componen el clúster se presenta, tal como se ha indicado previamente, de forma gradual, agrupando bloques de comandos según su finalidad. Dichos conjuntos de comandos y las correspondientes ejecuciones se muestran en figuras que simulan la consola del sistema operativo, como la siguiente:

COMENTARIO: Esto es un ejemplo de comentario

usuario@nodo:~ $ Esto es un ejemplo de comando a ejecutar

Esto es un ejemplo de resultado de ejecución

Los comandos a ejecutar se presentan precedidos por el prompt de la consola con el formato usuario@nodo:~ $ y los resultados de ejecución de los comandos aparecerán justo a continuación. Por otro lado, los comentarios respecto a ciertos comandos o conjuntos de ellos que se incluyan dentro de estas figuras para hacer alguna aclaración se muestran precedidos por la palabra COMENTARIO:. Cabe añadir que los comentarios que se incluyan dentro de estos cuadros no deberán ser trasladados a la consola; en ella solamente deberán escribirse los comandos y podrán observarse, tras su ejecución, los resultados correspondientes.

Ficheros

Cuando sea necesario modificar el contenido de un fichero, se mostrará un cuadro de texto similar a este:

En este tipo de cuadros, en la cabecera (en color gris oscuro) se muestra el nombre del fichero a modificar y dónde se encuentra almacenado. El contenido que debe tener el mismo se muestra a continuación, en el cuerpo del cuadro (en color gris claro). Si una línea dentro del fichero es muy larga, esta se divide en varias líneas. El carácter - es el indicador de que una determinada línea continúa en la línea siguiente y, por tanto, al seguir los pasos del manual, deben escribirse como una única línea todas aquellas relacionadas con dicho símbolo.

Aplicaciones recomendadas

Los desarrollos y configuraciones presentados en este libro se realizan directamente sobre los nodos Raspberry Pi, utilizando las aplicaciones preinstaladas en los mismos, sin que sea necesario ningún entorno de desarrollo integrado (Integrated Development Environment [IDE], en inglés).

Si bien pueden utilizarse (previa instalación si fuera necesario) otras aplicaciones similares, los autores harán referencia a las siguientes aplicaciones, ya preinstaladas en el sistema operativo escogido:

▪ Terminal del sistema (consola) para la ejecución de comandos.

▪ Editor de textos (por ejemplo, Mousepad si la interfaz gráfica está habilitada, o Nano en caso contrario).

Invitaciones a la reflexión

En la conclusión de cada capítulo se incluye un apartado titulado “Para profundizar...” en el que se plantean distintas cuestiones con la intención de promover la reflexión por parte del lector. En algunas de ellas se proporciona información relacionada, si bien en ninguna se da una respuesta cerrada.

Sobre el material recomendado

Al final de cada apartado se proporcionará una serie de recursos bibliográficos, como por ejemplo:

▪ Libros y capítulos de libro.

▪ Artículos científicos, páginas web o artículos periodísticos.

▪ Enlaces a la documentación oficial de las herramientas o interfaces de programación de aplicaciones (Application Programming Interface [API], en inglés).

En el caso de que alguno de los enlaces web indicados para ampliar información sobre un determinado recurso no esté disponible cuando se realice la consulta, una búsqueda rápida del término en cuestión en cualquier buscador web debería servir para encontrar la información deseada.

¿Cómo conseguir ayuda?

Si con los recursos al final de cada tema no es suficiente para resolver las dudas, en general, los autores recomiendan hacer uso de los siguientes sitios de la plataforma Stack Exchange:

▪https://raspberrypi.stackexchange.com: preguntas y respuestas de usuarios de Raspberry Pi.

▪https://serverfault.com: preguntas y respuestas de administradores de sistemas y redes.

▪https://stackoverflow.com: preguntas y respuestas de profesionales y desarrolladores de software.

▪https://unix.stackexchange.com: preguntas y respuestas de usuarios de Linux y otros sistemas operativos de la familia Unix.

▪https://superuser.com: preguntas y respuestas de entusiastas de los ordenadores con permisos de administración.

Si quedan cuestiones por resolver o se detecta algún error, se puede contactar con los autores vía correo electrónico:

▪ Sergio Iserte Agut: [email protected]

▪ Sandra Catalán Pallarés: [email protected]

▪ Rocío Carratalá Sáez: [email protected]

▪ Sergio López Huguet: [email protected]

Recomendamos que, aunque se dirija a un autor en concreto, ponga al resto en copia para poder resolver la duda más rápidamente.

Llegados a este punto, ¡es momento de empezar esta aventura!

 

1 R. Carratalá-Sáez, S. Iserte and S. Catalán, “Teaching on Demand: an HPC Experience”, 2019 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC), Denver, CO, USA, 2019, pp. 32-41.

2 Entre en www.marcombo.info con el código promocional PI3 para acceder al repositorio del libro.

Parte II

Fundamentos

¿Qué es la supercomputación? ¿Por qué se necesitan supercomputadores? ¿Qué marca la diferencia entre un supercomputador y un ordenador personal? ¿Qué se necesita saber para poder utilizar un supercomputador? Estas son solo algunas de las preguntas que se podría estar haciendo.

En el primer capítulo de esta parte (Capítulo 1) se dará respuesta a las preguntas planteadas anteriormente mediante la explicación de distintos conceptos. Este capítulo pretende poner en contexto al/a la lector/a. Por este motivo se tratarán aspectos muy diversos, pero todos ellos clave para iniciarse en el mundo de la HPC.

En el Capítulo 2 se describen los principales componentes de la Raspberry Pi 4 Model B. Puesto que este dispositivo constituye la base para la construcción del supercomputador propuesto en este libro, es necesario conocer los elementos que lo componen. Además, se establecerán paralelismos entre los componentes de la Raspberry Pi y sus equivalentes en un supercomputador real.

1. ¿Qué es la supercomputación?

1.1 Introducción

Ingentes cantidades de datos (comúnmente referidas como Big Data), provenientes de campos muy diversos, deben ser evaluadas a diario en cualquier contexto: en los análisis estadísticos económicos o sociales de las empresas privadas, en el tratamiento de los datos sensibles que manejan las entidades públicas, en la selección de los anuncios que se muestran a cada usuario mientras navega por Internet, en las sugerencias de contactos en las redes sociales y en un larguísimo etcétera de circunstancias muy diversas.

Para que esto sea posible, se dispone de clústeres HPC o supercomputadores capaces de procesar toda esa información que resulta crucial para empresas, instituciones, agrupaciones o administraciones.

Ahora bien, ¿en qué se debe pensar cuando se habla de supercomputadores? Un supercomputador puede definirse como aquel computador dotado de una arquitectura, recursos y componentes que, operando coordinados, permiten alcanzar una potencia computacional masiva. Los supercomputadores en producción están formados por miles de procesadores que pueden trabajar conjuntamente sobre un problema concreto.

¿Cómo de “masiva” es esa potencia computacional y cómo puede saberse que no se está ante un ordenador común, sino que se ha pasado a la escala de la supercomputación? Para resolver esta cuestión presentamos la HPC.

1.2 Computación de altas prestaciones (HPC)

El término HPC hace referencia a la resolución de problemas científicos y de ingeniería computacionalmente complejos y costosos (tanto a nivel de recursos como a nivel temporal), apoyados en el procesamiento paralelo y distribuido. El rendimiento necesario en la HPC requiere de miles de nodos potentes trabajando simultáneamente con un gran ancho de banda y una latencia baja en la red que los comunica, gracias a los cuales se obtiene un resultado derivado de cálculos complejos en un tiempo razonable, notablemente inferior al que conllevaría realizar dichos cálculos en un ordenador con prestaciones comunes.

De entre las innumerables aplicaciones donde la HPC es esencial (desde el ámbito de la investigación universitaria hasta el mundo empresarial), pueden destacarse las predicciones meteorológicas como uno de los casos de uso que evidencia la necesidad de inmediatez en la obtención de resultados. Con el fin de predecir el tiempo que va a hacer mañana, se realizan miles y miles de simulaciones de cálculo numérico y análisis estadísticos que, individualmente, podrían llegar a tardar horas o incluso días en completarse si se ejecutaran en computadores comunes, lo que implicaría no tenerlos disponibles a tiempo y que, consecuentemente, perdieran toda su utilidad y carecieran de sentido.

Es en los supercomputadores donde puede desarrollarse la HPC. Por supuesto, según el presupuesto disponible tanto para su configuración como para su mantenimiento (consumo energético, administración, actualización de componentes, etc.), distintos supercomputadores presentan diferencias en términos de rendimiento.

1.3 Evaluación del rendimiento en la HPC

Si hay algo indispensable en la HPC es determinar el rendimiento de un sistema para evaluar cómo se comporta y si se está explotando al máximo. Para ello, es común la utilización de benchmarks. En computación, un benchmark es un algoritmo (o conjunto de ellos) que se utiliza para medir el rendimiento de un determinado sistema y, si es necesario, poder realizar comparativas. Tanto para realizar las comparativas como para conocer el funcionamiento del propio sistema, a menudo se analizan la escalabilidad y la eficiencia de esos algoritmos.

1.3.1 FLOPS

La aritmética utilizada en computación para representar números reales se denomina coma flotante. En ella, los valores se expresan de manera aproximada, dado que el número de decimales representables físicamente en un computador es limitado. Aquellas operaciones matemáticas que el procesador es capaz de realizar teniendo en cuenta dicha aritmética se denominan operaciones en coma flotante (Floating Point Operation (FLOP), en inglés).

Las operaciones en coma flotante por segundo (Floating Point Operations per Second [FLOPS], en inglés) son la unidad de medida para el rendimiento de cualquier computador. La unidad FLOPS puede ir precedida de un prefijo que facilita la lectura del rendimiento de un computador, puesto que este puede variar mucho dependiendo de si se trata de un dispositivo móvil, un ordenador personal o un supercomputador. Para ello, se hace uso de los prefijos del Sistema Internacional recogidos en la Tabla 1.1.

Medida

Unidad

FLOPS

Kilo-FLOPS

KFLOPS

103

Mega-FLOPS

MFLOPS

106

Giga-FLOPS

GFLOPS

109

Tera-FLOPS

TFLOPS

1012

Peta-FLOPS

PFLOPS

1015

Exa-FLOPS

EFLOPS

1018

Zetta-FLOPS

ZFLOPS

1021

Yotta-FLOPS

YFLOPS

1024

Tabla 1.1 Prefijos del Sistema Internacional combinados con FLOPS.

1.3.2 Análisis de escalabilidad

La escalabilidad de un sistema es la propiedad que indica cuán bien responde el mismo al cambiar su configuración o capacidad. Por ejemplo, en un sistema con dos procesadores, sería deseable que cualquier programa ejecutado en él (en paralelo) tardase la mitad de tiempo que si el mismo sistema dispusiese únicamente de un procesador. Es decir, en este caso esperamos que:

o lo que es lo mismo, esperamos que el sistema con dos procesadores sea capaz de hacer el doble de operaciones por unidad de tiempo:

En la práctica, este valor es teórico, ya que existen diversos motivos tanto a nivel hardware como software que impiden una escalabilidad idealmente lineal. En cualquier caso, la escalabilidad teórica es una buena referencia para estimar el buen funcionamiento de un sistema.

Para calcular la escalabilidad teórica, habitualmente se utiliza la Ley de Amdahl, que permite hacer una estimación más precisa. Esto se debe a que tiene en cuenta durante qué fracción de tiempo se puede utilizar el sistema mejorado. Supongamos que el 25% de un programa puede ser paralelizado; si se dispone de dos procesadores, esto significa que durante el 25% del tiempo de la ejecución secuencial podrían aprovecharse los dos procesadores para la ejecución paralela y así reducir el tiempo total. Para hacer un cálculo más preciso de la mejora a obtener, se aplica la Ley de Amdahl:

donde F es la fracción de tiempo del sistema original que puede beneficiarse de la mejora del sistema y M es la mejora aplicada. En el ejemplo, la fracción de tiempo es el 25%, que expresado en tanto por uno es 0,25; la mejora es 2, puesto que el sistema base tendría un único procesador y el mejorado dos. En este caso la escalabilidad obtenida sería la siguiente:

Es decir, puede esperarse que la ejecución paralela que aprovecha los dos procesadores disponibles durante el 25% del tiempo de ejecución sea un 14% más rápida que la equivalente secuencial.

1.3.3 Análisis de eficiencia energética

Con la evolución de los sistemas ha aumentado su complejidad, a la par que su consumo energético. La electricidad necesaria para mantener un sistema funcionando ha ido aumentando a lo largo del tiempo, por lo que tener en cuenta este parámetro a la hora de valorar el rendimiento es algo cada vez más común. La eficiencia energética (E) permite calcular el rendimiento que obtiene el sistema en función de la energía consumida. Para ello, se calculan los FLOPS que se computan por vatio (W):

Tanta importancia ha ido cobrando la evaluación del consumo energético en entornos HPC que no solo se clasifican los supercomputadores en función de su rendimiento, sino también en base a su eficiencia energética.

1.4 El TOP500

En la comunidad científica, empresarial o cualquier otra donde la HPC sea de interés, también lo es conocer cuáles son los rendimientos de los supercomputadores más potentes existentes, así como su configuración, localización y aplicaciones para las que se utilizan.

Desde 1993, con el fin de facilitar a la comunidad científica una clasificación en la que basarse para establecer colaboraciones y para tener una referencia propia respecto a la actualidad de la HPC a nivel global, se elabora una lista que recoge los 500 sistemas computacionales más potentes a nivel mundial. Esta lista se actualiza bianualmente desde entonces en junio y noviembre. Recibe el nombre de TOP5001 y la participación en ella es voluntaria.

Con el propósito de decidir qué supercomputadores optan a formar parte de la clasificación del TOP500 y qué posiciones ocupan en la misma, se utiliza LINPACK para evaluar el rendimiento en términos de FLOPS. LINPACK2 es un benchmark ampliamente utilizado en computación científica, compuesto por una colección de subrutinas escritas en lenguaje Fortran que analizan y resuelven sistemas de ecuaciones lineales y problemas de mínimos cuadrados. Dispone, además, de una versión más reciente enfocada a la HPC llamada HPL3 (High Performance LINPACK). Sobre la instalación y uso de este benchmark se profundizará más adelante (Apartado 7.1.6), cuando se instale en el clúster propuesto en este manual.

1.5 El Green500

La comunidad científica no es ajena a la realidad ni a los grandes problemas que preocupan en la actualidad. El cambio climático y los efectos del alto consumo energético que los humanos llevan a cabo es una de las cuestiones más importantes a analizar y resolver en cualquier contexto. Por ello, en abril de 2005 el Dr. Wu-chun Feng introdujo la idea de elaborar un listado con los superordenadores más potentes ordenados según su eficiencia energética4, en paralelo a la lista TOP500. La presentación de esta misma idea de nuevo en 2006 ayudó a incrementar el interés de la comunidad por hacerla realidad y en 2007 se publicó la primera lista Green5005