Diseño y evaluación de un clúster HPC: Aplicaciones Autor: Constantino Gómez Crespo Grado en Ingenierı́a Informática Especialidad en Ingenierı́a de Computadores 26 de Junio de 2014 Director: Agustı́n Fernández Jiménez, Arquitectura de computadores Facultad de Informática de Barcelona Universidad Politécnica de Cataluña (UPC) - BarcelonaTech 2 Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 3 Resumen En este trabajo se presenta un análisis de las aplicaciones utilizadas de manera habitual en el área de la informática conocida como High Performance Computing (HPC). También se hace un inciso en técnicas de optimización para tales aplicaciones mediante el uso de herramientas de profiling, librerı́as y configuración de parámetros. Por último, se realiza la evaluación de rendimiento de un clúster HPC basado en procesadores móviles de bajo consumo. El trabajo tiene como objetivo aprender a construir y optimizar un clúster HPC, acorde con el conjunto de aplicaciones a ejecutar y con la mirada puesta en la eficiencia energética (Energy-to-solution). A destacar, que para la parte final del trabajo se ha montado un clúster con procesadores de bajo consumo, en concreto, System-on-Chip con arquitectura ARMv7 para móviles de Samsung, Exynos 5420. Resum En aquest treball es presenta un anàlisi de les aplicacions utilitzades de manera habitual a l’àrea de l’informàtica coneguda com HPC. També es fa un incı́s en les técniques d’optimització per aquestes aplicacions mitjançant l’ús d’eines de profiling, llibrerı́es i configuració de paràmetres. Per acabar, es realitza la evaluació de rendiment d’un clúster HPC basat en procesadors mòbils de baix consum. Aquest treball té com objectiu aprendre a construir i optimitzar un clúster HPC, concorde amb el conjunt d’aplicacions a executar y amb la mirada posada en la eficiencia energética (Energy-to-solution). Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 4 A destacar, que per la part final del treball s’ha muntat un clúster amb processadors de baix consum, en concret, System-on-Chip amb arquitectura ARMv7 per mòbils de Samsung, Exynos 5420. Abstract This project presents an analysis of the applications commonly used in the area of the computer sciences known as HPC. Also, an introduction in optimization techniques is made for those applications with the use of profiling tools, libraries and parameter configuration. On the last part, a performance evaluation of the HPC cluster based in mobile processors is made. This project has as objective to learn to build and optimize a cluster HPC, according to the set of applications to execute while keeping the energy efficiency in consideration (Energy-to-Solution). As a highlight, for the last part of the project a cluster with low-power mobile processors has been built, in particular, with Samsung’s System-on-Chip with ARMv7 architecture for cellphones Exynos 5420. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 5 Índice general Resumen 4 Prefacio 17 1. Introducción 19 1.1. Orı́genes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.2. Problemática . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.3. Student Cluster Challenge . . . . . . . . . . . . . . . . . . . . . . . . 20 1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.4.1. Objetivos Generales . . . . . . . . . . . . . . . . . . . . . . . 21 1.4.2. Objetivos individuales . . . . . . . . . . . . . . . . . . . . . . 22 2. Planificación y presupuesto 25 2.1. Planificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.1. Estudio Teórico . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.1.2. Aplicación Práctica . . . . . . . . . . . . . . . . . . . . . . . . 25 2.2. Estimación temporal . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2.1. Listado de Tareas . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2.2. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . 29 2.2.3. Recursos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3. Presupuesto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.3.1. Recursos humanos . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.2. Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.3. Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3.4. Gastos generales . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.3.5. Presupuesto total . . . . . . . . . . . . . . . . . . . . . . . . . 33 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 6 Índice general 3. Sumario del Hardware 35 3.1. Sumario del Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.2. Clúster de Arndale Octa . . . . . . . . . . . . . . . . . . . . . . . . . 36 4. Análisis de aplicaciones 39 4.1. Aplicaciones de producción . . . . . . . . . . . . . . . . . . . . . . . 39 4.2. Herramientas de benchmarking . . . . . . . . . . . . . . . . . . . . . 40 4.3. LINPACK Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.3.1. HPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4.4. HPCC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.4.1. DGEMM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.4.2. STREAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 4.4.3. PTRANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4.4. RandomAccess . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4.5. FTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.4.6. Comunications latency and bandwidth . . . . . . . . . . . . . 47 4.5. GROMACS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.6. Microkernels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.6.1. Patrones de acceso a memoria . . . . . . . . . . . . . . . . . . 49 4.6.2. Float-Point peak performance . . . . . . . . . . . . . . . . . . 49 4.6.3. Overhead al paralelizar . . . . . . . . . . . . . . . . . . . . . 49 4.7. Aplicaciones del SCC’14 . . . . . . . . . . . . . . . . . . . . . . . . . 50 4.8. En resumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 5. Optimización de aplicaciones 51 5.1. Medidas de rendimiento . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.1.1. Speed Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 5.1.2. Eficiencia paralela . . . . . . . . . . . . . . . . . . . . . . . . 51 5.1.3. Ley de amdahl . . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2. Herramientas de análisis . . . . . . . . . . . . . . . . . . . . . . . . . 52 5.2.1. EXTRAE y Paraver . . . . . . . . . . . . . . . . . . . . . . . 53 5.3. Instalación y configuración de programas . . . . . . . . . . . . . . . . 53 5.4. Optimizando el fichero de configuración de HPL y HPCC . . . . . . 56 Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 6. Evaluación del clúster 7 59 6.1. Benchmarking single node . . . . . . . . . . . . . . . . . . . . . . . . 59 6.1.1. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.1.2. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 6.2. Benchmarking multi nodo . . . . . . . . . . . . . . . . . . . . . . . . 66 6.2.1. Metodologı́a . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 6.2.2. Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 7. Sostenibilidad 71 7.1. Sostenibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.1. Viabilidad económica 71 . . . . . . . . . . . . . . . . . . . . . . 71 7.1.2. Impacto Social . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.1.3. Impacto Ambiental . . . . . . . . . . . . . . . . . . . . . . . . 72 8. Conclusiones individuales 73 8.1. Evaluación global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 8.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 9. Conclusiones de equipo 75 9.1. Conclusiones de cara a la competición . . . . . . . . . . . . . . . . . 75 9.2. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Agradecimientos 77 Bibliografı́a 80 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 8 Facultat d’Informàtica de Barcelona Índice general Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 9 Índice de figuras 2.1. Listado de Tareas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.2. Diagrama de Gantt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.3. Estado del Laboratorio C6-103 al llegar. . . . . . . . . . . . . . . . . 32 3.1. Vista del clúster (cerveza para comparar la escala) . . . . . . . . . . 36 3.2. Vista del clúster (cerveza para comparar la escala) . . . . . . . . . . 36 3.3. Vista cercana del clúster . . . . . . . . . . . . . . . . . . . . . . . . . 37 3.4. Vista del switch de interconexión . . . . . . . . . . . . . . . . . . . . 37 3.5. Vista general del clúster . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.1. Patrón de acceso a datos según aplicación . . . . . . . . . . . . . . . 44 4.2. Esquema de comunicaciones según la versión de benchmark. . . . . . 44 4.3. Conexiones que realiza MPI en Natural ring . . . . . . . . . . . . . . 47 4.4. Un posible patrón de conexiones que realiza MPI en Random ring . 48 6.1. Ejemplo de fichero de resultados del microkernel N-Body OpenMP . 60 6.2. Speed Up con precisión de 32-bits. . . . . . . . . . . . . . . . . . . . 61 6.3. Speed Up con precisión de 64-bits. . . . . . . . . . . . . . . . . . . . 61 6.4. Comparativa de la eficiencia paralela de simple y doble precisión con 4 threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 6.5. Rendimiento y efficiencia paralela con HPL (single node). . . . . . . 63 6.6. Eficiencia respecto al PP de las primeras posiciones del top500. . . . 64 6.7. Eficiencia energética comparada con las primeras posiciones de Green500. 66 6.8. Gráfica de speed up del cluster ejecutando HPL de 1 a 24 procesadores. 68 6.9. Eficiencia paralela del clúster ejecutando HPL de 1 a 24 procesadores. 69 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 10 Facultat d’Informàtica de Barcelona Índice de figuras Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 11 Índice de cuadros 2.1. Distribución de horas de trabajo según rol. . . . . . . . . . . . . . . 27 2.2. Costes asociados a recursos humanos. . . . . . . . . . . . . . . . . . 31 2.3. Costes derivados de la compra de Hardware. . . . . . . . . . . . . . . 31 2.4. Desglose de los gastos generales. . . . . . . . . . . . . . . . . . . . . 33 2.5. Resumen presupuesto total. . . . . . . . . . . . . . . . . . . . . . . . 33 4.1. Operación y medida de rendimiento de los benchmarks de HPCC. . 43 4.2. Versiones disponibles para cada benchmark. . . . . . . . . . . . . . . 45 6.1. Resumen de resultados de HPCC. . . . . . . . . . . . . . . . . . . . . 70 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 12 Facultat d’Informàtica de Barcelona Índice de cuadros Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 13 Abreviaciones BLAS Basic Linear Algebra Subprograms. 42, 49 BSC Barcelona Supercomputing Center. 30, 48 CPU Central Processing Unit. 35, 48 DGEMM Double-precision GEneral Matrix Multiply. 45 eMMC embeded MultiMediaCard. 35 EP Embarrassingly Parallel. 43, 69 FFT Fast Fourier Transformation. 47, 49 GB Gigabyte. 35 GFLOPS Gigaflops. 42, 47, 59, 60 GPU Graphics Processing Unit. 35 GROMACS GROningen MAchine for Chemical Simulations. 39, 40, 48 GUPS Giga UPdates per Second. 46 HPC High Performance Computing. 3, 4, 17, 20, 22, 25, 30, 71, 72 HPCC High Performance Computing Challenge. 39, 41 HPL High-Performance Linpack. 20, 39, 41, 59, 60, 63, 64 ISC International Supercomputing Conference. 17, 19, 20 LU Lower-Upper. 42 Mbps Mega Bits Por Segundo. 35 MHz Gigahercios. 35 MPI Message Passing Interface. 42, 60 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 14 Abreviaciones PP Peak Performance. 42 SCC Student Cluster Challenge. 17, 19, 20, 22, 25, 39 SD Secure Digital. 35 SIMD Single Instruction Multiple Data. 48 SoC System On Chip. 35, 59, 62, 69 W Vatios. 20, 65, 69, 72 Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 15 Glosario Green500 Ránking de los 500 supercomputadores más potentes del mundo ordenados por eficiencia energética. 59 Top500 Ránking de los 500 supercomputadores más potentes del mundo ordenados por rendimiento. 41 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 16 Facultat d’Informàtica de Barcelona Glosario Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 17 Prefacio Este trabajo forma parte de un proyecto colaborativo de investigación entre estudiantes que se ubica en el área de la informática conocida como HPC. Comparte tı́tulo y se complementa con el trabajo de tres compañeros de proyecto: David Trilla en el ámbito del hardware, Cristóbal Ortega en el de software de sistema y Constantino Gómez por el apartado de aplicaciones. Por tanto, los siguientes capı́tulos son compartidos a nivel de proyecto: este prefacio, introducción, planificación y presupuestos, sostenibilidad y por último conclusiones de equipo. Estos capı́tulos son compartidos porque aportan información esencial común a todo el proyecto, ası́ como una descripción del trabajo conjunto que ha realizado el equipo. Hoy en dı́a el HPC es una de las herramientas principales para el desarrollo de la ciencia. Por norma general las aplicaciones HPC comparten una caracterı́stica común, se pueden desmenuzar en subtareas para poder ası́ ejecutarse de manera paralela en gran cantidad de procesadores. El principal exponente de este tipo de investigación son los supercomputadores, máquinas con capacidades de cómputo muy por encima de la mayorı́a de ordenadores, y que son imprescindibles para casi cualquier campo cientı́fico e investigación. El HPC se encarga de que estas máquinas sigan evolucionando para permitir que la ciencia siga avanzando a pasos cada vez mayores. Una de las conferencias más importantes en materia HPC es la International Supercomputing Conference (ISC). Los asistentes, mayoritariamente profesionales del sector, participan en charlas técnicas, conferencias y talleres entre otros. Para este trabajo, no es el evento principal el que resulta de interés, sino la competición HPC: Student Cluster Challenge (SCC). En esta competición, que participan universidades de todo el mundo, equipos de estudiantes compiten por conseguir los mejores resultados de rendimiento. La creación del grupo responde a dos necesidades: la de dar cabida a los tres aspectos técnicos más importantes de la tecnologı́a HPC en un proyecto común, y segundo, la de formar un equipo y las opciones que se tendrı́an para ganar una competición como la Student Cluster. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 18 Facultat d’Informàtica de Barcelona Glosario Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 19 Capı́tulo 1 Introducción 1.1. Orı́genes A principios de septiembre de 2013, Álex Ramı́rez reúne a 7 estudiantes de la especialidad de ingenierı́a de computadores, entre ellos los 3 integrantes del grupo, y nos propone formar un equipo con intención de participar en la ISC ‘14 que se celebra en Leipzig del 21 al 25 de Junio en 2014 A lo largo de septiembre y octubre se estudian los requerimientos de la competición y elaboramos el documento de inscripción con información de los participantes y un primer planteamiento del clúster. A principios de diciembre la organización nos comunica que no hemos sido admitidos en la competición sin aportar mayor explicación. En enero de 2014 acordamos seguir con el proyecto a modo de TFG pese a no estar admitido. El grupo se reduce a 3 personas: Constan Gómez, David Trilla y Cristobal Ortega. 1.2. Problemática Por un lado la problemática que se plantea es la siguiente: en caso de querer competir en el futuro en una competición como el SCC, qué competencias de equipo y conocimientos técnicos deberı́amos desarrollar. Por otro lado, nos encontramos otro problema, más general y de más alcance, como es el consumo de los supercomputadores hoy en dı́a. Actualmente, el mantenimiento de los centros de computación tiene un coste muy elevado. Gran parte del coste se debe al consumo eléctrico de sus equipos y la refrigeración necesaria para mantenerlos funcionando. Este problema es atacado de forma indirecta en el SCC por la Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 20 Capı́tulo 1. Introducción limitación de consumo a 3.000 Vatios (W), y en el clúster que construiremos con hardware de bajo consumo. Para ayudarnos a definir los objetivos del trabajo, veamos primero en detalle en que consiste la competición. 1.3. Student Cluster Challenge El SCC es una competición que se celebra en el ámbito del ISC, el escaparate sobre HPC en Europa. El evento ISC ‘14 tiene lugar entre los dı́as 21 y 25 de Junio en Liepzig, Alemania. Esta competición será nuestro marco de referencia, dirigiendo nuestro proyecto como si fuéramos a participar en ella, usando sus directrices y parámetros. El evento consiste en reunir a varios equipos, de hasta 6 estudiantes sin graduar, que junto con un pequeño sistema para supercomputación y a lo largo de 4 dı́as, compitan entre ellos en diferentes categorı́as para determinar el sistema ganador, mediante el montaje y la optimización de los parámetros de las aplicaciones. Existen 3 categorı́as a las cuales se opta a premio, la de mejor resultado con HighPerformance Linpack (HPL), que es la versión para HPC del software de benchmarking LINPACK, la de votación a favorito, y la categorı́a general donde cuenta la puntuación total de todos los benchmarks. La caracterı́stica de la competición de premiar al eficiencia da lugar a la principal restricción que se impone en la competición, que limita el “presupuesto para el consumo”. Esto limita el consumo de cualquier clúster en competición, incluyendo sus elementos para interconexión, a un total de 3.000W. [2] Debido a todas las anteriores normas, nuestra intención es diseñar dos clústeres pensados para presentar al concurso. Un clúster teórico, que cumpla los requisitos anteriores, y que nos permitirá liberarnos de la necesidad de depender del coste de su creación, y posteriormente, con el hardware disponible, crear un clúster que pueda ejecutar eficientemente los benchmarks del concurso, con especial atención en el HPL, y que también cumpla la restricción de consumo. 1.4. Objetivos A continuación se desglosan los objetivos generales del proyecto y los objetivos individuales de cada uno de los tres trabajos. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 1.4.1. 21 Objetivos Generales Basándonos en los requerimientos vistos en la sección anterior se establecen los siguientes objetivos generales y su justificación. Hemos dividido el proyecto en dos fases. Objetivos de la primera fase Estudio del estado del arte HPC Diseñar y montar un clúster con un consumo inferior a los 3kW. Para poder diseñar adecuadamente un clúster necesitamos realizar previamente un estudio del estado del arte. De esta manera podremos extraer cuales son los elementos indispensables para su montaje, y además, adquirir otros conocimientos relacionados que nos ayudarán durante todo el desarrollo del proyecto. El segundo objetivo se aborda de dos maneras diferentes. Por un lado se realiza el diseño teórico de un clúster con procesadores y aceleradores convencionales. Por otro, el diseño y montaje de un prototipo de clúster con procesadores móviles de bajo consumo. Dada la necesidad de asistir con un clúster propio a la competición, es necesario trabajar de primera mano con el hardware y el software de sistema para ser más competitivos. Objetivos de la segunda fase Evaluación del clúster basado en procesadores de bajo consumo. En este momento, mediante benchmarks y aplicaciones, realizaremos las pruebas empı́ricas que demostrarán que nuestra solución al problema está a la altura de la competición. En caso de que no estarlo, se buscará poder señalar de manera precisa la causa de las deficiencias de rendimiento (cuellos de botella) ya sean de diseño, de configuración o de uso incorrecto de las herramientas de evaluación. Dado que ningún integrante del grupo ha participado en algún proyecto similar anteriormente, el proceso de evaluación servirá también para el desarrollo de las habilidades de equipo necesarias en la competición, ya que, gran parte de las técnicas y los test aplicados con el fin de optimizar la máquina y las aplicaciones de este trabajo son extrapolables a otras configuraciones de hardware y otros programas. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 22 Capı́tulo 1. Introducción 1.4.2. Objetivos individuales Objetivos de la sección de hardware Fase 1 Investigación sobre el estado del arte del hardware en el mundo de HPC, cuáles son las tecnologı́as más usadas y los componentes necesarios para construir un clúster. Crear un clúster para HPC de manera conceptual para poder competir en el SCC, sin limitación económica. Evaluar la tecnologı́a usada en el SCC y las capacidades del clúster teórico diseñado. Fase 2 Analizar el hardware a nuestro alcance, disponible para construir un clúster para HPC. Montar y configurar el hardware para tener una plataforma funcional con múltiples nodos sobre la que poder ejecutar software Evaluar el rendimiento del hardware, las diferencias entre los resultados esperados y los reales, y comparar con el clúster conceptual de la primera fase y otros sistemas con tecnologı́as distintas. Objetivos de la sección de software de sistema Fase 1 Investigar que software de sistema es necesario habitualmente para correr aplicaciones del tipo HPC. Estudiar el estado actual en los sistemas de supercomputación para saber que stack de software usan. Seleccionar el software de sistema que necesitemos y elegir el que mejor se nos adapte a nosotros, ya sea por compatibilidad con el hardware o aplicaciones a correr, por documentación existente o requisitos diversos. Fase 2 Basado en la fase 1, instalar y configurar todo el stack de software para crear un clúster totalmente funcional. Es posible que haya que seleccionar otro tipo de software por la plataforma usada. Experimentar con distintas versiones de paso de mensajes MPI para saber realmente cuál se adapta a nuestro sistema Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 23 Objetivos de la sección de aplicaciones Fase 1 Investigar las aplicaciones en el estado del arte actual y analizar las más relevantes para nuestro proyecto. Averiguar que opciones existen de cara a optimizar las aplicaciones que se ejecutarán en el clúster. Fase 2 Evaluar el rendimiento de las aplicaciones descritas a nivel de nodo y a nivel de clúster. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 24 Facultat d’Informàtica de Barcelona Capı́tulo 1. Introducción Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 25 Capı́tulo 2 Planificación y presupuesto 2.1. 2.1.1. Planificación Estudio Teórico La primera fase, es de investigación activa, sobre HPC y el SCC, e información sobre todo lo necesario para la instalación y preparación de un clúster. Esto incluye hardware, software de sistema y aplicaciones. Esta parte del proyecto recabará la información necesaria para elaborar un clúster teórico con el que ir a competir en el SCC. No se esperan grandes contratiempos durante esta fase. Los problemas que puedan surgir serán derivados de la poca información disponible sobre algunos componentes del clúster. 2.1.2. Aplicación Práctica La segunda fase, basada en la experimentación, es en la cual usamos la información recogida en la fase anterior para crear un clúster totalmente funcional. En esta fase es donde es más probable que surjan dificultades técnicas, ya que al ser un mundo casi nuevo, como por ejemplo, que la información recogida en la fase anterior no se ajuste a nuestra arquitectura o software escogido. Los posibles retrasos de ponernos a montar el clúster, instalación de software y benchmarks deberemos tenerlos en cuenta y aplazar el resto de tareas que tengamos, como es la optimización de software y aplicaciones, esto implica que obtendremos peores rendimientos de los que realmente podrı́amos conseguir. Ya que para poder obtener las métricas de rendimiento necesitamos un clúster funcionando. Y aunque no sea un clúster optimizado todo lo posible, el objetivo de tener un clúster de HPC estará conseguido. Los posibles retrasos que aparezcan en esta sección puede aparecer de errores e incompatibilidades en la fase de instalación del clúster, el tiempo Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 26 Capı́tulo 2. Planificación y presupuesto adicional será recortado de las tareas más opcionales dispuestas al final del proyecto, correspondientes a la parte de optimización, lo que implicará que obtendremos peores rendimientos de los que realmente podemos conseguir, ya que la instalación y puesta en marcha del clúster es esencial, sin embargo el proyecto estará finalizado ya que tendremos un clúster totalmente funcional. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 2.2. 27 Estimación temporal La temporización en este proyecto toma especial importancia por dos motivos: hay un gran volumen de tareas a realizar que requieren un esfuerzo conjunto y la alta incertidumbre que albergan algunas de ellas. Debido a las fuertes dependencias entre tareas es imprescindible tener en mente las fechas comprometidas para garantizar que todo el grupo cumple con sus objetivos. Desde el principio se acuerdan unas horas fijas de dedicación semanal en grupo. Por un lado, nos ayudará a empezar con buen ritmo con la parte teórica y a funcionar como un equipo, y por otro, tener margen de reacción de cara al final del proyecto donde se prevén más problemas. Tarea Estudio previo Montaje y configuración Benchmarking Análisis de resultados Dedicación por persona 125h 155h 35h 60h Cuadro 2.1: Distribución de horas de trabajo según rol. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 28 Capı́tulo 2. Planificación y presupuesto 2.2.1. Listado de Tareas Figura 2.1: Listado de Tareas Facultat d’Informàtica de Barcelona Constantino Gómez Crespo 2.2.2. Diagrama de Gantt 29 Figura 2.2: Diagrama de Gantt 30 Capı́tulo 2. Planificación y presupuesto 2.2.3. Recursos Los recursos que tendremos para este proyecto serán principalmente humanos, tendrán un papel importante para el estudio teórico, el montaje y configuración del clúster. Para la parte de estudio, nos apoyaremos en publicaciones cientı́ficas, revistas y papers, además de sitios online especializados de este tipo de hardware y software. También se hará uso de libros que puedan tratar los temas de HPC o clústeres, pese a que estos se prevén en menor medida. Para la parte práctica del montaje del clúster dispondremos principalmente del hardware que nos ofrezca el departamento de computadores y el sitio en el que nos permita colocarlo. Para realizar las medidas de consumo energético se ha dispuesto de un medidor de potencia Yokogawa cedido por el Barcelona Supercomputing Center (BSC). Finalmente, otros recursos utilizados son los ordenadores personales para la redacción de la memoria y conectar en remoto al hardware de desarrollo. 2.3. Presupuesto El proyecto se basa en montar un clúster y configurarlo de manera correcta para poder ejecutar aplicaciones HPC en él. En este documento se hace una estimación del precio de los recursos que se usarán a lo largo del trabajo. Las amortizaciones se calcularán respecto a 6 meses. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 2.3.1. 31 Recursos humanos Se necesitan técnicos que se encarguen de diseñar, instalar y configurar dicho clúster. Siendo 3 personas en este proyecto, repartiremos las mismas horas para todos. Dentro de cada bloque de horas, cada uno se centrará en una de las divisiones lógicas que hemos establecido: hardware, software de sistema y aplicaciones. Para las decisiones de elección de componentes se han considerado horas de Director de proyecto. Para el montaje e instalación del clúster se necesitarán competencias de Administrador de Sistema. Para realizar los benchmarks adecuados e interpretar resultados se han considerado horas de Analista. Los datos que utilizamos están basados en portales online de ofertas laborales. Rol Director de proyecto Administrador de sistema Analista Total Horas estimadas Precio por hora Total por persona Total grupo 125h 155h 95h 375h 50e/h 26e/h 30e/h 6250e 4030e 2850e 18750e 12090e 8550e 39390e Cuadro 2.2: Costes asociados a recursos humanos. 2.3.2. Hardware Para la segunda parte del proyecto será esencial el hardware que adquiramos para poder trabajar con él. Datos obtenidos de tiendas online. Producto Arndale Octa(Exynos 5420) Fuentes de alimentacion Tarjetas SD Power meter Yokogawa Switch Netgear 100-Mbit 1TB Hard Drive Storage 125M cat 5E FTP Total Precio unitario Unidades 150e 5e 7.5e 1830e 89e 70e 68e 6 6 12 1 1 1 1 Vida útil 5 5 5 15 10 7 20 Amortización total años años años años años años años 90e 3e 9e 61e 4.45e 5e 1.7e 174.15e Cuadro 2.3: Costes derivados de la compra de Hardware. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 32 Capı́tulo 2. Planificación y presupuesto Tanto las placas Arndale Octa como las fuentes de alimentación y el medidor de potencia Yokogawa han sido cedidos por el BSC. El resto del material ha sido cedido por el departamento de Arquitectura de Computadores. Al final de la realización del proyecto se espera deshacer el montaje y retornar ı́ntegro todo el material para su posterior reutilización en otras actividades de investigación o proyectos. 2.3.3. Software El software requerido para la instalación, benchmarking y análisis de la máquina es de acceso gratuito. Gran parte de de los programas tienen licencias de Software Libre, y las que no, disponen de versiones gratuitas con propósito no comercial. Necesitaremos distinto software de sistema para gestionar la máquina como aplicaciones para medir su rendimiento. 2.3.4. Gastos generales Necesitaremos un sitio donde instalar el clúster fı́sicamente, para ello necesitaremos un sitio con espacio y una instalación eléctrica adecuada además de Internet para tener acceso a los sistemas desde fuera. El laboratorio C6-103 cedido también por el departamento de AC cuenta con todo lo necesario para la realización del proyecto. Se ha hecho una estimación del coste que supondrı́a disponer de un espacio similar. Figura 2.3: Estado del Laboratorio C6-103 al llegar. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones Concepto Espacio fı́sico Electricidad Internet Total 33 Coste hora Coste total 0.368e 0.083e 0.07e 1590e 358e 300e 2248e Cuadro 2.4: Desglose de los gastos generales. 2.3.5. Presupuesto total Concepto Recursos humanos Hardware Software Gastos generales Total Coste estimado + Impuestos 39390e 174.15e 625e 2248e 42437.15e 51600.9e(31 % S.S.) 210.7e(21 % IVA) 300e(21 % IVA) 2720.08e(21 % IVA) 54831.68e Cuadro 2.5: Resumen presupuesto total. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 34 Facultat d’Informàtica de Barcelona Capı́tulo 2. Planificación y presupuesto Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 35 Capı́tulo 3 Sumario del Hardware 3.1. Sumario del Hardware En resumen el hardware usado que constituye al clúster es el siguiente: Nodo: Arndale Octa (x6) • System On Chip (SoC): Samsung Eynos 5420 ◦ Central Processing Unit (CPU): ARM Cortex-A15 (x4) + ARM Cortex-A7 (x4) ◦ Graphics Processing Unit (GPU): Mali T-628 ◦ Memoria: 2 Gigabyte (GB) 933 Gigahercios (MHz) • 100 Mega Bits Por Segundo (Mbps) Interfaz Ethernet • Almacenamiento: ◦ 4 GB embeded MultiMediaCard (eMMC) ◦ 16 GB Secure Digital (SD) Switch: NetGear FS524 Cables Ethernet Cobre (x6) Transformadores (x6) Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 36 Capı́tulo 3. Sumario del Hardware 3.2. Clúster de Arndale Octa Figura 3.1: Vista del clúster (cerveza para comparar la escala) Figura 3.2: Vista del clúster (cerveza para comparar la escala) Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 37 Figura 3.3: Vista cercana del clúster Figura 3.4: Vista del switch de interconexión Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 38 Capı́tulo 3. Sumario del Hardware Figura 3.5: Vista general del clúster Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 39 Capı́tulo 4 Análisis de aplicaciones En esta sección tiene como propósito presentar y analizar las aplicaciones con las que se trabajará a lo largo del proyecto. Algunas de estas aplicaciones tienen especial relevancia, ya sea por su papel en el estado del arte actual o en la competición SCC. En concreto veremos: Los benchmarks HPL y High Performance Computing Challenge (HPCC), en ellos centraremos la mayor atención, ya que son dos aplicaciones a las que se deben enfrentar cada año los equipos de la SCC, y además son utilizadas para confeccionar los ránkings oficiales de rendimiento de clústers. GROningen MAchine for Chemical Simulations (GROMACS) nos servirá como ejemplo para ver que tipo de aplicaciones cientı́ficas se ejecutan en los supercomputadores. Finalmente listamos y describimos los microkernels que han sido utilizados en la evaluación del clúster final y que implementan algoritmos de uso recurrente en HPC. Se ha decidido dejar fuera del análisis las aplicaciones especı́ficas para esta edición del SCC por el tiempo que llevarı́a trabajar con ellas. Al final veremos una lista y una breve descripción de cuáles son. En el estado del arte actual podemos agrupar entonces en dos grupos, aplicaciones de producción y las de benchmarking. 4.1. Aplicaciones de producción Usaremos el término aplicación de producción para referirnos a aquellas aplicaciones que tienen un uso directo en la investigación o industria. Principalmente, estas Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 40 Capı́tulo 4. Análisis de aplicaciones aplicaciones implementan modelos matemáticos y permiten simular experimentos o fenómenos fı́sicos. Una manera general de determinar la calidad de este tipo de aplicaciones es la relación entre el volumen de datos de entrada, la precisión y el tiempo en obtener los resultados. Generalmente, el volumen de datos a procesar de estas aplicaciones es enorme, ası́ que para poder obtener resultados en un espacio de tiempo razonable, es necesario utilizar ordenadores con gran capacidad de cálculo. Es por tanto que cuando se diseña un clúster HPC el principal objetivo es el de conseguir una configuración de hardware que ofrezca buenos resultados en la aplicación o conjuntos de aplicaciones que queremos ejecutar en él. Las aplicaciones de producción pueden ser usadas, entre otros, en la simulación de dinámica de fluidos, que permite observar el comportamiento fı́sico de materiales o elementos fluidos. Un ejemplo concreto puede ser la simulación de la aerodinámica de un coche dentro de un túnel de viento. Otro uso es en dinámica molecular, permitiendo realizar pruebas con fármacos sin necesidad de usar personas u otros animales. Un ejemplo de este tipo de aplicaciones es GROMACS, explicado un poco más adelante. 4.2. Herramientas de benchmarking Comúnmente, los benchmarks realizan operaciones simples con el fin de estresar partes del hardware y obtener una medida de rendimiento de éstas. Estas medidas de rendimiento las compararemos a su vez con otras obtenidas en otras condiciones, ya sea porque hemos modificado algún parámetro de ejecución o porque han sido obtenidas en otro clúster. Es importante conocer en que consisten dichas operaciones para poder hacer un uso inteligente de estas herramientas. Obtener buen rendimiento al ejecutar una aplicación de producción concreta no implica que el resto de aplicaciones vayan a obtener también buen rendimiento. A bajo nivel esto puede ser debido a muchas causas: diferente patrón de accesos a memoria, número de llamadas a sistema, mal balanceo de carga, etc. En resumen diremos que cada aplicación tiene necesidades computacionales diferentes. Es por eso que nos interesa poder evaluar de manera consistente los recursos hardware del clúster. Por consistente nos referimos a obtener valores que representen las capacidades de la máquina en todos sus niveles. Capacidades de cómputo, comunicaciones, memoria y la escalabilidad al ejecutar aplicaciones. Por ejemplo, supongamos que queremos hacer una estimación del rendimiento que se obtendrá en un tipo de aplicación que hace cálculo intensivo con operaciones de coma flotante, y cuyos accesos a datos son mayoritariamente a vectores en orden secuencial . Podemos prever el rendimiento basándonos en los resultados obtenidos en Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 41 la ejecución en el mismo clúster de un benchmark que tenga caracterı́sticas similares. Hemos seleccionado los benchmark HPL y HPCC, para determinar en qué nos pueden ayudar, y que más tarde nos permitirá hacer una evaluación lo más completa posible del clúster que se ha montado. 4.3. LINPACK Benchmarks LINPACK es una librerı́a de álgebra linear. Originalmente fue escrita en Fortran 66 en 1980 y su propósito era el de ser utilizada en supercomputadores.[22] Basándose en esa librerı́a, se crearon una serie de benchmarks con el propósito de medir la potencia computacional en FLOPS (de doble precisión) de un sistema. Estos benchmarks se conocen como LINPACK Benchmarks. Los LINPACK Benchmarks generan y calculan la solución de un sistema de ecuaciones denso del tipo Ax = b y de tamaño N xN [23]. a1,1 a2,1 .. . a1,2 a2,2 .. . an,1 an,2 . . . a1,n x1 b1 . . . a2,n x2 b2 .. .. = .. .. . . . . . . . an,n xn bn El primero fue LINPACK 100, que como indica el nombre, ofrecı́a medidas de rendimiento resolviendo sistemas de tamaño N = 100. Las siguientes versiones, LINPACK 1000 y HPLinpack, se crean para poder evaluar supercomputadores con más potencia y nuevas arquitecturas (memoria distribuida).[13] 4.3.1. HPL HPL website: http://www.netlib.org/benchmark/hpl/ HPL es la implementación de HPLinpack Benchmark más relevante. Es una versión paralela y escalable preparado para ejecutarse con un modelo de memoria distribuida. Es el benchmark utilizado para elaborar la lista Top500 de supercomputadores www.top500.org. Está implementación es mantenida por la Universidad de Tenesse y actualmente se encuentra en la versión 2.1 de Octubre 2012, está escrita en C para facilitar su portabilidad. Para su ejecución HPL requiere tener instaladas en el sistema librerı́as Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 42 Capı́tulo 4. Análisis de aplicaciones que implementen Message Passing Interface (MPI) y Basic Linear Algebra Subprograms (BLAS).[1] Complejidad y tamaño del problema Para resolver el sistema de ecuaciones, HPL utiliza el método de factorización LowerUpper (LU) y luego resuelve el sistema triangular superior (U) U x = y. La complejidad de este método es 32 n3 + 2n2 , es decir, necesitamos esa cantidad de operaciones de coma flotante (64-bits) para obtener la solución al sistema. De ahı́ extraemos la fórmula que utiliza HPL para medir el rendimiento en Gigaflops (GFLOPS). PHP L = 2 3 3n + 2n2 tsegundos 10−9 (4.1) Cabe decir que en caso de querer optimizar la implementación, queda excluido cualquier método que varie la complejidad del algoritmo (p.ej: algoritmo de Strassen), ya que se deberı́a modificar también la fórmula del rendimiento. Serı́a utilizar un benchmark diferente. El espacio en memoria durante la ejecución depende de la matriz A, siendo la matriz A de tamaño n por n, esta ocupará 8n2 bytes. Los datos que componen la matriz A y el vector b se obtienen a partir de un generador pseudo-aleatorio de números decimales con una media esperada de cero[9]. Eficiencia paralela Con el fin de balancear el volumen de trabajo a realizar en cada nodo, HPL divide en bloques de tamaño BSxBS y los distribuye de manera cı́clica entre procesos[9]. El número de operaciones a realizar es proporcional al tamaño de los datos de entrada. Debido al blocking, el patrón de acceso a memoria explota la localidad espacial y temporal de la cache. Si bien en algún momento se requiere comunicación entre procesos todos-con-todos, el mayor estrés lo sufren las unidades de coma flotante y la conexión de los registros a la caché de cada procesador. Al final de la ejecución se obtiene una medida del rendimiento en GFLOPS. Una ejecución de HPL optimizada suele moverse en el margen de 70-80 % del Peak Performance (PP). Hemos dicho que HPL nos da una medida de rendimiento, sin embargo esta medida solo se puede extrapolar a aplicaciones que hagan un uso similar de los recursos Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 43 de la máquina. ¿Qué pasa con el resto de aplicaciones que usan diferentes de recursos? Hay que seguir haciendo benchmarking. 4.4. HPCC HPCC website: http://icl.cs.utk.edu/hpcc/ HPCC (High Performance Computing Challenge) es una colección de benchmarks confeccionada con el propósito es el de ofrecer medidas de rendimiento de un sistema HPC más completas que las que ofrece HPL, para ello, utiliza variedad de aplicaciones con diferentes tipos de operaciones y patrones de acceso a memoria. HPCC es desarrollado por la Universidad de Tenesse bajo el programa DARPA HPCS[5]. Los desarrolladores de HPCC mantienen además un ránking propio en la sección results de su página web. Anualmente se celebra una competición, que tiene lugar en la Supercomputer Conference, llamada HPC Challenge Awards Competition, y dónde se premia al mejor resultado del ránking y a la mejor implementación de una lista de kernels seleccionados[7]. El listado de benchmarks que componen HPCC, una breve descripción de la operación que realizan y la medida de rendimiento obtenida en cada uno de ellos se puede ver en la tabla 4.2. Benchmark Operación Medida HPL DGEMM STREAM PTRANS RandomAccess FFT b eff Resuelve un sistema de ecuaciones Multiplicación de matrices (64-bit) Conjunto de operaciones con vectores Transposición de matrices Acceso aleatorio a datos enteros Transformada discreta de Fourier Varios patrones de comunicación MPI GFLOPS GFLOPS GB/s GUP/s GUP/s GFLOPS GB/s Cuadro 4.1: Operación y medida de rendimiento de los benchmarks de HPCC. Una representación gráfica del grado y tipo de localidad de los accesos a memoria se puede ver en la figura 4.1. De cada benchmark podemos encontrar hasta tres versiones: Single, Embarrassingly Parallel (EP) y Global. Estas versiones pretenden estresar diferentes partes del hardware suponiendo varios escenarios: uniprocesador, multiprocesador y multinodo. En las versiones single el benchmark se ejecutará utilizando de manera aislada los cores de nuestro clúster, por tanto, no hay comunicación de ningún tipo ni entre procesadores ni entre nodos. Sirve como medida base para evaluar la escalabilidad Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 44 Capı́tulo 4. Análisis de aplicaciones Figura 4.1: Patrón de acceso a datos según aplicación de la aplicación en nuestro sistema. Las versiones Embarrasingly Parallel solo se permiten la comunicación entre cores del procesador de un mismo nodo. Ejecutan el benchmark una vez por nodo y se quedan con la mejor. Permite determinar la eficiencia paralela a nivel de nodo. Las Global apuntan a hacer un uso completo del clúster, durante la ejecución habrá comunicación entre procesadores de diferentes nodos para obtener datos de la memoria. Permite determinar la eficiencia paralela a nivel de clúster y evaluar el rendimiento de la red de comunicación entre nodos. Nota: Los nombres que reciben estas versiones en los informes de resultados son Single, Star y MPI. Una representación gráfica del comportamiento de las versiones descritas puede verse en la figura 4.2 Figura 4.2: Esquema de comunicaciones según la versión de benchmark. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 45 Las versiones disponibles para cada uno de los benchmarks en la tabla ?? Benchmark HPL DGEMM STREAM PTRANS RandomAccess FFT Single EP X X X X X X X X Global X X X X Cuadro 4.2: Versiones disponibles para cada benchmark. A continuación un pequeño análisis individual de las aplicaciones. Se excluye HPL por que ya ha sido explicada anteriormente. 4.4.1. DGEMM Double-precision GEneral Matrix Multiply (DGEMM), se define como una operación de multiplicación de matrices A y B tal que C ← αAB + βC donde A, B, C ∈ Rn×n , α, β ∈ R y n ∈ N. La complejidad de la región a evaluar es de 2n3 operaciones de coma flotante . Como en HPL, no se puede aplicar ninguna optimización que reduzca la complejidad del algoritmo. Por defecto en esta implementación, resuelve la multiplicación con una llamada a la correspondiente rutina CBLAS. El uso de recursos hardware del multiprocesador dependerá de las optimizaciones en la librerı́a instalada(multithreading, vectorización, etc). De todos modos, como HPL, en DGEMM el mayor estrés lo sufre el canal de registros a caché[4]. 4.4.2. STREAM STREAM permite medir el ancho de banda entre el procesador y la memoria principal haciendo operaciones simples con vectores de gran tamaño. Se compone de 4 test u operaciones. Supongamos los vectores a, b, c ∈ Rn y los escalares α, β ∈ R : COPY, c ← a SCALE, b ← αc ADD, c ← a + b TRIAD, a ← b + αc Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 46 Capı́tulo 4. Análisis de aplicaciones En estas operaciones no hay reaprovechamiento de datos, pero los accesos son secuenciales, ası́ que se aprovecha al máximo la localidad espacial. Cada una se mide en regiones de tiempo diferentes pero se repiten almenos 10 veces dentro de cada región para obtener una mejor muestra. El tamaño de datos para vectores de m elementos es 16m bytes para COPY y SCALE, y 24m bytes para ADD y TRIAD, con complejidad 2n y 3n respectivamente. La medida de rendimiento obtenida se expresa en GB/s que representa el ancho de banda sostenido de acceso a la memoria RAM de un nodo[4]. 4.4.3. PTRANS Los benchmarks explicados a partir de ahora están pensados para testear la capacidad de comunicaciones de la red. PTRANS, Parallel TRANSposition, realiza la transposición de una matriz A y le suma una matriz B. Descripción de la operación: A = AT + B donde A, B ∈ Rn×n . Para transponer la matriz se asigna un bloque de datos a cada proceso MPI y entre ellos se comunican por parejas. El rendimiento y el tamaño son O(n2 ), y los datos que contienen las matrices se generan de manera aleatoria. 4.4.4. RandomAccess RandomAccess mide la tasa de actualizaciones aleatorias de memoria con enteros, esta medida se expresa en Giga UPdates per Second (GUPS). Este benchmark tiene implementaciones de las tres versiones. Se crea una tabla T de tamaño 2n y una secuencia Ai de de enteros de 64 bits de longitud 2n+2 generados con la función x2 + x + 1. La secuencia pseudo-aleatoria nos servirá para indicar a que posición de la tabla se deben hacer las actualizaciones de memoria. En la implementación MPI cada procesador genera una parte de la secuencia de ı́ndices y realiza sus propias actualizaciones de memoria, en consecuencia se generan gran cantidad de mensajes de poco tamaño siendo necesario comunicación todos con todos. De este modo se permite analizar el impacto la latencia introducida en el paso de mensajes. La comunicación ser realiza todos-con-todos. Los accesos aleatorios provocan que no exista ningún tipo de localidad y poder evitar el aprovechamiento de la jerarquı́a de memoria (especialmente los niveles de cache) y poder determinar el coste con máxima penalización de acceder a memoria compartida en nuestro sistema [8]. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 4.4.5. 47 FTT Fast Fourier Transformation (FFT), calcula la transformada de fourier de un vector unidimensional de gran tamaño. Este kernel es habitualmente utilizado en aplicaciones reales. Siendo N es el numero de datos (tamaño del vector) y x, z ∈ Cn . Zk = n−1 X xj e−2iπjk/n ; 1≤k≤n (4.2) j=0 Los resultados de este benchmark se expresan en GFLOPS, es calculado en base al tiempo y la complejidad del algoritmo 5n log2 n. Durante la ejecución hay un gran volumen de intercambio de mensajes largos entre procesadores[4]. 4.4.6. Comunications latency and bandwidth Sirve para medir el ancho de banda efectivo y la latencia de la red de interconexión del clúster mediante mensajes punto a punto MPI. No se realizan cálculos de ningún tipo dentro de la región evaluada. Basado en b eff pero con cambios en los patrones de comunicaciones, el número de operaciones que ejecuta es directamente proporcional al numero de procesadores [5]. En concreto, obtiene medidas de latencia y ancho de banda con 3 patrones: Pingpong, Natural Ring y Random ring. 1 2 3 4 5 6 Figura 4.3: Conexiones que realiza MPI en Natural ring Para medir latencia cada nodo intercambia mensajes de 8 bytes de tamaño, para medir el ancho de banda los mensajes son de 2 MB. Se realizan conexiones en los dos sentidos. La latencia se expresa en milisegundos y en ancho de banda en GB/s como es habitual. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 48 Capı́tulo 4. Análisis de aplicaciones 1 4 3 6 2 5 Figura 4.4: Un posible patrón de conexiones que realiza MPI en Random ring 4.5. GROMACS GROMACS es un paquete de software de dinámica molecular que permite hacer simulaciones con sistemas de cientos de millones de partı́culas. Fue desarrollado originalmente por la Universidad de Groningen y hoy en dı́a es mantenido por la comunidad cientı́fica y universidades de todo el mundo. Una de sus particularidades es que implementa gran cantidad de optimizaciones para mejorar su rendimiento. Entre ellas, el uso de librerı́as matemáticas optimizadas, inclusión en el código soporte hasta la última versión Single Instruction Multiple Data (SIMD) x86 y soporte para CUDA 2.0 en adelante[10]. Un caso de uso de esta aplicación es la plataforma de computación distribuida folding@home de la Universidad de Stanford, esta plataforma permite a los usuarios colaborar en proyectos de investigación cientı́fica, principalmente relacionadas con al cura de enfermedades, cediendo tiempo de CPU de sus ordenadores domésticos. El procedimiento es el siguiente: un proveedor central, servidores de la Universidad de Stanford, despacha unidades de tareas a los ordenadores que tienen el cliente de la plataforma instalado. En baja prioridad, para no interferir con las tareas que este realizando el usuario, mediante el uso de la CPU y/o GPU se ejecutan programas como GROMACS. Como entrada de datos se utiliza la unidad de trabajo asignada en ese momento. Al terminar los cálculos, el cliente envı́a los resultados a los servidores centrales y vuelta a empezar[19] [21]. 4.6. Microkernels Usaremos el término microkernel para referirnos a pequeños programas que implementan algoritmos usados habitualmente en software de investigación cientı́fica. Los microkernels aquı́ descritos forman parte de un conjunto de benchmarks desarrollados en el BSC y utilizados en el proyecto Mont-blanc para obtener mediciones de rendimiento de sus plataformas [16] [12]. Cada microkernel pone a prueba diferentes partes de la microarquitectura del SoC/máquina a evaluar; se han agrupado por este criterio. A continuación una breve descripción de cada uno [11]. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 4.6.1. 49 Patrones de acceso a memoria Vector operation. Toma dos vectores de un tamaño N y genera el resultado de un tercero de tamaño N. Realiza sumas uno a uno entre los dos vectores. Permite evaluar el acceso a datos secuencial (localidad espacial). 2D Convolution y 3D stencil. Toman como entrada una matriz 2D de tamaño N xN y una 3D de tamaño N xN xN respectivamente. Ambos generan resultados del mismo tamaño que sus entradas y calculan cada posición de la matriz resultado a partir de la entrada como una combinación lineal del mismo punto y sus adjacentes. Estos benchmarks permiten evaluar el rendimiento de las GPU cuando se realizan accesos a memoria de tipo strided y cuando son intercalados con accesos secuenciales. N-Body. Simula la interacción gravitacional entre una serie de partı́culas con velocidad, masa y posición propias. Evalúa el rendimiento frente a un patrón de accesos a memoria irregular. 4.6.2. Float-Point peak performance FFT y DMMM, son implementaciones de las conocidas rutinas de multiplicación de matrices y transformada de Fourier. Ya han sido explicados en la sección HPCC. Se pueden optimizar mediante el uso de BLAS y FFTW. Atomic Monte-Carlo Dynamics . Su caracterı́stica principal es que al realizar simulaciones independientes, durante su ejecución paralela, no necesita comunicación entre entre threads permitiendo obtener medidas de rendimiento pico. 4.6.3. Overhead al paralelizar La ejecución en paralelo de un programa siempre introduce un overhead respecto a su versión serie. Según el tipo de aplicación el sincronismo entre threads y la serialización al reducir puede suponer una caı́da en el rendimiento importante. Los siguientes tres microkernels nos ayudarán a evaluar el rendimiento que ofrece nuestro multiprocesador en estos casos. Reduction. A partir de un vector de entrada calcula un único valor escalar resultado de la suma por etapas de los elementos del vector. Útil para evaluar como las GPUs pasan progresivamente de el calculo masivo en paralelo a secuencial. Histogram. Calcula el histograma de un vector, como en el caso de reduction evalúa el rendimiento al reducir operaciones con mucho paralelismo. Merge Sort. Evalúa los posibles cuellos de botella derivados del uso de barreras Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 50 Capı́tulo 4. Análisis de aplicaciones de sincronización. 4.7. Aplicaciones del SCC’14 En este apartado mencionamos el conjunto de aplicaciones especificas para la edición de este año del SCC. Quantum ESPRESSO es un paquete de software que integra diversos programas para cálculos eléctrico-estructurales y modelado de materiales. Totalmente Open Source se puede descargar y obtener mucha documentación de su página web. [15] OpenFOAM (Open Field Operation and Manipulation) también Open Source es un paquete de software que permite realizar un gran rango de simulaciones: desde dinámica de fluı́dos hasta transferencia de calor. [14] Por último, GADGET software para simulaciones N-body/SPH (Smoothed-particle Hydrodinamics) [18]. 4.8. En resumen De cara a evaluar de manera completa nuestro clúster serı́a conveniente ejecutar al menos HPL y HPCC. En concreto, la potencia de cálculo la mediremos con HPL, DGEMM y FFT. El ancho de banda a memoria RAM con STREAM. Finalmente las capacidades de la red de interconexión se pueden medir con los test de conectividad de HPCC y el acceso a memoria distribuida de manera más aplicada con PTRANS y RandomAccess. Los microkernels, por la implementación de la que disponemos, solo se usarán para evaluar el rendimiento en modo nodo único (Single Node). Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 51 Capı́tulo 5 Optimización de aplicaciones Una vez se consigue la ejecución correcta de una aplicación, es el momento de analizar el rendimiento obtenido y a partir de ahı́ pensar que optimizaciones se pueden aplicar para mejorar tales resultados. 5.1. Medidas de rendimiento A continuación se comentan las principales medidas de rendimiento utilizadas para evaluar el rendimiento de un clúster y el impacto de las optimizaciones. 5.1.1. Speed Up Speed Up indica la mejora de rendimiento obtenida relativa a una ejecución base. En paralelismo, se toma como base la ejecución secuencial (T1 ) y con ella se relacionan el resto de ejecuciones incrementando el número de procesadores (Tp donde p es el número de procesadores)[6]. SpeedU p = 5.1.2. T1 Tp (5.1) Eficiencia paralela La eficiencia paralela es la relación entre el Speed Up y el número de procesadores utilizados en la aplicación. Ef fp = Sp P (5.2) De manera ideal, el tiempo de ejecución de un programa se reduce de manera proporcional al número de procesadores que utilizamos, es decir, respecto a un procesador, Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 52 Capı́tulo 5. Optimización de aplicaciones si usamos 4 procesadores va 4 veces más rápido (Speed Up 4x). El valor de la eficiencia en estos casos es 1 (el máximo). En la práctica esto no sucede, hay mucha maneras de perder eficiencia: creación de threads (overhead llamadas a sistema), dependencias (barreras de sincronismo), granularidad de tareas o scheduling inadecuado provocando problemas de desbalanceo de carga, uso de un algoritmo con insuficiente grado de paralelismo respecto al número de procesadores, false sharing, mala red de interconexión, etc. Existen dos tipos de escalabilidad: strong scaling se define como la variación de tiempo con en base a un número de procesadores variable y un tamaño de problema fijos, y weak scaling que es el caso inverso, mismo número de procesadores y tamaño de problema variable. 5.1.3. Ley de amdahl La ley de amdahl se utiliza para obtener el valor de mejora máxima alcanzable por un programa cuando únicamente se mejora una parte. La ley de amdahl aplicada a un programa paralelo es la siguiente (γ es la región paralela del programa y p el número de procesadores): Sp = 1 (1 − γ) + γ p (5.3) La metodologı́a para la optimización de rendimiento basada en la ley de amdahl consiste en lo siguiente, se localizan las funciones del programa donde se invierte el mayor tiempo y es ahı́ donde se concentran los esfuerzos de optimización. Esto es exactamente lo que se pretende mediante el uso de HPC, utilizar muchos procesadores para reducir el tiempo de ejecución de la región paralela de la aplicación. Con este propósito usaremos herramientas de análisis de rendimiento paralelo. 5.2. Herramientas de análisis Mediante el uso de herramientas de análisis de rendimiento se pretende obtener la información relevante asociada a la ejecución de una aplicación, de esta manera encontraremos los cuellos de botella causantes del mal rendimiento. Estos análisis sirven para indicar qué optimizaciones darán mayor Speed Up, y es más, tratar de optimizar una aplicación sin realizar análisis puede suponer grandes pérdidas de tiempo. Para hacer mediciones en un clúster multinodo se requieren aplicaciones capaces Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 53 de recopilar información, en forma de trazas, de la ejecución de todos los procesos de la aplicación distribuidos por el clúster. Una de estas herramientas es EXTRAE. 5.2.1. EXTRAE y Paraver EXTRAE es una herramienta software que permite generar trazas de aplicaciones paralelas mediante instrumentación. En estas trazas se recopila información de los contadores de sistema, numero de accesos a funciones y su temporización. Es capaz de instrumentar aplicaciones programadas con MPI, OpenMP, pthreads, OpenCL y StarSS. EXTRAE también ofrece una API que nos permite instrumentar el código manualmente. La herramienta dispone de varios métodos mediante los cuales es capaz de instrumentar y obtener trazas. Ofrece soporte para DynINST, una librerı́a que permite inyectar instrucciones en binarios de manera dinámica y estática. Otra manera de instrumentar es inyectando librerı́as compartidas durante la precarga de un ejecutable. Esto se consigue editando la variable de entorno en Linux LD PRELOAD. Durante la precarga se comprueba si el binario a ejecutar tiene llamadas a sı́mbolos que coinciden con las librerı́as indicadas en la variable de entorno, de darse tal caso, el sistema operativo redirecciona las llamadas hacia la librerı́a compartida. EXTRAE aprovecha esta caracterı́stica para introducir wrappers instrumentados a la funciones. Algunas caracterı́sticas a destacar de la información que recopila. El timestamp de se hace utilizando funciones de baja latencia que permiten precisión de nanosegundos. Utiliza la librerı́a PAPI que además de los contadores de sistema permite obtener información sobre el consumo y la temperatura del procesador. Por último destacar que es capaz de referenciar el código fuente permitiendo encontrar fácilmente las funciones a optimizar. Una vez tengamos las trazas es necesario usar una herramienta que permita visualizar de manera gráfica los datos para un análisis profundos, Paraver es una de ellas. Es flexible y permite guardar vistas de las trazas para retomar o compartir el análisis en cualquier momento. Además de analizar el rendimiento individualmente permite comparar varias trazas a la vez y también establecer nuestras propias métricas. 5.3. Instalación y configuración de programas Se ha decidido incluir esta sección en este capı́tulo porque en él se muestra como habilitar el uso de librerı́as de álgebra optimizadas como ATLAS. En ella se detallan los pasos de instalación y configuración de los 3 paquetes de aplicaciones que se han Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 54 Capı́tulo 5. Optimización de aplicaciones ejecutado en el clúster. HPL Para instalar este programa hemos instalado previamente ATLAS y OpenMPI. HPL se puede descargar de la página oficial: http://www.netlib.org/benchmark/hpl/ Una vez descargado ejecutaremos: //Descomprimimos el paquete $ tar xf hpl-2.1.tar.gz $ cd hpl-2.1 //Copiamos un makefile predefinido $ cp Make.ubuntuARM setup/Make.PII_CBLAS Entonces editaremos diferentes regiones del fichero Make.ubuntuARM de la siguiente manera. A destacar la configuración de la última región donde hemos habilitado el uso de la versión optimizada de CBLAS del paquete ATLAS. #Platform identifier ARCH = ubuntuARM [...] #HPL Directory Structure / HPL library TOPdir = /media/ancient/benchmarks/hpl [...] #Message Passing library (MPI) MPdir = /usr/local/openmpi1.8.1 MPinc = MPlib = [...] #Linear Algebra library (BLAS or VSIPL) LAdir = /usr/local/atlas LAinc = LAlib = $(LAdir)/lib/libatlas.a $(LAdir)/lib/libcblas.a [...] #Compilers /linkers CC = $(OPENMPI)/bin/mpicc LINKER = $(OPENMPI)/bin/mpif77 Ahora, HPL ya está listo para compilar. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 55 $ make arch=ubuntuARM // El anterior comando crea la carpeta bin/ubuntuARM con el ejecutable $ cd bin/ubuntuARM/ Antes de ejecutar hará falta configurar HPL.dat de manera adecuada y crear el hostfile con las direcciones IP de los nodos donde queremos ejecutar el benchmark. Una vez tengamos eso estamos listos para lanzar la aplicación mediante los siguientes comandos. $ mpirun -np <#procesadores> -hostfile <hostfile> xhpl HPCC Por suerte para nosotros el benchmark HPCC requiere exactamente los mismos pasos a excepción de uno. Durante la configuración del fichero Make.ubuntuARM antes de compilar el benchmark habrá que editar el parámetro TOPdir. #HPL Directory Structure / HPL library TOPdir = ../../.. También encontramos que el fichero de configuración para ejecutar los benchmarks HPL.dat tiene otro nombre: hpccinf.txt. Microkernels Para la instalación y configuración de los microkernels hemos seguido estos pasos: $ ./setup.sh $ mkdir build $ cd build //Indicamos el path de la libreria ATLAS en los flags de compilacion $ CPPFLAGS=-I/usr/local/atlas/include LDFLAGS=-L/usr/local/atlas/lib ./configure --prefix=‘pwd‘/../ //Si lo hemos configurado correctamente al finalizar del script configure obtendremos un mensaje indicando que se hara uso de CBLAS. $ make $ make install Ahora ya podemos elegir entre ejecutar uno por uno los diferentes microkernels o lanzar una ejecución de todos ellos con los comandos: $ cd .. $ ./benchmark.py En caso de querer editar el número de iteraciones a ejecutar o el tamaño del problema deberemos editar el fichero benchmark.py. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 56 Capı́tulo 5. Optimización de aplicaciones 5.4. Optimizando el fichero de configuración de HPL y HPCC Como hemos mencionado, el benchmark HPL dispone de un fichero de configuración HPL.dat que permite definir más de 20 parámetros que hacen referencia a aspectos de la ejecución. Veamos cuales son: A cada parámetro le corresponde una lı́nea del fichero. Lı́neas 1-2: sin utilizar, permiten al usuario escribir comentarios Lı́nea 3: Permite especificar el nombre del fichero de salida Lı́nea 4: Permite especificar hacia donde redireccionar la salida. Lı́nea 5: Número de tamaños de problema a ejecutar. Lı́nea 6: Tamaños de problema, es decir, dimensiones de la matriz del sistema de ecuaciones. Lı́nea 7: Numero de tamaños de bloque a ejecutar. Lı́nea 8: Tamaños de bloque en los que se dividirá la matriz Lı́nea 9: Como se distribuyen los procesos MPI entre nodos. Lı́nea 10: Número de grids (PxQ) de procesos a ejecutar. Lı́nea 11: Valores de P Lı́nea 12: Valores de Q Lı́nea 13: Threshold Lı́neas 14-21: Tipo de subdivisión en paneles de la matriz. Lı́nea 22: Número de tipos de broadcast a ejecutar. Lı́nea 23: Permite elegir diferentes patrones de comunicación de mensajes MPI. Lı́nea 24: Profundidad lookahead. Lı́nea 25: Valor de la profundidad. Lı́nea 26: SWAP. Lı́nea 27: Umbral de SWAP. Lı́nea 28: Permite transponer o no la matriz L1. Lı́nea 29: Permite transponer o no la matriz U. Lı́nea 30: Equilibrado Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 57 Lı́nea 31: Alineamiento de memoria para doble precisión Con la información conocida sobre los parámetros y una serie de pruebas empı́ricas se ha optimizado el fichero de configuración para obtener los mejores resultados en la medida de lo posible. A continuación veremos la justificación de los valores que más impacto han tenido sobre el rendimiento de HPL. Tamaño de problema. La documentación de HPL recomienda utilizar alrededor de un 80 % de la memoria fı́sica disponible. En nuestras pruebas sobre un único nodo a partir de 12K elementos (51 % del total de memoria) la mejora es inapreciable. En multinodo el impacto del tamaño de problema es mucho mayor y si se recomiendo ocupar el máximo (en nuestro caso 32K elementos, casi 8 GB). Tamaño de bloque. Utilizar blocking aumenta el rendimiento debido a que se explota la localidad espacial y temporal de datos. En las pruebas hemos obtenido 64 ya que se ajusta al tamaño de la caché L1 (32KB). Factorización y recursividad de paneles Estos parámetros varı́an la manera en que HPL resuelve el sistema de ecuaciones. No se ha podido analizar en detalle por el coste y la complejidad del algoritmo. Lo que si se ha podido observar que combinaciones de valores ofrecı́an los mejores resultados. Estos son: R2R2, C2C2 y R2C2. Alineamiento, equilibrado y transposición. En alineamiento debemos especificar 8, ya que es el tamaño de bytes de una palabra en doble precisión, activaremos el equilibrado con valor 1 y habilitaremos la transposición de las matrices L1 y U dejando el valor a 0. La transposición de matrices permite explotar la temporalidad local de los accesos a memoria durante las operaciones entre matrices donde la segunda matriz se recorre por columnas. Nota: HPCC utiliza el mismo tipo de fichero de configuración con algunas opciones más que no hemos precisado describir. Únicamente tener en cuenta que el tamaño de problema de los diferentes test dentro de HPCC se calcula en base al valor especificado en la lı́nea 6. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 58 Facultat d’Informàtica de Barcelona Capı́tulo 5. Optimización de aplicaciones Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 59 Capı́tulo 6 Evaluación del clúster 6.1. Benchmarking single node Inicialmente, se han realizado una serie de pruebas para conocer la potencia de la unidad básica de nuestro clúster, el nodo. Para evaluar el SoC Exynos 5 Octa se han seleccionado el conjunto de microkernels descritos en el capı́tulo de análisis de aplicaciones y HPL. El conjuntos de pruebas que se llevará a cabo es el siguiente: Primero, se ejecutará la versión OpenMP de los microkernels con 1, 2 y 4 threads en simple y doble precisión con el propósito de evaluar la eficiencia paralela del SoC en variedad de situaciones. Segundo, se ejecutará el benchmark HPL con 1, 2 y 4 procesos MPI. Compararemos la eficiencia computacional conseguida en HPL con la de los 9 primeros supercomputadores más MareNostrum del Top500. La eficiencia computacional se obtiene de la relación entre GFLOPS obtenidos en HPL y pico teórico de GFLOPS del SoC. Finalmente, de las mediciones de consumo eléctrico con un medidor de potencia, se hace una comparación en este caso con los primeros 9 primeros supercomputadores más MareNostrum del ránking Green500. Los benchmarks con peores resultados en escalabilidad indicarán los puntos débiles (cuellos de botella) de nuestro SoC. Además podremos estudiar el comportamiento frente a diferentes patrones de acceso a memoria. 6.1.1. Metodologı́a Los microkernels se ejecutan con el script Python subministrado con el paquete: Benchmark.py. En él se pueden especificar parámetros para configurar la ejecución Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 60 Capı́tulo 6. Evaluación del clúster de los diferentes test: volumen de datos, número de iteraciones, versiones, tipos de datos (single, double), etc. Para conseguir muestras fiables se han especificado un números de iteraciones suficiente para conseguir tiempos de ejecución serie superiores a los 40 segundos en cada benchmark. Los resultados obtenidos se vuelcan en ficheros de texto; un fichero por cada versión y microkernel. dataType,numIterations,numThreads,n,totalTime,avgTime,stdDev,gflops,validated float,25,1,8192,195.82830200,7.83313208,0.00576846,0.17134618,n/a Figura 6.1: Ejemplo de fichero de resultados del microkernel N-Body OpenMP En la figura 6.1.1 vemos un ejemplo de fichero CSV de resultados. En los resultados se especifica los parámetros usados durante la ejecución, medidas de tiempo medias y totales con su desviación estándar y la una medida de rendimiento (GFLOPS) en base al tiempo de ejecución medio. Los resultados de la ejecución de HPL se han obtenido con el set de parámetros optimizado descrito en el capı́tulo anterior, y aparte del uso de ATLAS no se han hecho más optimizaciones. El comando utilizado ha sido: $ > sudompirun − np < 1, 2, 4 > −hostf ile < HF SingleN ode > ./xhpl donde < 1, 2, 4 > corresponde al número de procesos MPI para cada una de las 3 muestras y < HF SingleN ode > es un fichero de Hosts MPI con una única lı́nea con la dirección de la tarjeta de loopback. La metodologı́a para la medición de consumo eléctrico y resultados está detallada en la sección del trabajo de hardware ??. 6.1.2. Resultados Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 61 Figura 6.2: Speed Up con precisión de 32-bits. Figura 6.3: Speed Up con precisión de 64-bits. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 62 Capı́tulo 6. Evaluación del clúster Figura 6.4: Comparativa de la eficiencia paralela de simple y doble precisión con 4 threads . Los resultados de escalabilidad vistos en las figuras 6.2 y 6.3 son bastante buenos. En precisión simple, la eficiencia paralela con 4 threads ronda el 90 %+ excepto en VecOP. Montecarlo demuestra que en caso de no compartir datos entre threads se alcanza una eficiencia del 99 %. Sobre el detrimento de eficiencia de doble precisión frente a simple observado en la figura 6.4, se debe a que cada procesador tiene más tiempo ocupado el bus de memoria para traerse datos de 64 bits, y siendo la memoria un recurso compartido entre procesadores, implica que el resto de threads deben esperar hasta que el bus esté disponible. Los benchmarks que hacen un uso importante del ancho de banda a memoria como VecOP y 3D stencil son los más afectados. Como nota, sorprende la mejora de N-body en doble respecto a simple precisión, harı́a falta estudiar en detalle que operaciones se realizan para obtener esos resultados. HPL En la figura 6.5 vemos la eficiencia computacional obtenida con 1, 2 y 4 procesos MPI en un mismo SoC. A partir del rendimiento pico de un núcleo Cortex-A15 @ 800MHz (1.6 GFLOPS) calculamos el rendimiento pico del SoC, en total 6.4 GFLOPS. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 63 Figura 6.5: Rendimiento y efficiencia paralela con HPL (single node). Con el resultado de ejecutar HPL con 4 procesos MPI en un mismo nodo 4,27 GF LOP S (precisión doble) calculamos la eficiencia computacional. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 64 Capı́tulo 6. Evaluación del clúster Ef f.comp. = 4,27 = 0,667187 6,4 (6.1) Tomamos un 67 % de eficiencia. Veamos como de bueno es este resultado respecto a máquinas del TOP 500. En la figura 6.6 se aprecia como la eficiencia conseguida (linea horizontal) hasta el momento entra en unos márgenes aceptables. A nuestro favor decir que los cálculos en HPL son de doble precisión, la operación en coma flotante tarda lo mismo pero los accesos a memoria requieren más tiempo. En nuestra contra, los valores obtenidos no se ven afectados por el overhead introducido por la red de interconexión para realizar el paso de mensajes. En la siguiente sección ’Evaluación multinodo’ se verá el impacto que tiene el uso de la red. Figura 6.6: Eficiencia respecto al PP de las primeras posiciones del top500. Como nota, destacar que Supercomputadores como el Tiahne, Titan y Stampede muestran peor eficiencia siendo 3 de los 4 supercomputadores, entre las 10 primeras posiciones, que hacen uso de aceleradores (Xeon Phi y NVidia K20). Sabiendo que hay una máquina con aceleradores que ofrece un 80 % de eficiencia como es el Piz Daint, se entiende que se pueden desarrollar implementaciones de HPL que saquen un mejor partido a estos componentes. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 65 Al final de la evaluación de rendimiento paralelo y de cálculo quedan varios puntos claros. Primero, pese a disponer de unidad de coma flotante capaz de hacer operaciones de 64-bits, en las versiones de doble precisión existe una pérdida de rendimiento relativa a la versión de simple precisión que va de un 3 a un 30 %. Segundo, la escalabilidad del SoC a nivel de nodo es buena, en muchos de los benchmarks se observa un >90 %. Por último, los valores obtenidos en DGEMM Single Precisión, demuestran que el SoC Exynos 5 es capaz de ofrecer un rendimiento bueno del 80 % respecto a su máximo teórico en aplicaciones reales. Eficiencia energética Hemos hecho mediciones de consumo energético con los nuestros dos test mejor optimizados, HPL y DGEMM precisión simple. Durante la ejecución de HPL con 4 threads hemos obtenido un consumo medio de 7.73W, mientras que en DGEMM-SP observamos 6.59W. Dividiendo el rendimiento obtenido en los anteriores apartados con el consumo nos da como resultado una eficiencia energética de 552.2 MFLOPS/W en HPL, y 792.5 en DGEMM-SP. En la figura 6.7 hemos indicado la supuesta posición que ocuparı́amos en la tabla Green500, la linea horizontal marca nuestro récord (DGEMM-SP) conseguido en los test. Teniendo en cuenta el estado del arte actual, y a simple vista, los resultados resultan un tanto flojos. Sin embargo hay muchos factores jugando en contra como la baja frecuencia de la CPU y el consumo de componentes como la tarjeta gráfica y de red que podrı́an estar apagados. Con esto damos por finalizado el estudio Single node, de nuestra máquina. Los datos obtenidos en esta sección nos permiten establecer el valor de rendimiento base a partir del cual estudiaremos la escalabilidad multinodo de la siguiente sección. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 66 Capı́tulo 6. Evaluación del clúster Figura 6.7: Eficiencia energética comparada con las primeras posiciones de Green500. 6.2. Benchmarking multi nodo En esta sección se muestran los resultados obtenidos al evaluar el clúster al completo, es decir, hasta 24 procesadores en paralelo. El propósito de estos test es obtener, ahora sı́, una medida realista del rendimiento que ofrece la configuración que hemos montado. En cualquier clúster HPC la red de comunicación entre nodos para acceder a la memoria distribuida es el nivel que ofrece mayor latencia con diferencia, si a eso sumamos las bajas prestaciones que ofrece el puerto de comunicaciones Ethernet presente en las placas Arndale Octa, cabe anticipar una caı́da de rendimiento considerable respecto a los resultados del apartado anterior. Para comparar con los resultados anteriores se ejecutará HPL con hasta 24 procesadores. Esto nos permitirá evaluar dos cosas: la pérdida de eficiencia paralela al introducir la red de interconexión y una idea del máximo rendimiento que podemos conseguir con el clúster funcionando al máximo de sus capacidades. Seguidamente, volveremos a evaluar la relación GFLOPS/W con la nueva medida de rendimiento obtenida con HPL y el consumo total del cluster. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 67 Por último mostraremos los resultados que obtenemos con HPCC. 6.2.1. Metodologı́a Empezando con HPL, introducimos varios cambios en los parámetros de ejecución. Primero aumentamos el tamaño de problema a 20K elementos. Esto hace un tamaño de problema de: P roblemSize = 200002 × 8 = 3051,87M Bytes 220 (6.2) Es necesario este incremento en el tamaño de problema para intentar disminuir en la medida de lo posible el impacto de paso de mensajes. Con un mayor tamaño de problema, cada procesador deberá realizar más cálculos antes propagar los resultados en la memoria compartida. El máximo tamaño de problema que soporta nuestro clúster ronda los 32K elementos, pero por problemas de inestabilidad y sobrecalentamiento de las placas solo disponemos datos para hacer las gráficas de hasta 20K. Ha sido necesario ajustar el tamaño del problema a medida que se aumentaba el tamaño de problema para tratar de que sea proporcional. El tipo de broadcast de mensajes, que hasta el momento no importaba, será de tipo mixed ring. El grid de procesos que mejor resultados ofrece en las pruebas se obtiene fijando P = 2 e incrementando Q = 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. El fichero hostfile utilizado en este caso contiene las direcciones IP de cada una de las placas en la red. Y se utiliza el mismo comando que en el apartado anterior, pero ahora con el parámetro −np 24 para indicar al runtime de MPI que cree tantos procesos como procesadores Cortex A-15. Se muestra a continuación el contenido del hostfile usado para la evaluación multinodo. administrador@127.0.0.1 slots=4 administrador@192.168.0.82 slots=4 administrador@192.168.0.83 slots=4 administrador@192.168.0.84 slots=4 administrador@192.168.0.85 slots=4 administrador@192.168.0.86 slots=4 Para HPCC hemos utilizado un fichero de configuración con parámetros similares, y para ejecutar, el mismo fichero hostfile y un comando equivalente mpirun también con 24 procesos MPI. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 68 Capı́tulo 6. Evaluación del clúster 6.2.2. Resultados HPL Figura 6.8: Gráfica de speed up del cluster ejecutando HPL de 1 a 24 procesadores. En la gráfica 6.8 se aprecia como HPL escala con un factor mucho menor que 1, siendo 1 el factor de escala lineal ideal. La deceleración de crecimiento que se observa en el paso de Single Node (1-4 procesadores) a Multinode (4-24 procesadores) muestra el impacto negativo de la red de interconexión en el rendimiento de la máquina. Por tanto, si continuáramos añadiendo nodos en nuestro clúster, esperamos seguir perdiendo eficiencia paralela como se puede ver en la figura 6.9. En esta última figura podemos ver que con 10 procesadores (3 nodos) se irrumpe por debajo del 50 % de eficiencia, a partir de este punto ya se pueden considerar ’malos’ los resultados. Como ya hemos dicho, debido a lo inestable del sistema y el tiempo disponible para hacer las pruebas, no se ha podido obtener una muestra de datos muy grande, pero en este caso, las suficiente para poder sacar conclusiones (que es al fin y al cabo lo que buscamos) ya que las variaciones son muy acentuadas. En cuanto al valor máximo de rendimiento se ha obtenido con un test de 32K elementos que duró alrededor de 20 minutos, este test se ha repetido 3 veces. El resultado medio fue de 14.38 GFLOPS una eficiencia computacional del 37 % resFacultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 69 Figura 6.9: Eficiencia paralela del clúster ejecutando HPL de 1 a 24 procesadores. pecto al PP teórico de 38.4 GFLOPS. Ası́ mismo también se tomaron mediciones de consumo durante las pruebas donde obtuvimos una media 62.58W, ofreciendo una eficiencia energética de 229.78 MFLOPS/W. En el Green500 caerı́amos a la posición 317. HPCC Resumen de los resultados obtenidos en el benchmark HPCC con parámetro N = 20000 y 24 procesadores. Hemos tomado los resultados del supercomputador Jaguar y hemos podido observar valores de rendimiento reales más allá de la potencia de coma flotante. Su red de interconexión tiene 15.98 µs de latencia, casi 20 veces menos que la nuestra y su ancho de banda es de 1.52 GB/s en el peor caso, al menos 140 veces mejor. Lo único que no parece estar como mı́nimo un orden de magnitud por detrás es el ancho de banda de la memoria donde Jaguar puntúa 3.31 GB/s en su versión EP, en este test nuestro SoC ofrece 1.48 GB/s [20]. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 70 Capı́tulo 6. Evaluación del clúster Benchmark MPIRandomAccess StarRandomAccess PTRANS WALL PTRANS CPU StarDGEMM StarSTREAM (Scale) SingleSTREAM (Scale) MPIFFT StarFFT Net Latency ping-pong Net Bandwidth ping-pong Resultado 0.0004309 GUP/s 0.006904 GUP/s 15.59 s. @ 0.051 GB/s 2.34 s. @ 0.343 GB/s 1.23 GFLOP/s 1.48 GB/s 2.85 GB/s 0.11 GFLOP/s 0.22 GFLOP/s 315.68 µs 11.657 MB/s Cuadro 6.1: Resumen de resultados de HPCC. No es posible comparar directamente otros test como MPIRandomAcces o MPIFFT ya que los resultados varian en base al número de nodos. Si podemos comparar StarRandomAccess donde Jaguar ofrece un poco menos del doble de ancho de banda. StarFFT en este caso ha sido fuertemente optimizado y el rendimiento es hasta 50 veces mejor que el nuestro. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 71 Capı́tulo 7 Sostenibilidad 7.1. Sostenibilidad Los aspectos sobre la sostenibilidad del proyecto se tratarán en tres categorı́as distintas: viabilidad económica, impacto social e impacto ambiental. 7.1.1. Viabilidad económica La viabilidad económica de un supercomputador que obtenga un buen rendimiento con un consumo muy reducido está prácticamente asegurada. La necesidad que existe actualmente de procesar grandes cantidades de datos hace imprescindible disponer de máquinas de este tipo, sin embargo, su alto consumo, añadido a la gran inversión inicial necesaria, hace que el mantenimiento de dichas infraestructuras resulte un esfuerzo muy costoso. Un clúster con buen rendimiento, no solo tiene salida en el sector de HPC, actualmente algunos de los supercomputadores más potentes del mundo se usan para dar otro tipo de servicios, como granjas de máquinas virtuales, o servidores web muy potentes, la ventaja que supone reducir el consumo en este tipo de máquinas puede interesar a estos sectores también. 7.1.2. Impacto Social A pesar de que la sociedad no percibe de manera directa los beneficios derivados del uso de la supercomputación. Si que de manera indirecta tiene un impacto muy importante en el dı́a a dı́a de cualquier sociedad moderna. En general, los usos de los computadores actuales para HPC tienen un impacto positivo, indirecto en la sociedad. Son las máquinas que ayudan a liderar proyectos de investigación importantes, como en medicina, mediante simulaciones sobre enfermedades o de fármacos. La gran capacidad de cálculo de estos dispositivos permite Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 72 Capı́tulo 7. Sostenibilidad acortar tiempos de investigación y ahorrar recursos mediante aproximaciones de los modelos reales. También pueden ayudar en otros campos de investigación, como fı́sica o la quı́mica, por ejemplo: la simulación de fluidos. Todos estos resultados ayudan a la sociedad a hacer progresos. A parte de investigación y desarrollo, los supercomputadores tienen mucha utilidad en proveer cálculos para ciertos servicios que necesita una sociedad, como por ejemplo la aproximación del clima, que es fundamental para sectores como el transporte. Otro campo al cual proveer potencia de cálculo mediante un supercomputador, es en la prospección de recursos naturales, como por ejemplo el petróleo, donde el uso de algoritmos para detectar dónde se encuentran los recursos naturales puede ser vital para ahorrar los cuantiosos costes que requieren hacer exploraciones de este tipo. [17] 7.1.3. Impacto Ambiental Al ser un clúster basado en procesadores de bajo consumo con uno de los objetivos principales fijado en la eficiencia energética, no solo tiene un impacto ambiental relativamente bajo, sino que pretende mejorar el paradigma de la sostenibilidad en HPC, debido a la regla impuesta de consumir menos de 3.000 W . Por ejemplo, si basada en esta tecnologı́a se desarrollara un clúster con buen rendimiento por W consumido, un grupo de investigación con necesidad de un clúster HPC podrı́a montar una réplica de éste con el ahorro energético que supondrı́a. Además, en Cataluña el consumo de energı́a primaria en cuanto a renovables es muy bajo, un 4,1 %. Esto implica que más del 90 % de la energı́a primaria que se consume en Cataluña sale de energı́a no renovable como el carbón, petróleo... Esto es un punto más a favor para tener en cuenta el consumo de un clúster de supercomputación como este.[3] Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 73 Capı́tulo 8 Conclusiones individuales 8.1. Evaluación global Tras finalizar el trabajo, señalar los puntos más importantes que hemos aprendido a nivel de aplicaciones. El SoC Exynos 5420, efectivamente, es capaz de ejecutar las aplicaciones del estado del arte HPC actual y funcionar como un clúster. Todas las aplicaciones del estado del arte trabajan en doble precisión. Los test con microkernels demuestran que con un procesador de 32-bit partimos en desventaja. Los ficheros de configuración de HPL y HPCC, son útiles para optimizar en la medida de lo posible las ejecuciones, pero si se quiere solventar los fuertes problemas de escalabilidad que aparecen en los resultados debemos pasar al siguiente nivel, usar herramientas de análisis. La red de interconexión tiene un impacto negativo enorme en el rendimiento y la escalabilidad de las aplicaciones. El rendimiento de las aplicaciones es muy sensible a las tareas que hay ejecutándose en background del sistema operativo. Nuestro clúster y las aplicaciones out-of-the-box no obtiene un rendimiento como para ser competitivo en una competición como el SCC, pero hay mucho margen para optimizar. En muchos casos, no podemos evitar los accesos a memoria entre nodos, pero si podemos minimizarlos: optimizar el código de la aplicación para hacer blocking, ajustar el tamaño de problema al máximo de la memoria fı́sica, etc. Es importante disponer de un buen surtido de librerı́as con funciones optimizadas para HPC. Las mejoras de rendimiento que ofrecen son muy grandes y son relativamente poco costosas de incluir en el sistema. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 74 Capı́tulo 8. Conclusiones individuales Es importante estudiar los resultados de los benchmarks cuidadosamente, sin lanzarse a conclusiones precipitadas. Un mal resultado puede tener su causa en muchos factores. Los benchmarks son una manera simple de detectar cuellos de botella. Son herramientas clave para la mejora del trabajo de todo el equipo. 8.2. Trabajo futuro De cara al trabajo futuro, lo primero serı́a abordar el uso de herramientas de análisis que en este trabajo solo han podido mostrarse de manera teórica por problemas técnicos. Instalar correctamente y ganar experiencia con ellas, asunto de gran importancia de cara a optimizar aplicaciones mediante análisis. En los futuros análisis, se deberı́a dar prioridad a estudiar el rendimiento de la red para ası́ poder ofrecer feedback al resto del equipo y ası́ poder tomar mejores decisiones. Por otro lado serı́a interesante instalar y configurar individualmente los benchmarks dentro de HPCC para poder lanzar únicamente los test que nos interesan con parámetros independientes. Esto permitirı́a al grupo trabajar mejor y más rápido. En el momento en el que esté disponible el soporte para OpenCL, se deberı́an obtener o desarrollar versiones de las aplicaciones para la tarjeta gráfica. Esto se extiende a otros recursos hardware de la máquina que puedan estar en desuso como las unidades vectoriales. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 75 Capı́tulo 9 Conclusiones de equipo 9.1. Conclusiones de cara a la competición En el estado actual de nuestro proyecto resulta inviable participar en la competición por varios motivos. No reboot - Always Up. La normativa de la competición establece que las máquinas no se pueden reiniciar ni apagar durante toda la competición (excepto por motivos de seguridad). Nuestro sistema es todavı́a inestable, hasta el punto que resulta improbable sobrevivir cinco dı́as sin reiniciar o que alguno de los nodos falle, de hecho serı́a improbable aguantar uno. Además se prevé tener que instalar nuevo software e incluso alguna librerı́a dado que hay un set de aplicaciones a ejecutar que se darán a conocer durante la competición. Sin duda, este serı́a un objetivo prioritario y una manera de abordar este problema serı́a abandonar el uso de tarjetas SD hacı́a un sistema de inicio y ficheros en red mediante NFS. Rendimiento. El rendimiento no es bueno, al menos no suficiente. En ediciones pasadas de la competición se alcanzaron los 8.5 TFLOPS en HPL que, en el peor caso, suponen 2.8 GFLOPS/W, 12 veces más que nuestros 0.229 GFLOPS/W actuales. No serı́a realista esperar asistir por primera vez con una máquina preparada para competir por los primeros puestos, pero si que podamos competir por no quedar últimos. Consideramos que una primera meta serı́a desarrollar un prototipo con unas previsiones de rendimiento mı́nimas de 6 TFLOPS en HPL para plantear el seriamente el asistir. Preparación, tanto de los componentes del equipo como del clúster. Aún teniendo la formación adecuada, tomar decisiones de diseño, montar una máquina y prepararla a nivel de software de sistema y aplicaciones requiere mucho tiempo. Contar que además el equipo deberı́a ser de seis personas, por un lado agiliza el desarrollo pero por otro lado requiere mayor nivel de coordinación. Además entendemos que, para formar un equipo estable, se requerirı́a una persona vinculada a la FIB con conocimiento de primera mano del estado del arte HPC. Asumirı́a el rol de director Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 76 Capı́tulo 9. Conclusiones de equipo equipo y además de coordinar deberı́a garantizar la continuidad de la representación de la facultad en sucesivas ediciones. Recursos. Este proyecto ha podido llevarse a cabo únicamente con recursos cedidos por el departamento de AC y por el BSC. Creemos que el desarrollo de un prototipo competitivo a pequeña escala podrı́a hacerse con un coste no mucho mayor, pero en el caso de asistir a la competición, harı́a falta un desembolso de dinero considerable. Es en este punto en el que entran en juego los sponsors. Todos los equipos que asisten a la competición están esponsorizados por grandes fabricantes de hardware que aprovechan la competición a modo de escaparate. Nuestro plan serı́a conseguir uno o varios sponsors que financiaran como mı́nimo, el coste total de los componentes del clúster y el desplazamiento y alojamiento durante el evento. 9.2. Trabajo futuro Este trabajo, pese a demostrar no estar preparados para la competición, ha servido para sentar las bases a partir de las cuales poder seguir trabajando y mejorar los puntos débiles de nuestro prototipo. De cara al futuro, la primera acción a realizar serı́a valorar todas las opciones y decidir si continuamos desarrollando un clúster basado en tecnologı́a móvil, si se decide abandonar en favor de tecnologı́a HPC más habitual (p.ej: Intel Xeon y aceleradores Nvidia) o valorar otras opciones menos estudiadas y no mencionadas como por ejemplo: procesadores móviles con aceleradores externos Nvidia. Personalmente creemos que en el ámbito de procesadores móviles queda mucho trabajo por hacer y que lo mejor está por venir. En esta lı́nea, por tanto, tenemos mucho trabajo futuro sobre la mesa. A corto plazo empezarı́amos por abordar el problema de la red de interconexión de nodos, y a la vez, tratarı́amos de hacer un mejor uso del hardware disponible: aceleradores, ocho núcleos y máxima frecuencia de procesador entre otros. A medio plazo se buscarı́a obtener nuevas placas de desarrollo con arquitectura ARMv8 de 64-bits y profundizar en el análisis y optimización profunda de las aplicaciones. Facultat d’Informàtica de Barcelona Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 77 Agradecimientos En este espacio quiero aprovechar para dar las gracias a aquellas personas que han colaborado de una manera u otra con este proyecto. A Álex Ramı́rez, por darnos la oportunidad y las ideas para desarrollar el proyecto. A Nikola Rajovic, por el trato cordial y proporcionar información y material para usar el medidor de potencia Yokogawa y los benchmarks de Montblanc. A Agustı́n Fernández que como director de este trabajo ha ofrecido soporte y seguimiento durante todo el trabajo. Al departamento de Arquitectura de Computadores y el BSC por la cesión de todo el material y recursos necesarios para realizar el montaje del clúster. A Dani y Uri por compartir conocimiento y experiencia que ha resultado de gran utilidad. A Enric Agüera por su curso acelerado de LateX. A mis padres y mi hermano por su apoyo incondicional. Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 78 Facultat d’Informàtica de Barcelona Capı́tulo 9. Conclusiones de equipo Constantino Gómez Crespo Diseño y evaluación de un clúster HPC: aplicaciones 79 Bibliografı́a [1] J. Dongarra A. Cleary A. Petitet, R. C. Whaley. Hpl - a portable implementation of the high-performance linpack benchmark for distributed-memory computers, 2008. [Online; accedido 30-Abril-2014]. 42 [2] HPC Advisory Council. Hpc advisory council - isc’14 student cluster competition - home, 2014. [Online; accedido 10-Abril-2014]. 20 [3] Generalitat de Catalunya. Balanç energètic de catalunya - institut català d’energia, 2009. [Online; accedido 2-Junio-2014]. 72 [4] J. J. Dongarra and P. Luszczek. Hpc challenge: Design, history, and implementation highlights. 45, 46, 47 [5] J. J. Dongarra and P. Luszczek. Introduction to the hpcchallenge benchmark suite. December 2004. 43, 47 [6] D. Jiménez E. Ayguadé. Parallelism, analysis of parallel applications. 2012. 51 [7] hpcc.org. The hpcchallenge award competition, 2014. [Online; accedido 5-Mayo2014]. 43 [8] hpcc.org. Randomaccess rules, 2014. [Online; accedido 5-Mayo-2014]. 46 [9] P. Luszczek J. J. Dongarra and A. Petitet. The linpack benchmark: Past, present, and future. August 2003. 42 [10] mabraham. About gromacs – gromacs, 2013. [Online; accedido 17-Mayo-2014]. 48 [11] A. Rico et al. N. Rajovic. Experiences with mobile processors for energy efficient hpc. March 2013. 48 [12] P. Carpenter et al. N. Rajovic. Supercomputing with commodity cpus: Are mobile socs ready for hpc. November 2013. 48 [13] University of Tenesse. High performance linpack benchmark poster at sc2010, 2010. [Online; accedido 30-Abril-2014]. 41 [14] openfoam.org. Features of openfoam, 2014. [Online; accedido 20-Mayo-2014]. 50 Constantino Gómez Crespo Facultat d’Informàtica de Barcelona 80 Bibliografı́a [15] quantum espresso.org. Manifesto – quantumespresso, 2014. [Online; accedido 20-Mayo-2014]. 50 [16] Nikola Rajovic, Alejandro Rico, Nikola Puzovic, Chris Adeniyi-Jones, and Alex Ramirez. Tibidabo: Making the case for an arm-based {HPC} system. Future Generation Computer Systems, 2013. DOI: http://dx.doi.org/10.1016/j.future.2013.07.013. 48 [17] SINC. La supercomputación ayuda a repsol a descubrir nuevos yacimientos, 2013. [Online; accedido 2-Junio-2014]. 72 [18] V. Springel. Cosmological simulations with gadget, 2005. [Online; accedido 20-Mayo-2014]. 50 [19] Stanford University. The software — folding@home, 2014. [Online; accedido 10-Junio-2014]. 48 [20] university of tennesse. Hpcc record: Cray xt5 196608 amd opteron 2.6 ghz, 2009. [Online; accedido 15-Junio-2014]. 69 [21] Wikipedia. Folding@home — Wikipedia, the free encyclopedia, 2014. [Online; accedido 10-Junio-2014]. 48 [22] Wikipedia. Linpack — Wikipedia, the free encyclopedia, 2014. [Online; accedido 10-Junio-2014]. 41 [23] Wikipedia. Linpack benchmarks — Wikipedia, the free encyclopedia, 2014. [Online; accedido 30-Abril-2014]. 41 Facultat d’Informàtica de Barcelona Constantino Gómez Crespo