Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERÍA DISEÑO DE UN CLUSTER BEOWULF PARA REALIZAR CÁLCULOS MONTE CARLO T E S I S P R O F E S I O N A L QUE PARA OBTENER EL TÍTULO DE: INGENIERO EN COMPUTACIÓN PRESENTA: GUSTAVO GÓMEZ MACÍAS DIRECTOR DE TESIS: PhD. ARNULFO MARTÍNEZ DÁVALOS CIUDAD UNIVERSITARIA, 2008 I N G E N I E R I A Neevia docConverter 5.1 UNAM – Dirección General de Bibliotecas Tesis Digitales Restricciones de uso DERECHOS RESERVADOS © PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL Todo el material contenido en esta tesis esta protegido por la Ley Federal del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). El uso de imágenes, fragmentos de videos, y demás material que sea objeto de protección de los derechos de autor, será exclusivamente para fines educativos e informativos y deberá citar la fuente donde la obtuvo mencionando el autor o autores. Cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por el respectivo titular de los Derechos de Autor. Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 2 AGRADECIMIENTOS FORMALES Al Proyecto Conacyt U46761-F “Detectores de radiación para radionúclidos emisores de fotones” por la beca recibida durante el año 2007 para realizar la presente tesis de licenciatura. Al Instituto de Física, a la Coordinación de la Investigación Científica, a la Facultad de Medicina y a la UNAM, por el apoyo en la compra de equipo. Al Dr. Arnulfo Martínez Dávalos y a la Dra. Mercedes Rodríguez Villafuerte por su apoyo, guía, confianza, tiempo, paciencia, por permitirme integrarme a su proyecto de investigación (Conacyt U46761-F) y por las constantes e importantes recomendaciones que recibí a lo largo de todo el trabajo. Al Grupo de Investigación en Física Médica del IFUNAM por permitirme hacer uso de sus instalaciones, así como de sus equipos de cómputo sin los cuales el presente trabajo no hubiera sido posible de realizar. Al Lic. Neptalí González Gómez por los 3 años que me permitió trabajar a su lado, por todo lo que me enseñó (lo cual fue un pilar fundamental para la realización del presente trabajo), por su constante ayuda, apoyo, consejos, confianza, pero sobre todo por su amistad y por mostrarme día a día cómo debe trabajar y comportarse un verdadero profesional. Al Ing. Fernando Javier Martínez Mendoza por integrarme al equipo de cómputo del Instituto de Física de la UNAM, por permitirme colaborar con él, por apoyarme, por su amistad y por alentarme a continuar en todo momento al ser un claro ejemplo de un egresado de la Facultad de Ingeniería que es exitoso en su trabajo. A mis sinodales: M.C. María Jaquelina López Barrientos, M.I. Aurelio Adolfo Millán Nájera, Ing. Orlando Zaldívar Zamorategui, Dr. Miguel Moctezuma Flores y por supuesto a mi director de tesis Dr. Arnulfo Martínez Dávalos. A todos ellos por las revisiones y atinadas observaciones recibidas sobre este trabajo. A la Facultad de Ingeniería de la UNAM por brindarme una formación dentro de sus aulas, por proporcionarme grandes maestros y compañeros. Pero lo más importante por hacerme una mejor persona. Al Instituto de Física de la UNAM y a toda su comunidad académica y administrativa. Lugar que me permitió desarrollar habilidades prácticas de mi carrera a lo largo de tres años, primero por servicio social, después como estudiante asociado y por último como tesista. También por permitirme colaborar con expertos en diversas ramas del cómputo y por supuesto con importantes científicos mexicanos. Por último, pero no por eso menos importante, a la UNAM que me brindó todo lo arriba mencionado y me sigue brindando oportunidades y educación. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 3 AGRADECIMIENTOS PERSONALES A mis padres, Maricarmen Macías Leite y Eduardo Ziehl García por su gran apoyo, enseñanzas, consejos, amor y cariño que he recibido a lo largo de toda mi vida. Por todos los valores que me inculcaron es que pude ingresar a la carrera que más deseaba y en la Universidad que yo quería, integrarme a un gran Instituto de Investigación como lo es el IFUNAM y concluir el presente trabajo. Les debo todo. A mis hermanos, Regina Ziehl Macías y Eduardo Ziehl Mora, por todos lo buenos momentos, su gran apoyo y por su colaboración indirecta en la realización y conclusión del presente trabajo. A mis abuelos, Maria Luisa Leite Vilchis y Hugo Macías Garza Ayala, quienes siempre han estado presentes para ayudarme con cualquier problema que se me ha presentado a lo largo de mi vida, por los consejos, la motivación y el interés que presentaron para la conclusión de este trabajo. A Isset Guerrero Galache, quien siempre de una u otra manera encontraba la forma de ayudarme en absolutamente todas las etapas del presente trabajo. Por su completo apoyo, tiempo, confianza, ánimo, motivación, amor, cariño y por hacerme una mejor persona. Sin ella hubiera sido imposible la realización del presente trabajo, Muchas Gracias. A mis amigos de la Facultad de Ingeniería Ing. Pedro Fajardo Becerril, José Guadalupe Serrato, Uriel Canto Arce, Alan Edgar García Flores y Carlos Franco Díaz, quienes con su apoyo y amistad hicieron de mi estancia en la carrera no sólo algo productivo sino divertido y agradable. A mis amigos Israel Sanabria Pizarro, Lic. Jorge Rafael Pérez, Ing. Miguel Sánchez Flores, Gilberto Galavíz Juárez, Dr. Erick Rivera Comparán, Rodrigo Santana Menéndez y a Ismael Hernández González por brindarme su amistad a lo largo de todos estos años y motivarme en la conclusión de mi carrera profesional. Finalmente a todas aquellas personas que he olvidado mencionar pero que de una u otra manera contribuyeron de manera directa o indirecta en este proyecto. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo III Índice 1.0 Introducción...........................................................................................................................1 1.1 Panorama actual..........................................................................................................3 1.2 Definición del problema................................................................................................6 1.3 Objetivos......................................................................................................................6 1.4 Requerimientos generales...........................................................................................6 1.5 Estructura del trabajo...................................................................................................7 2.0 El Método Monte Carlo.........................................................................................................9 2.1 Historia.......................................................................................................................11 2.2 Descripción del Método Monte Carlo.........................................................................12 2.3 Aplicaciones del Método Monte Carlo.......................................................................15 2.4 El código PENELOPE................................................................................................16 2.5 Generadores de Números Aleatorios........................................................................18 2.6 Cálculo de π...............................................................................................................20 3.0 La Tecnología de Clusters de Cómputo............................................................................21 3.1Historia.......................................................................................................................23 3.2 Aplicaciones de los Clusters de Cómputo.................................................................26 3.3. Tipos de Clusters de Cómputo..................................................................................27 3.3.1 Clusters de Balanceo de Carga..................................................................27 3.3.2 Clusters de Alta Disponibilidad...................................................................28 3.3.3 Clusters de Alto Rendimiento.....................................................................29 3.4 Estructura de los Clusters de Alto Rendimiento........................................................30 3.4.1 Estructura de cluster simétrico...................................................................30 3.4.2 Estructura de cluster asimétrico.................................................................31 3.4.3 Estructura de cluster expandido.................................................................32 3.5 Arquitectura de los Clusters de Alto Rendimiento.....................................................33 3.5.1 Hardware....................................................................................................34 3.5.1.1 Microprocesador….......................................................................34 3.5.1.2 Memoria de acceso aleatorio.......................................................37 3.5.1.3 Placa Base ..................................................................................38 3.5.1.4 Dispositivos de almacenamiento permanente ............................39 3.5.1.5 Tarjeta de video ...........................................................................39 3.5.1.6 Periféricos ....................................................................................40 Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo IV 3.5.2 Protocolo de Comunicación .......................................................................40 3.5.2.1 Modelo de Referencia TCP/IP.......................................................41 3.5.2.1.1 La capa de host a red....................................................41 3.5.2.1.2 La capa de interred........................................................41 3.5.2.1.3 La capa de transporte................................................... 41 3.5.2.1.4 La capa de aplicación................................................... 42 3.5.3 Esquema de comunicación del protocolo TCP/IP...................................... 42 3.5.4 Sistema Operativo...................................................................................... 43 3.5.4.1 GNU Linux................................................................................... 44 3.5.4.2 ¿Porqué utilizar GNU Linux en clusters? ................................... 45 3.5.5 Middleware..................................................................................................46 3.5.6 Aplicación....................................................................................................47 3.6 Los clusters tipo Beowulf...........................................................................................47 3.6.1 Clusters Beowulf: Clase 1 y Clase 2...........................................................47 3.6.2 Características de un cluster tipo Beowulf..................................................48 3.7 Otros tipos de computadoras paralelas.....................................................................49 3.7.1 Computadoras de registros vectoriales.......................................................49 3.7.2 Computadoras multiprocesador de memoria compartida...........................50 3.7.3 Computadoras multiprocesador de memoria distribuida.............................51 3.7.4 Computación distribuida............................................................................. 52 3.8 Limitaciones de los clusters........................................................................................52 3.8.1 La ley de Amdahl.........................................................................................53 4.0 Diseño, Instalación y Configuración del Cluster Beowulf “Nahui”...............................55 4.1 Arquitectura del Cluster Beowulf “Nahui”....................................................................57 4.1.1 Hardware de “Nahui”...................................................................................57 4.1.2 Protocolos de Comunicación en “Nahui”.....................................................58 4.1.3 Sistema Operativo en “Nahui”.....................................................................58 4.1.4 Middleware en “Nahui”................................................................................59 4.1.5 Aplicaciones en “Nahui” .............................................................................59 4.2 Diseño del Cluster Beowulf “Nahui” ..........................................................................59 4.2.1 Consideraciones de Diseño .......................................................................60 4.2.2 Plan General del Cluster Beowulf “Nahui” .................................................61 4.2.3 La red de datos del Cluster Nahui .............................................................62 4.2.3 Topología de red en el Cluster Nahui ........................................................62 Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo V 4.2.4 Protocolo de configuración dinámica de anfitriones (DHCP)......................63 4.2.5 Traducción de direcciones de red (NAT) ...................................................64 4.2.6 Protocolo de Consola Segura (SSH) .........................................................66 4.2.7 Sistema de archivos en red (NFS) ............................................................ 67 4.2.8 Servicio de Información de red (NIS)..........................................................70 4.2.9 Protocolo de tiempo de red (NTP)..............................................................72 4.2.10 El Administrador de recursos y colas TORQUE......................................74 4.2.11 El Planificador Maui. ................................................................................76 4.3 Instalación del Cluster Beowulf Nahui .......................................................................77 4.3.1 El Nodo Principal.........................................................................................77 4.3.2 Instalación del sistema operativo...............................................................78 4.3.3 Actualización del sistema operativo...........................................................79 4.3.4 Configuración de interfaces de red............................................................79 4.3.5 Configuración de los servidores DNS a utilizar..........................................80 4.3.6 Configuración del archivo de anfitriones....................................................80 4.3.7 Instalación y configuración del Servidor DHCP..........................................81 4.3.8 Instalación y configuración del Servidor NAT.............................................83 4.3.9 Instalación y configuración del Cliente y Servidor SSH..............................84 4.3.10 Instalación y configuración del Servidor NFS...........................................85 4.3.11 Instalación y configuración del Servidor NIS............................................85 4.3.12 Instalacióny configuración del Cliente y Servidor NTP............................86 4.3.13 Instalación y configuración del Cliente y Servidor TORQUE....................88 4.3.14 Instalación y configuración del Planificador Maui.....................................90 4.4 Los Nodos Clientes....................................................................................................92 4.4.1 Instalación del sistema operativo...............................................................92 4.4.2 Actualización del sistema operativo...........................................................92 4.4.3 Instalación y configuración del cliente y servidor SSH...............................92 4.4.4 Instalación y configuración del cliente NFS................................................93 4.4.5 Instalación y configuración del cliente NIS.................................................93 4.4.6 Instalación y configuración del cliente NTP................................................94 4.4.7 Instalación y configuración del cliente TORQUE........................................94 Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo VI 5.0 La Seguridad en el Cluster “Nahui”..................................................................................95 5.1 Definición de los requerimientos de seguridad..........................................................97 5.2 Metodología para cumplir los requerimientos de seguridad……..............................98 5.2.1 ¿Qué se quiere proteger? ...........................................................................98 5.2.2 ¿De qué se quiere proteger? ......................................................................99 5.2.2.1 Amenazas.....................................................................................99 5.2.2.2 Vulnerabilidades..........................................................................100 5.2.2.3 Ataques.......................................................................................100 5.2.3 ¿Cómo se va a proteger? .........................................................................101 5.3 Soluciones a los requerimientos de seguridad........................................................102 5.4 Medidas contra las amenazas.................................................................................104 5.5 Medidas contra los ataques.....................................................................................105 5.6 Medidas contra las vulnerabilidades........................................................................105 5.7 Las comunicaciones seguras...................................................................................106 5.8 El Firewall de Nahui..................................................................................................108 5.8.1 IPTABLES..................................................................................................108 5.8.1.1 Uso de IPTABLES en Nahui con Firestarter...........................................109 5.9 Herramienta de monitoreo Ganglia...........................................................................112 5.9.1 Instalación del Servidor Ganglia................................................................113 5.9.2 Instalación del Cliente Ganglia..................................................................113 5.9.3 Utilización de Ganglia................................................................................114 5.10 Reglamento del cluster Nahui................................................................................115 6.0 Administración, Utilización y Pruebas en el Cluster Beowulf “Nahui”........................117 6.1 Administración de Nahui...........................................................................................119 6.1.1 Dar de alta y baja usuarios.......................................................................120 6.1.1.1 Utilización de nahui_admin.........................................................120 6.1.1.2 Código del script nahui_admin....................................................121 6.1.1.3 Código del script make.key.........................................................125 6.1.2 Agregar y remover nodos del cluster........................................................125 6.1.3 La herramienta de administración C3.......................................................127 6.1.3.1 Instalación de C3.........................................................................128 6.2 Utilización del cluster Nahui.....................................................................................129 6.2.1 El script “Hermes”......................................................................................129 6.2.1.1 Utilización de “Hermes”...............................................................131 Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo VII 6.2.1.2 Código del script “Hermes”..........................................................132 6.2.2 El script “Apolo”..........................................................................................135 6.2.2.1 Utilización de “Apolo”...................................................................137 6.2.2.2 Código del script “Apolo”.............................................................137 6.3 Pruebas en el cluster Nahui.....................................................................................141 6.3.1 Pruebas de Rendimiento: el benchmark linpack........................................141 6.3.1.1 Ejecutando Linpack en un solo nodo del cluster Nahui...............141 6.3.1.2 Ejecutando Linpack en todo el cluster Nahui..............................143 6.3.2 Pruebas de Funcionamiento......................................................................146 6.3.2.1 Cálculo del tiempo por número de procesadores........................146 6.3.2.2 Cálculo del tiempo por número de historias............................... 149 Conclusiones............................................................................................................................150 Referencias...............................................................................................................................152 Mesografía................................................................................................................................153 Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 1 Capítulo 1 Introducción Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 2 Capítulo 1 Introducción “Lo que conduce y arrastra al mundo no son las máquinas sino las ideas.” ...Víctor Hugo El origen de nuevos métodos numéricos ha propiciado que grupos de investigación alrededor del mundo trabajen en proyectos cada vez más interesantes y ambiciosos. Tal es el caso del método Monte Carlo, un método numérico que desde su creación a mediados del siglo pasado ha sido utilizado obteniendo buenos resultados en estudios de física, matemáticas, astronomía, medicina y economía, por mencionar algunos. Si bien el método Monte Carlo es una herramienta útil para los investigadores, también exige de gran capacidad en cómputo; hace algunos años esto significaba un gran problema para los grupos de investigación con presupuestos bajos y por consiguiente incapaces de adquirir una supercomputadora. En la actualidad el problema persiste pero la reducción en los precios de hardware durante la última década han abierto el camino a una ingeniosa forma de resolver los problemas sin la necesidad de adquiriruna costosa supercomputadora: los clusters. Los clusters son herramientas de cómputo que se utilizan como supercomputadoras personales de relativo bajo costo, y representan una solución viable a las necesidades de muchos grupos de investigación. El diseño y configuración de un cluster requiere de conocimientos teóricos y prácticos en diversas ramas de la computación: redes de computadoras, sistemas operativos, programación, seguridad informática etc. Cabe señalar que no existe un manual estricto para el diseño de clusters ya que cada uno está diseñado en base a un problema específico, y la gran variedad en hardware y software actual hace que prácticamente todos los clusters sean diferentes. Para poder explicar el procedimiento que se sigue para el diseño y configuración de un cluster es necesario entender la panorámica actual de la tecnología de clusters y la definición clara y concisa del problema que se desea resolver en el presente trabajo. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 3 1.1.- Panorama Actual En el mundo contemporáneo, la utilización de clusters de cómputo se ha incrementado a medida que los precios del hardware han disminuido. Se les puede encontrar en universidades de todo el mundo como herramientas indispensables de diversos proyectos científicos, por ejemplo: Predicción de desastres meteorológicos. Estudio de la evolución de las galaxias. Análisis criptográfico. Estudio del genoma humano. Análisis y generación de imágenes médicas. Diseño automotriz. Análisis de resistencia de materiales. Estudio de moléculas biológicas. Estudios de física atómica, nuclear y subnuclear. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 4 Los clusters también son utilizados en la industria privada proporcionando excelentes resultados. La compañía Google es un ejemplo claro, pues su popular buscador Web se ejecuta en un cluster de alta disponibilidad que es capaz de responder a millones de peticiones por segundo. Este cluster está formado por más de 10,000 nodos ejecutando el sistema operativo GNU Linux. También el comercio electrónico y las bases de datos de alto rendimiento se han visto beneficiados con la utilización de la tecnología de clusters. En 1993 se planteó la idea de crear una lista con las características de las 500 computadoras de mayor capacidad computacional en el mundo1, desde entonces dos veces al año esta lista es actualizada. El “ranking” está basado en el desempeño que tienen las supercomputadoras al ejecutar las pruebas linpack2. Actualmente los clusters integran la gran mayoría de la lista, tal como se puede apreciar en la gráfica de la figura 1.1. Es posible observar la aparición de los clusters en la lista alrededor del año 1999, y su espectacular crecimiento hasta alcanzar aproximadamente el 80% del total en 2007. Figura 1.1 Tipos de arquitecturas dentro del ranking mundial Top5003 SMP = Symmetric Multi-Processing , MPP = Massive Parallel Processing, SIMD = Single Instruction Multiple Data 1 Fuente: TOP500 Supercomputer sites 2 Fuente: TOP500 The Linpack Benchmark 3 Fuente: TOP500 November 2007 Poster Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 5 Al momento de realizar este trabajo el cluster mejor ubicado es el cluster MareNostrum siendo la computadora de mayor capacidad en Europa y la número 13 a nivel mundial, el cual cuenta con 10,240 microprocesadores (PowerPC 970 2300 MHz), 20,480 GB de memoria RAM, conectado por una red Myrinet y ejecutando el sistema operativo GNU Linux en cada uno de sus nodos. Es utilizado en investigaciones médicas alcanzando un rendimiento teórico total de 94,208 GFLOPS4. Esto nos demuestra que la tecnología de clusters puede competir con las más poderosas supercomputadoras del mercado actual. La UNAM no se queda atrás en temas de supercómputo, pues desde el surgimiento de esta tecnología varios Institutos, Facultades y por supuesto la Dirección General de Servicios de Cómputo Académico se han dado a la tarea de diseñar e instalar estas herramientas de cálculo para el uso de la comunidad universitaria. La última gran adquisición fue el cluster Kan Balam, que con sus 1,368 microprocesadores y 3,016 GB en memoria RAM es la computadora de mayor capacidad computacional de toda latinoamérica, alcanzando un rendimiento teórico total de 7,113 GFLOPS. Kan Balam es un cluster que esta integrado por nodos dedicados tal como se aprecia en la figura 1.2. Figura 1.2 Descripción de la estructura de la supercomputadora Kan Balam5 4 1GFLOP = 109 operaciones de punto flotante por segundo 5 Fuente: Supercómputo en la UNAM Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 6 Dado que Universidades, centros de investigación y compañías privadas en todo el mundo hacen uso de la tecnología de clusters existe un atractivo panorama laboral para los profesionales en tecnologías de información en materia de clusters, el cual es aprovechado por aquellos profesionales que toman las mejores decisiones en cuanto a diseño siempre teniendo en cuenta la relación costo/desempeño. 1.2.- Definición del problema El Grupo de Investigación en Física Médica del Instituto de Física de la UNAM necesita de grandes capacidades de cálculo para realizar simulaciones de transporte de radiación en materia con el método Monte Carlo como parte de sus investigaciones. Debido a que la utilización de una computadora de escritorio de altas prestaciones resulta insuficiente para las tareas de cálculo intensivo requeridas, el equipo de investigación adquirió 8 servidores Dell Power Edge SC1425 con el objetivo de diseñar un cluster tipo Beowulf que brinde la suficiente capacidad en cálculo. El diseño, instalación, configuración, aseguramiento, administración y utilización (adaptación del cluster a sus necesidades) de dicho cluster son los problemas principales a los que se enfrenta el grupo de investigación. 1.3.- Objetivos El objetivo principal de este trabajo ha sido el diseño, configuración y puesta en marcha de un cluster tipo Beowulf que proporcione al grupo de Investigación en Física Médica del IFUNAM suficiente poder de cálculo para realizar simulaciones con el método Monte Carlo. Para alcanzar el objetivo, el cluster deberá cumplir con una serie de requerimientos; los cuales se detallan a continuación. 1.4.- Requerimientos Generales 1. El software utilizado por los investigadores para realizar cálculos Monte Carlo deberá ser ejecutado de manera paralela en el cluster. 2. Todas las decisiones en cuanto al diseño del cluster deberán ser tomadas siempre en base al uso que tendrá el cluster. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 7 3. El diseño del cluster deberá tomar en cuenta cuestiones referentes a la seguridad informática, evitando así desde pérdidas de información hasta la inhabilitación total del sistema. 4. La administración y utilización del cluster deberá ser sencilla y amigable al usuario final, haciendo que muchos de los procesos sean prácticamente transparentes. 5. Toda la información generada a partir de la realización de los puntos anteriores deberá integrarse en el presente trabajo. Esto permitirá que el cluster sea reproducido de manera sencilla en caso de que sea necesaria una reinstalación o ampliación del mismo. Además la documentación servirá como una guía para el diseño de otros clusters y como un punto de partida en caso de que alguna falla se presente durante el ciclo de vida. 1.5.- Estructura del trabajo El diseño de un cluster requiere de varias etapas. El presentetrabajo aborda cada una de ellas agrupándolas en cinco capítulos que se describen brevemente a continuación: Capítulo 2: Se realiza una descripción del método Monte Carlo desde sus orígenes hasta sus aplicaciones. También se hace mención de la importancia que tienen los números aleatorios en la utilización de este método. El objetivo de este capítulo es describir la aplicación que deberá realizar el cluster a diseñar, así como justificar su utilización en el proyecto de investigación. Capítulo 3: Enfocado al estudio de la tecnología de clusters, ¿qué son? ¿cómo surgieron? ¿qué ventajas y desventajas tiene su utilización? El objetivo de este capítulo es presentar la teoría de clusters y en especial los clusters Beowulf mostrando su historia, características, consideraciones de diseño y por supuesto justificar su utilización para la realización de cálculos Monte Carlo. Capítulo 4: Se presenta la forma en que se llevó a cabo el diseño, instalación y configuración del cluster tipo Beowulf “Nahui”. Este capítulo incluye tanto la parte teórica que justifica cada toma de decisión en cuanto a diseño, así como la forma en que se Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 8 realizó en el cluster del proyecto. El objetivo de este capítulo es mostrar de manera ordenada y justificada cada uno de los pasos que se realizaron para la instalación y configuración de los nodos que integran al cluster. Capítulo 5: Dado el incremento de amenazas informáticas de los últimos años este capítulo aborda el tema de la seguridad en clusters. Primero enfocado al análisis de la seguridad para después de manera justificada indicar que medidas de seguridad se tomaron en el cluster Beowulf “Nahui”. Se incluye tanto el desarrollo teórico como la implementación práctica realizada en el cluster del proyecto. El objetivo de este capítulo es el asegurar el cluster Beowulf “Nahui” de manera que tanto la información que genere como su misma configuración no sean susceptibles a ataques externos o internos. Capítulo 6: Se realiza una descripción de la manera en que se administrará y utilizará el cluster Beowulf “Nahui”. Además se describen las pruebas realizadas que van desde la ejecución del conocido benchmark linpack hasta la ejecución en paralelo del programa PENELOPE encargado de realizar simulaciones Monte Carlo con ayuda de middleware a la medida escrito para este proyecto. El objetivo de este capítulo es el comprobar que el cluster tenga un funcionamiento que satisfaga las necesidades del Grupo de Investigación en Física Médica del IFUNAM. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 9 Capítulo 2 El Método Monte Carlo Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 10 Capítulo 2 El Método Monte Carlo “El azar favorece a una mente bien entrenada”... Louis Pasteur Desde hace ya varias décadas los científicos se han enfrentado con complejos problemas matemáticos al estudiar los fenómenos físicos que nos rodean. El estudio de la hidrodinámica, la conducción del calor y el electromagnetismo, por mencionar algunos campos, tuvieron un buen desarrollo con el uso de las ecuaciones diferenciales parciales para la resolución de sus problemas, hasta que éstos llegaron a un grado de dificultad bastante elevado. Fue entonces cuando se comenzó a emplear un método numérico que consistía en la simulación de variables aleatorias y el cual brindaba buenos resultados, método que llegaría a conocerse mucho tiempo después como el método Monte Carlo. Dado que el presente trabajo está enfocado al diseño e instalación de un cluster de cómputo para la realización de cálculos Monte Carlo, es necesario comprender la forma en que el Grupo de Investigación en Física Médica del IFUNAM lo aplica en la resolución de ciertos problemas, y más importante aún es el comprobar que la utilización de un cluster verdaderamente traerá consigo los beneficios que se esperan. A lo largo de este capítulo se expondrá desde el origen de este método numérico hasta llegar a su descripción y aplicaciones. Todo lo anterior con el objetivo primordial de entender y corroborar la necesidad de los investigadores de contar con una herramienta de supercómputo. 2.1- Historia Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 11 Es curioso que la base teórica del método Monte Carlo fuera bien conocida y utilizada mucho antes de que se le diera nombre. Un ejemplo claro se presenta en el año de 1777 cuando el naturalista francés Georges Louis Leclerc, Conde de Buffon, ideó una nueva forma para calcular el número π por medio de una gran cantidad de lanzamientos de una aguja sobre un papel con rectas paralelas distanciadas entre sí de manera uniforme (experimento de la aguja de Buffon [Mathai, 1999]). Sin embargo el verdadero potencial del método Monte Carlo se logró explotar con la aparición de las primeras calculadoras mecánicas y por supuesto tiempo después con el desarrollo de las computadoras. Al principio de la década de 1930 el científico Enrico Fermi al estar estudiando la moderación de neutrones desarrolló el método Monte Carlo que se utiliza en la actualidad, aunque en ese momento no le dio la importancia como para publicarlo o darle un nombre. Fermi simplemente utilizaba este muestreo estadístico para resolver los problemas que se le presentaban y sorprender a sus colegas por las buenas predicciones que realizaba de sus experimentos, todo con la ayuda de su máquina sumadora mecánica. [Metropolis, 1987] En la década de 1940 los científicos John Von Newman, Stanislaw Ulam y Nicholas Metropolis trabajaban en el proyecto Manhattan. Uno de los problemas con los que se enfrentaron era el de modelar la difusión de neutrones. La resolución de un problema de esa naturaleza por medio de ecuaciones algebraicas es demasiado complejo, por lo que los científicos tuvieron que recurrir a la utilización de métodos numéricos con un acercamiento totalmente nuevo: evaluaban grandes cantidades de datos aleatorios en las complejas ecuaciones y los resultados obtenidos eran analizados con estadística, es decir utilizaban el método Monte Carlo que en ese tiempo no contaba con nombre. Cabe señalar que debido a la falta de computadoras electrónicas de esa época (ENIAC sería terminada hasta 1946 y COLOSSUS se utilizaba para descifrar mensajes alemanes nazis) los diversos cálculos tuvieron que ser realizados por personas con calculadoras mecánicas. Al final los resultados obtenidos sirvieron para la construcción de la bomba atómica y con ello la terminación de la Segunda Guerra Mundial. Tiempo después del final de la guerra Von Newman, Ulam y Metropolis continuaron con Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 12 su interés en la aplicación del método que utilizaron en el proyecto Mahattan. En 1947 tuvieron la oportunidad de utilizar la computadora ENIAC para resolver una variedad de problemas que involucraban el transporte de neutrones y volvieron a corroborar que su método arrojaba excelentes resultados. Fue en el diario de la Asociación Estadística de América de Septiembre de 1949 cuando Metropolis y Ulam publicaron el artículo titulado “El Método Monte Carlo” nombrando por primera vez a este método. Fue nombrado de esa manera en referencia al casino de Monte Carlo por ser “la capital del juego de azar” y debido a que la ruleta es un buen generador de números aleatorios. [Sóbol, 1983] 2.2- Descripción del Método Monte Carlo A continuación se presenta un ejemplo sencillo que permite entender las características principales del método Monte Carlo.Suponga que se desea calcular el área de la figura plana A y considere que toda la figura está comprendida dentro de un cuadrado de área igual a un metro cuadrado tal como se muestra en la figura 2.1. Figura 2.1 Figura plana cuya área se necesita calcular. Ahora imagine que la figura anterior es colocada sobre un muro y sirve de blanco a un tirador que, situado a cierta distancia, dispara N veces apuntando al centro del cuadrado, obteniéndose la siguiente figura: Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 13 Figura 2.2 Figura plana con disparos. Sea N' el número de puntos que aparecen dentro de la figura A, entonces el área de A es aproximadamente igual al cociente N'/N. Para el caso particular de este ejemplo tenemos que: 14 disparos dentro de la figura / 40 disparos realizados = 0.35 metros cuadrados Es decir, se obtiene un resultado bastante aproximado siendo que el área real de la figura es de 0.3625 metros cuadrados. En el ejemplo anterior, por simple que parezca, se hizo uso del método Monte Carlo para la resolución del problema. El algoritmo del método Monte Carlo tiene en principio una estructura muy sencilla: Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 14 Se define un dominio de posibles entradas (en el ejemplo anterior el dominio está dado por el área en la que es posible realizar disparos, es decir el área del cuadrado). Se realizan N pruebas aleatorias e independientes (en el ejemplo anterior se le dispara al cuadrado varias veces y se comprueba si se acertó al área A). Se calcula la media de los resultados de todos los experimentos y se obtiene un resultado (en el ejemplo anterior esto se realiza al calcular el cociente N'/N). A pesar de que la aplicación del método en el ejemplo anterior es bastante sencilla existen ciertos factores que se deben tomar muy en cuenta. Retomando el ejemplo anterior uno se podría preguntar lo siguiente: ¿Cuántos disparos se deben realizar? Todo dependerá de la exactitud que se espere de los resultados; por regla general el error del método Monte Carlo es proporcional a la magnitud de ND donde D es una constante y N el número de pruebas realizadas. Esta fórmula permite observar que para disminuir el error en 10 veces es necesario aumentar el número de pruebas en 100 veces, de ahí que el método se haya visto altamente beneficiado con el desarrollo de las computadoras. Volviendo al ejemplo anterior, a mayor número de disparos se obtendrá un mejor resultado. ¿Que tanto afecta la destreza del tirador? Afecta los resultados en gran medida ya que un tirador experimentado acertaría en el centro del cuadrado prácticamente en todos sus disparos modificando el resultado del área A radicalmente. Esto es debido a que el tirador funciona como el generador de números aleatorios y en el caso de un tirador experimentado prácticamente no hay aleatoriedad en sus disparos. Este simple ejemplo muestra que para poder hacer uso del método Monte Carlo en cualquier problema es necesario contar con un buen generador de números aleatorios. De lo contrario los resultados obtenidos serán incorrectos. 2.2- Aplicaciones del método Monte Carlo En la práctica el método Monte Carlo no es utilizado para el cálculo de áreas de figuras Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 15 planas ya que existen métodos más precisos. El método Monte Carlo permite simular procesos que dependan de factores aleatorios y, como se demostró en el ejemplo anterior, también permite la resolución de problemas que no tienen una relación con cuestiones aleatorias por medio de un modelo probabilístico artificial. Dentro de las aplicaciones en las que se suele utilizar el método Monte Carlo se tienen: diseño de reactores nucleares, evolución estelar, prospecciones en explotaciones petrolíferas, criptología, física de materiales, radioterapia contra el cáncer, crecimiento de bosques, comportamiento de las acciones en la bolsa de valores, estudios de contaminación etc. El Grupo de Investigación en Física Médica del IFUNAM1 hace uso del método Monte Carlo para simular el transporte de radiación en materia, entendiéndose esto como la simulación de la penetración de fotones, electrones y positrones de alta energía en un cierto material. Esta simulación es bastante compleja, ya que las partículas al penetrar la materia sufren múltiples interacciones por medio de las cuales, además de transferir su energía a los átomos y moléculas del material, también producen una cascada de partículas secundarias que también interactuan con el medio de la misma forma que las partículas que les dieron origen [Salvat et al., 2003]. Así, con el paso del tiempo, la energía es progresivamente depositada en el medio mientras que el remanente es compartido por una gran número de partículas. Una descripción fiable de la evolución de estas cascadas de partículas juega un papel fundamental en los campos de la dosimetría y la radioterapia. Antes de la creación de las primeras computadoras las simulaciones estaban ligadas a la utilización de la ecuación de transporte de Boltzmann [Metropolis y Ulam, 1949] pero la aparición conjunta de integrales y derivadas en ecuaciones de 8 variables hacían de éste uno de los problemas más complejos de la física matemática. Es por eso que en la actualidad la mejor alternativa para resolver estos problemas es con la utilización del Método Monte Carlo. 2.4- El código PENELOPE Para la realización de las simulaciones del transporte de radiación en materia el Grupo de 1 Fuente: http://www.fisica.unam.mx/fismed Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 16 Investigación en Física Médica del IFUNAM utiliza, entre otros, el conjunto de programas y subrutinas PENELOPE (acrónimo de las palabras en inglés PENetration and Energy Loss of Positrons and Electrons) desarrollado por el equipo del profesor F. Salvat de la Facultad de Ciencias Físicas de la Universidad de Barcelona. Este programa escrito en el lenguaje Fortran77 (forma estándar ANSI/ISO) permite la simulación del transporte de cascadas de electrones, positrones y fotones en casi cualquier medio material, ya sea sólido, gaseoso o líquido. PENELOPE no puede operar por sí mismo ya que necesita que el usuario le proporcione un programa principal con las características del problema específico a resolver, el cual debe hacer llamadas a las subrutinas de PENELOPE. Esto permite al usuario realizar simulaciones sin la necesidad de conocer muchos de los intrincados aspectos teóricos de la teoría de transporte. También es necesario especificar la geometría y el material del que está compuesto el objeto a irradiar la cual se especifica por medio de dos archivos. El programa PENELOPE es distribuido en un archivo comprimido que contiene lo siguiente: Subdirectorio FSOURCE PENELOPE.F: subrutina de simulación. PENGEOM.F: subrutina de manejo de geometrías. PENVARED.F: subrutina de reducción de varianza. MATERIAL.F: programa que genera archivos de materiales. TABLES.F: programa que tabula las secciones eficaces (probabilidades) de la interacción de partículas en un material. Subdirectorio PENDBASE Contiene la base de datos de PENELOPE, la cual esta integrada por 465 archivos con secciones eficaces de diversos elementos, compuestos y mezclas. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 17 Subdirectorio OTHER GVIEW: contiene visualizadores de geometrías, así como definiciones de geometríasde ejemplo. SHOWER: binario que realiza el transporte de electrones y fotones en capas creado con propósitos de enseñanza y solamente es posible ejecutarlo en el S.O. Windows. EMFIELDS: contiene la subrutina PENFIELD.F la cual permite realizar simulaciones de transporte bajo el efecto de campos magnéticos estáticos y campos eléctricos. PLOTTER: contiene scripts de GNUPLOT para crear gráficas de las simulaciones. Subdirectorio EXAMPLES PENSLAB.F: programa principal para el transporte de partículas en capas. PENSLAB.IN: archivo de entrada para ejecutar PENSLAB.F AL.MAT: archivo de datos de material para ejecutar PENSLAB.F PENCYL.F: programa principal para el transporte de partículas en geometrías cilíndricas de muchas capas. PENCYL.IN: archivo de entrada para ejecutar PENCYL.F PENDOSES.F: programa principal para el transporte de partículas en geometrías cuádricas arbitrarias. PENDOSES.IN: archivo de entrada para ejecutar PENDOSES.F PENDOSES.GEO: archivos de geometría para PENDOSES.F NAIAL.MAT: archivos de materiales para PENCYL.F y PENDOSES.F TIMER.F: subrutina genérica de reloj, compatible con el compilador g77. NOTIMER.F: subrutina alternativa de reloj, para utilizarse con otros compiladores. 2.5- Generadores de Números Aleatorios Hasta ahora se ha hablado de lo importante que es la utilización de los números aleatorios para la resolución de problemas por medio del método Monte Carlo, pero desde el inicio de esta práctica hasta la actualidad se ha presentado el problema de ¿cómo generar estos números? Las formas en la que se pueden generar números aleatorios y pseudo- aleatorios son: Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 18 Generadores de Números Aleatorios Verdaderos (TRNGs) Relacionados a condiciones iniciales: lanzamiento de una moneda o de un dado, utilización de una ruleta, juegos de cartas, etc. Relacionados al ambiente: obteniendo datos a partir de las condiciones atmosféricas, decadencia de materiales radioactivos, ruido térmico de dispositivos, movimiento browniano, lámparas de lava, etc. Generadores de Números Pseudo-Aleatorios (PRNGs) Intrínsecamente generados por el sistema: se basan en la utilización de fórmulas matemáticas o de tablas precalculadas para la generación de números que aparentan ser aleatorios llamados números pseudo- aleatorios. Después de observar la tabla anterior la interrogante que surge es ¿qué tipo de generador utilizar?, la siguiente tabla muestra las características principales que presentan cada uno de los generadores: Generadores de Números Aleatorios Verdaderos Generadores de Números Pseudo-Aleatorios Eficiencia pobre Eficiencia excelente No presenta periodicidad Sí presenta periodicidad No es determinístico Sí es determinístico Aplicaciones en: loterías, dados, apuestas y juegos de azar en general, además de servir como generador de llaves de cifrado. Aplicaciones en: simulación y modelado principalmente. El software PENELOPE hace uso del generador de números pseudo-aleatorios integrado en el lenguaje Fortran77 por medio de la función RAND (con una periodicidad de 1018), cuyo código se muestra a continuación: C ********************************************************************* C FUNCTION RAND C ********************************************************************* C This is an adapted version of subroutine RANECU written by F. James C (Comput. Phys. Commun. 60 (1990) 329-344), which has been modified to C give a single random number at each call. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 19 C C The ’seeds’ ISEED1 and ISEED2 must be initialized in the main program C and transferred through the named common block /RSEED/. C IMPLICIT DOUBLE PRECISION (A-H,O-Z), INTEGER*4 (I-N) PARAMETER (USCALE=1.0D0/2.0D0**31) COMMON/RSEED/ISEED1,ISEED2 C I1=ISEED1/53668 ISEED1=40014*(ISEED1-I1*53668)-I1*12211 IF(ISEED1.LT.0) ISEED1=ISEED1+2147483563 C I2=ISEED2/52774 ISEED2=40692*(ISEED2-I2*52774)-I2*3791 IF(ISEED2.LT.0) ISEED2=ISEED2+2147483399 C IZ=ISEED1-ISEED2 IF(IZ.LT.1) IZ=IZ+2147483562 RAND=IZ*USCALE C RETURN END En el código se observa que antes de llevar a cabo una simulación es necesario especificar dos valores semilla en el archivo de datos del programa, estos valores permitirán reproducir con exactitud la simulación en caso de ser necesario. 2.6- Cálculo de π A manera de ejemplo ilustrativo se realizó el cálculo aproximado del número π haciendo uso del método Monte Carlo. Se utilizó el programa simple-pi.c2 cuyo código fuente se obtuvo de la librería SPRNG2.03 y el programa fue ejecutado utilizando un generador de fibonacci retardado4 en una computadora portátil con un procesador Intel Pentium 4 a 2.0 GHz y 512 MB en RAM. Los resultados obtenidos fueron los siguientes: 2 Fuente: SPRNG Examples 3 Fuente: Scalable Parallel Random Number Generators 4 Fuente: SPRNG Generators Números Valor de π calculado Error Error Tiempo Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 20 Figura 2.3 A medida que aumentan los números pseudo-aleatorios empleados en la simulación Monte Carlo el valor de π calculado se aproxima más al valor real. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 21 Capítulo 3 La Tecnología de Clusters de Cómputo Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 22 Capítulo 3 La Tecnología de Clusters de Cómputo "Divide et vinces", frase célebre de Julio César que significa "divide y vencerás", nos proporciona una buena estrategia para resolver problemas complejos capaces de ser divididos en subproblemas más sencillos. Es de esta manera como las supercomputadoras han alcanzado su popularidad en el mundo de las ciencias y la industria privada, dividiendo programas complejos y ejecutando cada una de sus partes en varios procesadores para obtener resultados en un menor tiempo. El gran inconveniente que presenta esta práctica es que la adquisición de una supercomputadora (precios que rebasan el millón de dólares) supera por mucho el presupuesto de la gran mayoría de los grupos de investigación. Es así como surge la tecnología de clusters de computadoras como una solución de relativo bajo costo a las necesidades de cómputo actuales, todo enfocado en la idea: “Si no puede comprar una supercomputadora entonces... ármela usted mismo”. Bajo el simple concepto de que un cluster es una supercomputadora de relativo bajo costo diseñada por el mismo usuario se puede continuar con una definición más formal: Un cluster es un conjunto de PC's o estaciones de trabajo (llamados nodos) que se conectan por alguna tecnología de red y trabajan como un solo recurso integrado de cómputo con el objetivo de satisfacer alguna necesidad de: alta disponibilidad, balanceo de carga, alto rendimiento o alguna combinación de las anteriores inicialmente diseñados y armados bajo el esquema “hágalo usted mismo” aunque en la actualidad se puede optar por la contratación de compañías especializadas. [Gropp et al., 2003] Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 23 3.1- Historia La idea de enlazar varias computadoras con un propósito común no es nueva. En las décadas de los 50's y 60's la Fuerza Aérea de los Estados Unidos estableció lared de defensa aérea más grande hasta ese momento: el sistema SAGE. Este sistema coordinaba varias estaciones de radar con el objetivo de detectar amenazas aéreas (aviones bombarderos soviéticos, misiles intercontinentales etc.) y guiar misiles para su intercepción y destrucción. SAGE estuvo en funcionamiento durante 20 años (1963-1983) bajo las órdenes del Comando de Defensa Aeroespacial de Norte América (NORAD). El sistema SAGE (Semi-Automatic Ground Enviroment) estaba conformado por 22 centros de control instalados en bunkers altamente reforzados a lo largo de los Estados Unidos (uno de ellos dentro de la montaña Cheyenne en Colorado) y un centro en Canadá. Cada centro de control contaba con 2 computadoras SAGE (una se utilizaba como respaldo en caso de mal funcionamiento). Cada computadora SAGE pesaba 250 toneladas y estaba integrada por 60,000 tubos de vacío, 175,000 diodos y 13,000 transistores ocupando un área de 20,000 pies cuadrados y requería de 3 mega watts para su funcionamiento. Los 23 centros estaban conectados por cableado telefónico de larga distancia. De esta forma se logró que la información recopilada por los 23 centros estuviera disponible en todo el sistema. Mucha de la gente que trabajó en este sistema fue tan influenciada por su funcionamiento que después trabajarían en el desarrollo de ARPANET, la red de computadoras que evolucionaría en la INTERNET actual. Figura 3.1 Sala de operaciones del sistema de defensa SAGE1. 1 Fuente: Computer Museum Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 24 Fue en el año de 1984 cuando la compañía DEC utilizó por primera vez el término “cluster” para representar un conjunto coordinado de computadoras independientes enfocadas a una tarea específica y lograrían la atención del mercado con el lanzamiento de sus VAXclusters, sistemas conformados por la conexión de varias minicomputadoras VAX funcionando en conjunto tal como se puede apreciar en la figura 3.2. Figura 3.2 Estructura del VAXcluster2 El desarrollo más significativo y recordado para la tecnología de clusters se llevaría a cabo en 1993 cuando el Centro de vuelos espaciales Godarth de la NASA trabajó en el proyecto “Ciencias de la Tierra y el Espacio” a cargo de Jim Fisher. El centro de cómputo del proyecto contaba con computadoras paralelas Cray, MasPar y Convex, suficiente capacidad computacional para realizar simulaciones en un tiempo aceptable dada la época. El principal problema era que los resultados obtenidos eran demasiado grandes para poder analizarlos desde una estación de trabajo científica. Debido a ésto las supercomputadoras no sólo se utilizaban para generar los resultados sino también para organizarlos y analizarlos, propiciando un desperdicio en posibles tiempos de simulación. 2 Fuente: VAXclusters “A Closely-Coupled Distributed System” Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 25 Fue entonces cuando Jim Fisher comprendió que se necesitaba una especie de supercomputadora personal y decidió que su diseño y creación sería otra meta de su proyecto. En esa época el Dr. Thomas Sterling trabajaba en el proyecto a cargo de Jim Fisher y fue a él a quién se le ocurrió la idea de apilar una cierta cantidad de computadoras de bajo costo para así obtener mayores capacidades de cómputo. Después de plantear su propuesta (aún sin saber como lo lograría) ésta fue aceptada y recibió los fondos necesarios para empezar a trabajar; el proyecto necesitaba un nombre. El Dr. Sterling quería un nombre que diera cierto significado al proyecto, algo que se asemejara a la historia de David y Goliath, haciendo analogía a su pequeña supercomputadora compitiendo contra las supercomputadodras comerciales de la época. Fue entonces cuando recordó un poema de la literatura inglesa de la Edad Media en la que un valiente guerrero llamado Beowulf salva a su pueblo al derrotar al terrible monstruo Grendel. El nombre Beowulf no convencía al Dr. Sterling por lo que lo desechó como posibilidad. Otras opciones surgieron entre ellas “pilas de computadoras personales”. Un día el Dr. Sterling recibió una llamada en la cual se requería el nombre del proyecto con urgencia, al no haber mejores opciones al final se eligió el nombre Beowulf. En las propias palabras del Dr. Sterling, él menciona haber dado el nombre Beowulf al proyecto pero no al popular tipo de clusters de alto rendimiento que se derivarían a partir del mismo. Mucha gente le adjudica este nombramiento pero la realidad es otra, pues se desconoce quién fue el primero en llamarlos Clusters Beowulf. El proyecto se puso en marcha y se adquirió todo lo necesario; fue entonces cuando surgió el primer problema: las velocidades de comunicación entre los nodos eran demasiado lentas (en ese tiempo los switches eran costosos y se trabajaba con hubs). Fue Don Becker (amigo y colega del Dr. Sterling) quien contribuyó a resolver el problema de las velocidades por medio de la unión de canales (channel bonding), además de que apoyó la utilización del sistema operativo GNU Linux y contribuyó a su desarrollo como sistema operativo programando diversos controladores y aportando código al desarrollo del sistema. Al final el proyecto fue un éxito; con sólo $40,000 dólares se instaló y configuró el cluster llamado Wiglaf conformado por 16 computadoras 80486 a 100MHz cada una con 32 MB Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 26 en RAM y un Gigabyte en disco duro. Ejecutando el sistema operativo GNU LINUX, todas conectadas por medio de una red Ethernet 10-Base-T con unión de canales, se alcanzaron velocidades de hasta 70 Mflops. La era del supercómputo de bajo costo había comenzado y desde entonces cientos de universidades han recurrido a los clusters como una útil herramienta de investigación. 3.2- Aplicaciones de los Clusters Existen una gran cantidad de problemas que sería imposible afrontar sin la utilización de las supercomputadoras; entre ellos tenemos3: Modelado Climático: Millones de datos obtenidos vía satélite son simulados en supercomputadoras con el objetivo de poder hacer predicciones sobre los posibles escenarios climáticos de los próximos años. Fusión Controlada: Con el objetivo de resolver el problema de la energía mundial se realizan simulaciones de fusiones termonucleares en supercomputadoras. Esto permite a los investigadores aprender los complejos comportamientos de la fusión en un ambiente totalmente seguro. Defensa Nacional: Claves ultra secretas y vitales para la seguridad nacional de un país son cifradas y descifradas solamente por medio del uso de supercomputadoras. Nanotecnología: A medida que la electrónica digital se acerca cada vez más a las escalas atómicas, los diseñadores necesitan modelar estos nuevos circuitos con el uso de supercomputadoras. Medicina: El entendimiento del complejo plegamiento de las proteínas y otros tipos de estudios a nivel molecular para la fabricación de medicamentos son posibles gracias a la utilización de supercomputadoras. Astronomía: El modelado de una galaxia con 100 billones de estrellas sólo es posible con el uso de supercomputadoras. Ingeniería avanzada: La simulación del comportamiento de nuevos materiales a una microescala solamente es posible con el uso de supercomputadoras. 3.3- Tipos de Clusters Hace algunos años el término de cluster era asociado solamente a computadoras 3 Fuente: Scientific American “How to Build a HYPERcomputer” Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos MonteCarlo 27 encargadas de resolver problemas complejos de las ciencias siempre enfocados al cálculo intensivo pero en la actualidad la tecnología de clusters es utilizada para satisfacer diversas necesidades. 3.3.1- Clusters de Balanceo de Carga Son clusters que distribuyen su carga de trabajo a través de múltiples nodos. Todos los nodos son capaces de responder a peticiones externas debido a que ejecutan los mismos programas y en caso de que se presente la falla de un nodo las peticiones son distribuidas entre los nodos activos restantes. Este tipo de clusters tiene la ventaja de que los nodos pueden estar instalados en distintos puntos geográficos además de que su instalación es relativamente fácil. La tecnología Web se ha visto altamente beneficiada con la utilización de clusters de balanceo de carga para satisfacer a todas las peticiones en sus servidores. Figura 3.3 Cluster de balanceo de carga 3.3.2- Clusters de Alta Disponibilidad Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 28 Son clusters utilizados en aplicaciones de misión crítica; están compuestos por varios nodos donde un grupo de nodos principal se encarga de brindar algún servicio mientras que un segundo grupo de nodos monitorea el correcto funcionamiento del grupo de nodos principal. Así cuando el grupo principal falle, el segundo grupo entrará como un reemplazo inmediato evitando así la suspensión del servicio. Su utilización en conjunto con los clusters de balanceo de carga es bastante aplicada. Figura 3.4 Cluster de alta disponibilidad 3.3.3- Clusters de Alto Rendimiento Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 29 Son clusters utilizados para resolver problemas que requieren de grandes capacidades de cálculo. Están compuestos por varios nodos que ejecutan código de manera paralela con el objetivo de obtener resultados en un menor tiempo. Es el tipo de cluster más popular y utilizado desde la aparición de los clusters tipo BEOWULF. Figura 3.5 Cluster de alto rendimiento 3.4 Estructura de los Clusters de Alto Rendimiento Cuando se habla de la estructura de un cluster de alto rendimiento esto se refiere Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 30 principalmente a la toma de dos decisiones importantes: 1. ¿Que función tendrá cada uno de los nodos que integran el cluster? 2. ¿Cómo estarán conectados los nodos dentro de la red de datos? Para la construcción de un cluster de alto rendimiento existen tres tipos de estructuras: 3.4.1 Estructura de cluster simétrico En esta estructura cada nodo se comporta de manera individual (los nodos también son utilizados para actividades ajenas a las del cluster). Su instalación es bastante sencilla ya que solamente se requiere conectar varias computadoras a una red de datos y ejecutar algún software específico de clusters tal como se muestra en la siguiente figura: Figura 3.6 Estructura de cluster simétrico. 3.4.2 Estructura de cluster asimétrico En esta estructura existe un nodo principal o maestro que es el encargado de proporcionar la comunicación de los usuarios con los demás nodos esclavos (nodos Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 31 dedicados solamente al cluster). La instalación de los nodos esclavos es bastante sencilla a comparación de la del nodo principal ya que este debe contar con fuertes medidas de seguridad dados los servicios que proporciona. Figura 3.7 Estructura de cluster asimétrico. 3.4.3 Estructura de cluster expandido Esta estructura es parecida a la de cluster asimétrico pero con la marcada diferencia de que el nodo principal ya no es el encargado de proporcionar todos los servicios del Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 32 cluster, es decir que puede haber nodos servidores tal como se muestra en la siguiente figura: Figura 3.8 Estructura de cluster expandido. 3.5 Arquitectura de los Clusters de Alto Rendimiento La arquitectura de un cluster de alto rendimiento está integrada por cinco capas: la capa de hardware compuesta por todos los componentes físicos que integran al cluster, la capa de protocolo de comunicación encargada de todas las comunicaciones entre nodos y con redes externas, la capa de sistema operativo encargada de administrar y controlar los recursos del sistema, la capa de middleware encargada de la ejecución de aplicaciones Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 33 en paralelo en los nodos del cluster, y la capa de aplicación integrada por los programas que se paralelizan con el objetivo de obtener resultados en un menor tiempo. Figura 3.9 Arquitectura de un cluster de alto rendimiento.4 La elección de los elementos que integran cada una de las capas definirá el desempeño final que tendrá un cluster al ejecutar aplicaciones. Antes de poder diseñar un cluster de alto rendimiento es necesario desarrollar y entender cada una de las capas tal como se presenta a continuación: 3.5.1 Hardware El hardware de un cluster de cómputo es el conjunto de componentes físicos que integran a esta tecnología. Una buena elección de hardware es crucial para el desempeño final que tendrá el cluster. A continuación se presenta una breve descripción del principal hardware que integra los nodos de un cluster de alto rendimiento. 4 Fuente: Considering Middleware Options in High-Performance Computing Clusters. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 34 3.5.1.1 Microprocesador El microprocesador es el componente encargado de interpretar datos y ejecutar las instrucciones de los programas, también coordina a los demás componentes de una computadora. El microprocesador es comúnmente llamado el cerebro de la computadora pero dada la incapacidad de este para “pensar” una descripción más acertada sería decir que el microprocesador es una calculadora extremadamente veloz (miles de millones de operaciones por segundo) con la capacidad de realizar operaciones aritméticas simples y almacenar sus resultados. Las características que se deben tomar en cuenta para su elección se presentan a continuación: 1) La arquitectura del set de instrucciones (ISA por sus siglas en inglés): se refiere a la estructura lógica de las instrucciones que un microprocesador puede entender y ejecutar. El término agrupa todo lo referente a programación con respecto al microprocesador incluyendo los registros, modos de direccionamiento, tipos de datos, manejo de interrupciones y excepciones, arquitectura de la memoria y por supuesto las instrucciones. Dentro de las características más importantes de la ISA tenemos las siguientes: Los tipos de operaciones que es capaz de realizar. El tipo y tamaño de los operandos que puede manejar. El lugar en el que se almacenan los operandos. El número de operandos que se pueden manejar dentro de una misma instrucción. Algunos ejemplos de ISA implementadas en hardware son: Alpha, Power, SPARC, IA-64 y la tan conocida x86 que incluye a IA-32 (i386, Pentium, Athlon). Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 35 Figura 3.10 Tecnologías de chips utilizadasen supercomputadoras desde 1993 hasta el año 20075. 2) La microarquitectura: se refiere a las técnicas de diseño particulares de cada compañía para implementar una arquitectura de set de instrucciones. Esto quiere decir que una misma arquitectura de set de instrucciones puede ejecutarse en dos microarquitecturas totalmente diferentes. 3) La velocidad del ciclo de reloj: se refiere a la frecuencia a la que el microprocesador puede ejecutar instrucciones por segundo, por ejemplo: un microprocesador a 3 GHz puede ejecutar 3 mil millones de operaciones por segundo, aunque esta frecuencia puede variar dependiendo de la aplicación que el procesador ejecute. 4) El rendimiento teórico: se refiere a la cantidad de operaciones de punto flotante 5 Fuente: TOP500 November 2007 Poster Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 36 que el microprocesador puede realizar por segundo (FLOPS por sus siglas en inglés). Esta medida está determinada por el trabajo conjunto de: el set de instrucciones, la velocidad del ciclo de reloj y los componentes que integran al mismo microprocesador. El rendimiento teórico se obtiene mediante la ejecución de algún software de pruebas (benchmark). Cabe señalar que este rendimiento es meramente teórico ya que prácticamente nunca se alcanza en la ejecución de una aplicación real. Figura 3.11 Rendimiento teórico de las supercomputadoras desde 1993 hasta el año 20076. 5) La memoria caché del microprocesador: se refiere a una memoria volátil de poca capacidad de almacenamiento pero extremadamente veloz que se encuentra dentro del mismo microprocesador. Su función es la de almacenar ciertos datos que son utilizados con una mayor frecuencia por el microprocesador. Esto evita que el microprocesador tenga que esperar los datos de la memoria RAM (la cual trabaja a una frecuencia mucho menor) cada vez que necesite realizar una operación. Existen dos tipos principales de memoria caché en el microprocesador: la reducida memoria caché nivel 1 (interna al microprocesador) la cual funciona a 6 Fuente: TOP500 November 2007 Poster Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 37 la misma frecuencia que el microprocesador y la memoria caché de nivel 2 (externa al microprocesador de tipo SRAM) la cual tiene mayor capacidad de almacenamiento pero una menor velocidad. 3.5.1.2 Memoria de acceso aleatorio Conocida simplemente como memoria RAM (Random Access Memory) es la memoria que almacena instrucciones y datos de manera temporal (es memoria volátil) para realizar tareas dentro de una computadora. El objetivo de su utilización es la reducción del tiempo de ejecución de los programas ya que el microprocesador tarda un menor tiempo en extraer datos de la memoria RAM que del disco duro. La memoria RAM se divide en dos tipos principales: Memoria de Acceso Aleatorio Estática (SRAM): es una memoria fabricada a partir de componentes que no requieren de refresco logrando así que la memoria pueda trabajar casi a la misma velocidad del microprocesador. Es utilizada principalmente como memoria caché L2 debido a que supera por mucho en velocidad a la memoria DRAM. Se caracteriza por ser una memoria de muy poca capacidad de almacenamiento (valores típicos varían entre 256 KB y 1 MB) debido a: su costo, consumo de energía, tamaño de componentes y calor generado, cifras que superan por mucho a los de la DRAM. Memoria de Acceso Aleatorio Dinámica (DRAM): es una memoria fabricada a partir de transistores acoplados con condensadores siendo éstos los que dependiendo de su estado (cargado o descargado) representan los unos y ceros a almacenar. Debido a la presencia de la corriente de fugas, con el paso del tiempo los condensadores cargados (representando “unos”) se descargarían poco a poco hasta llegar a un nivel en el que el sistema los considerara como descargados (representando “ceros”) afectando gravemente la información almacenada originalmente. Para resolver este problema se agregó un circuito encargado de recargar periódicamente a todos los condensadores, a este proceso se le llama refresco. Es una memoria mucho más lenta a comparación de la SRAM pero sus bajos costos en fabricación la han convertido en la memoria más comercial y utilizada. Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 38 Dentro de las características que hay que tomar en cuenta para la elección de la memoria RAM en la construcción de un cluster se tienen las siguientes: 1) La velocidad a la que trabaja la memoria debe estar soportada por la placa base. 2) En base a la aplicación que tendrá el cluster se deberá elegir la cantidad de memoria RAM en el nodo. Existe una regla en las aplicaciones científicas y de ingeniería que es utilizada como guía inicial cuando no se tiene experiencia en el diseño de clusters, esta dice: por cada operación de punto flotante por segundo es necesario un byte de memoria RAM. 3) El tipo de módulo de la memoria RAM elegida debe estar soportada por la placa base. 3.5.1.3 Placa Base La placa base (motherboard) es un circuito impreso en una placa que integra toda la electrónica de una computadora, es decir, provee toda una infraestructura lógica y física en un solo empaquetado robusto y altamente configurable. La elección de la placa base en la construcción de un cluster es muy importante ya que ésta define: La familia del procesador, su ciclo de reloj y el número de procesadores en un nodo. La interfaz del disco duro y la máxima capacidad de almacenamiento en el nodo. El tipo de memoria y la máxima capacidad reconocida por del nodo. El número de subsistemas que podrán ser conectados en el nodo. La cantidad y tipos de buses de entrada y salida (conectan los periféricos del nodo con la memoria principal). 3.5.1.4 Dispositivos de almacenamiento permanente El disco duro es el principal dispositivo de almacenamiento permanente dentro del nodo, está compuesto por una serie de platos que giran a gran velocidad (7200 rpms hasta 15,000 rpms) dentro de una carcasa. Cada plato cuenta con un cabezal que se desplaza Neevia docConverter 5.1 Diseño de un Cluster Beowulf para realizar Cálculos Monte Carlo 39 a lo largo de toda su superficie con el objetivo de leer o escribir impulsos magnéticos. La elección del disco duro para un nodo de cluster depende de 3 aspectos principales: El tipo de conexión con el que cuenta la placa base del nodo (SATA, IDE, SCSI). La capacidad de almacenamiento requerida en el nodo (desde unos cuantos GB hasta cientos). Estudiar la posibilidad de no comprar discos duros (a excepción del que necesita el nodo principal) y realizar un diseño de cluster donde todo el sistema sea exportado del nodo principal. 3.5.1.5 Tarjeta de video Es el dispositivo encargado de procesar la información gráfica del nodo para poder ser visualizada en una pantalla (monitor, tv). La elección de la tarjeta de video para un nodo depende mucho de la aplicación que se le dará al cluster, en caso de tratarse de una aplicación enfocada a simulaciones tridimensionales entonces la compra de la tarjeta se deberá realizar teniendo en cuenta algunos aspectos: El tipo de interfaz de la placa base: PCI, AGP, PCIe, etc. Los tipos de conectores de salida de la tarjeta: SVGA, DVI, S-VIDEO, HDMI, etc. Las características de la unidad de procesado de gráficos (GPU). La memoria de video con la que cuenta la tarjeta de video. La alimentación eléctrica que la tarjeta de video requiere, esto es muy importante ya que va ligado a la elección de la fuente de alimentación del
Compartir