EL lenguaje de programación Java es ampliamente. de mecanismos de comunicación eficientes



Documentos relacionados
4 ARQUITECTURA DE COMUNICACIONES

Colección de Tesis Digitales Universidad de las Américas Puebla. Morales Salcedo, Raúl

Comunicaciones Escalables en Memoria Compartida para Paso de Mensajes en Java

Evaluación del rendimiento de procesadores Intel Nehalem. Modelos x7550, x5670 y x5570

Nicolás Zarco Arquitectura Avanzada 2 Cuatrimestre 2011

JAVA es una alternativa emergente en Computación. Comunicaciones Escalables en Memoria Compartida para Paso de Mensajes en Java

Módulo 2. Inicio con Java

servicios. El API es definido al nivel de código fuente y proporciona el nivel de

Capítulo 6: Conclusiones

Figura 1.4. Elementos que integran a la Tecnología de Información.

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Conceptos de redes. LAN (Local Area Network) WAN (Wide Area Network)

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

5.1 Introducción a Servicios Web

Índice. Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales Qué ventajas tengo como desarrollador?

INSTITUCIÓN EDUCATIVA JOSÉ EUSEBIO CARO ÁREA DE TECNOLOGÍA E INFORMÁTICA 2016 DOCENTE HARDWARE DE RED

TEMA 3 PROFESOR: M.C. ALEJANDRO GUTIÉRREZ DÍAZ 2 3. PROCESAMIENTO DE CONSULTAS DISTRIBUIDAS

En los últimos años, se ha presentado una enorme demanda por servicios portátiles,

Java Básico. Introducción a Java. Copyright

Actualización de versión a Bizagi 10.x

Capítulo 9 Redes y Teleinformática 9.1 Introducción

Implementación de algoritmos genéticos paralelos de grano burdo en redes locales de computadoras. Resumen

Sistema de Mensajería Empresarial para generación Masiva de DTE

Institución Educativa Inem Felipe Pérez de Pereira 2012 Estrategia taller. AREA: Sistemas de información Taller Previsto

LA IMPORTANCIA DE CONTROLAR LAS PÉRDIDAS DE ENERGÍA EN LAS EMPRESAS DISTRIBUIDORAS

INTRODUCCIÓN AL MONITOREO ATMOSFÉRICO 214

El presente documento describe la importancia que está tomando el cómputo distribuido en

1. Aplicación de la conmutación de circuitos y la conmutación de paquetes. 1.1 Sistema de señalización número 7 (SS7).

Sistema de Interconexión de Registros (SIR)

Sistemas de Operación II

Sistemas Operativos Windows 2000

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

REDES AD HOC INFORME DE REDES DE COMPUTADORES I. Felipe Muñoz Jonathan Porta Matías Contreras

Intel Tera-Scale Computing Alumno: Roberto Rodriguez Alcala

GANETEC SOLUTIONS HPC Banca / Aseguradoras

Servicios avanzados de supercomputación para la ciència y la ingeniería

Alcatel-Lucent VitalQIP Appliance Manager

EL MODELO DE ESTRATIFICACIÓN POR CAPAS DE TCP/IP DE INTERNET

INFORME TECNICO PREVIO DE EVALUACIÓN DE SOFTWARE N /UIE-PATPAL - FBB

Servicio de resolución de nombres (DNS)

EVALUACIÓN COMPARADA DEL RENDIMIENTO DEL PROCESADOR INTEL 5570 (NEHALEM)

Capítulo I Introducción

Práctica 2: El problema de la sección crítica

4. Programación Paralela

Capítulo 5. Cliente-Servidor.

PRESENCIAL TEMAS 5 Y 6 SAD. Victor Martin

INSTITUTO TECNOLÓGICO DE SALINA CRUZ

Introducción a Computación

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

REDES y COMUNICACIONES I. Módulo 02: Modelo de Referencia OSI CONTENIDO

Capítulo 1. Introducción

Oferta tecnológica: Auditoría de rendimiento en Redes IP

8. Las VLAN 8.1. Visión general de las VLAN La solución para la comunidad de la universidad es utilizar una tecnología de networking

CAPÍTULO I. Sistemas de Control Distribuido (SCD).

La vida en un mundo centrado en la red

La variabilidad interanual de las precipitaciones y las condiciones de sequía en la provincia de Tucumán (R. Argentina)

Capítulo 4. Prueba de Adaptabilidad

Redes de Computadores I

Este sistema de manera global presenta cuatro módulos: bearerbox de Kannel, kj-

PARA COMERCIANTES Y AUTÓNOMOS. INFORMACIÓN SOBRE TARJETAS DE CRÉDITO.

3.1 Introducción a Wireshark

Conceptos Generales. Introducción a la ingeniería de Software. Tomado de: Escuela de Sistemas Universidad Nacional de Colombia Sede Medellín

.NET y J2EE VALORACIÓN Y COMPARACIÓN DE LOS ELEMENTOS DE LAS DOS PLATAFORMAS. Definiciones...2 C# y Java...3 Similitudes...4 Ventajas...

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

IBM Systems and Technology Backup y recuperación confiables y eficientes para IBM i en los servidores IBM Power Systems

APLICACIONES MÓVILES NATIVAS

Detección de Presencia Serie para la Identificación de Módulos de Memoria

Palabras Clave: Vídeo en FPGA, Procesamiento en Tiempo Real RESUMEN

Conclusiones. Particionado Consciente de los Datos

Esta sección trata de los diferentes acabados superficiales así como de nuevos desarrollos destinados a optimizar el aporte de cola en la onduladora.

AUTORES: OBREGON CARLA ROMERO MARIA MARACAIBO FEBRERO 2012

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

CAPITULO 3: SISTEMAS ADICIONALES PARA EL CENTRO DE LLAMADAS DE EMERGENCIA

[ ] introducción. Sistema de información para el análisis de servicios prestados en redes Ad hoc. resumen. Aura Rosa Beltrán A. Gerardo Gutierrez S.

Diseño orientado al flujo de datos

SOMI XVIII Congreso de Instrumentación TECNOLOGIAS DE LA INFORMACION BSR18171

11/06/2011. Alumno: José Antonio García Andreu Tutor: Jairo Sarrias Guzman

La mayor parte de las empresas en el mundo utilizan sistemas de información,

Análisis de Requisitos integración FORMIGA-CLOUD / DIRAC (Prototipo II)

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

Copyright 2010 Eurohelp

PROCEDIMIENTO DE ENLACE TCPIP

Utilización de Tecnologías de la Información y las Comunicaciones (TICs) en las empresas industriales argentinas

ESQUEMAS DE SISTEMAS VOIP CON ALTA DISPONIBILIDAD Y ALTO RENDIMIENTO

Periféricos Interfaces y Buses

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

UNIVERSIDAD DE ORIENTE FACULTAD DE ICIENCIAS ECONOMICAS LAS REDES I. Licda. Consuelo Eleticia Sandoval

Revisión del Universo de empresas para la Estimación de los Datos Del Mercado Español de Investigación de Mercados y Opinión.

Por el rápido crecimiento de Internet la tecnología se ha tenido que adaptar para cubrir las

Arquitectura Cliente/Servidor

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO

Escuela Universitaria Politécnica Grado en Ingeniería Informática Fundamentos de Programación II ENUNCIADO DE PRÁCTICAS CONVOCATORIA DE SEPTIEMBRE

Proyectos Finales. Redes de Computadoras Proyecto 1. Sistema de almacenamiento virtual sobre una plataforma P2P utilizando JXTA.

35 Facultad de Ciencias Universidad de Los Andes Mérida-Venezuela. Potencial Eléctrico

Arquitectura de Redes

Arquitectura de Redes y Comunicaciones

QUÉ ES Y PARA QUÉ SIRVE UML? VERSIONES DEL LENGUAJE UNIFICADO DE MODELADO. TIPOS DE DIAGRAMAS. INGENIERÍA DEL SOFTWARE (DV00205D)

Arquitecturas GPU v. 2013

Control de Inventarios SisMod

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA INGENIERÍA EN INFORMÁTICA. ARQUITECTURA DE COMPUTADORES II 19 de junio de 2007

Transcripción:

Mecanismos de Comunicación Eficientes en Redes de Altas Prestaciones para Bibliotecas de Paso de Mensajes en Java Roberto R. Expósito, Guillermo L. Taboada, Juan Touriño y Ramón Doallo 1 Resumen Este trabajo presenta el diseño e implementación de mecanismos de comunicación eficientes en redes de altas prestaciones para bibliotecas de paso de mensajes en Java. El auge de las arquitecturas clúster y el aumento exponencial del número de núcleos en los procesadores actuales hacen que sea necesario el uso de middleware de comunicación eficiente para obtener la mayor escalabilidad posible en las aplicaciones paralelas y distribuidas, especialmente en presencia de redes de altas prestaciones. Entre estas redes de interconexión de clusters destacan InfiniBand, Myrinet y High Speed Ethernet (1/ Gigabit Ethernet). Las especiales características de Java para computación paralela, entre las que destacan un completo soporte multithread y de comunicaciones en red, han favorecido el desarrollo de bibliotecas Java para computación de altas prestaciones (HPC), entre las que destaca el paradigma de paso de mensajes en Java (MPJ). No obstante, las bibliotecas MPJ adolecen, al igual que las soluciones estándar en Java, de soporte directo y eficiente sobre redes de baja latencia. La evaluación experimental de los mecanismos de comunicación desarrollados en este trabajo ha mostrado aumentos significativos del rendimiento comparados con las soluciones previamente existentes en Java. Palabras clave Java, Paso de Mensajes, Clúster, Redes de Altas Prestaciones, InfiniBand, Myrinet, High Speed Ethernet, Remote Direct Memory Access (RDMA). I. Introducción EL lenguaje de programación Java es ampliamente utilizado en el ámbito académico así como en la industria por sus especiales características tales como seguridad, robustez, portabilidad, expresividad, sencillez, gestión automática de memoria y una mayor productividad derivada de su orientación a objetos, lo que le ha llevado a convertirse en una de las plataformas de desarrollo de aplicaciones más extendidas de la actualidad. No obstante, en ámbitos donde el rendimiento es crítico, como en computación de altas prestaciones (HPC), no es tan popular, aunque su rendimiento se ha ido incrementando significativamente al pasar de una ejecución interpretada a la compilación a código nativo en tiempo de ejecución realizada por compiladores JIT (Just-In-Time) y máquinas virtuales HotSpot. De esta forma, Java alcanza rendimientos similares a los lenguajes compilados a código nativo, convirtiéndose en una alternativa competitiva en HPC. Una de las arquitecturas paralelas más populares hoy en día en HPC es el clúster, un sistema de memo- 1 Grupo de Arquitectura de Computadores, Dpto. de Electrónica y Sistemas, Universidade da Coruña, e-mail: rreye,taboada,juan,doallo@udc.es. ria distribuida escalable y económico formado por componentes comerciales que presenta una buena ratio coste/rendimiento. Entre los modelos de programación de memoria distribuida, la interfaz de paso de mensajes MPI (Message Passing Interface) es la más popular y usada por la mayoría de las aplicaciones HPC, habiéndose convertido en el estándar de facto para desarrollar aplicaciones paralelas portables, tradicionalmente utilizando los lenguajes C y Fortran. El auge de las arquitecturas clúster y el aumento exponencial del número de núcleos en los procesadores actuales hacen que sea necesario el uso de middleware de comunicación eficiente para obtener la mayor escalabilidad posible en las aplicaciones paralelas y distribuidas, especialmente en presencia de redes de altas prestaciones (también denominadas redes de baja latencia y alto ancho de banda). Entre estas redes de interconexión de clusters destacan InfiniBand, Myrinet y la familia High Speed Ethernet (1/ Gigabit Ethernet). Por otro lado, las especiales características de Java para computación paralela, entre las que destacan un completo soporte multithread y de networking junto con su importante popularidad, han favorecido el desarrollo de numerosas bibliotecas para paso de mensajes MPJ (Message-Passing in Java). En este aspecto, la evaluación de las bibliotecas MPJ más importantes [1], analizando los distintos mecanismos de comunicaciones que implementan, ha constatado que no soportan de forma eficiente las redes de interconexión de clusters de baja latencia. Este artículo presenta el diseño e implementación de mecanismos de comunicación eficientes en redes de altas prestaciones para bibliotecas de paso de mensajes en Java. Estos han sido integrados en la biblioteca F-MPJ [] con el fin de analizar experimentalmente la eficiencia de los mecanismos desarrollados y así poder comparar su rendimiento respecto de otras implementaciones, utilizando para ello diversos clusters con distintas redes de baja latencia (InfiniBand, 1 Gigabit Ethernet, y Myrinet). II. Paso de Mensajes en Java El paradigma de paso de mensajes es el más utilizado en programación paralela, debido a su portabilidad, escalabilidad y relativamente buen rendimiento. En los lenguajes compilados a código nativo MPI es la interfaz estándar para bibliotecas de paso de mensajes. En cuanto a Java, existen numerosas bibliotecas MPJ [1], aunque en este caso no

existe una interfaz estándar, con lo que la mayoría han optado por implementar su propia API, similar a la de MPI. Actualmente, MPJ Express [3] y nuestra biblioteca F-MPJ [] son los proyectos MPJ más activos. El soporte para paso de mensajes sobre redes de altas prestaciones suele estar implementado en dispositivos de comunicaciones a bajo nivel que proporcionan operaciones de comunicación básicas. Ejemplos de APIs implementadas en lenguajes compilados son ADI (Abstract Device Interface) y BTL (Byte Transfer Layer), utilizadas en las implementaciones MPICH [] y OpenMPI [], respectivamente. En el caso de MPJ xdev es el API utilizada por MPJ Express, proporcionando operaciones básicas sobre las que implementar las comunicaciones MPJ. Sin embargo, xdev utiliza una capa de buffering [] adicional en la comunicación que limita de forma importante su rendimiento y escalabilidad, siendo este el principal cuello de botella de MPJ Express. La biblioteca F-MPJ solventa este problema presentando una nueva API, xxdev, mostrada en la Figura 1, que extiende xdev permitiendo la comunicación directa de cualquier objeto serializable en Java en lugar de estar restringida a bufers MPJ como en MPJ Express, además de presentar un diseño más modular y extensible. public cla ss Device { static public Device newinstance( String impl ); ProcessID [ ] i n i t ( String [ ] args ); ProcessID id ( ) ; void f i n i sh ( ) ; Request ise nd ( Object msg, PID dst, int tag, Request irecv ( Object msg, PID src, int tag, int cntxt, Status s ); void send ( Object msg, PID dst, int tag, Status recv ( Object msg,pid src, int tag, Request issend ( Object msg,pid dst, int tag, void ssend ( Object msg, PID src, int tag, Status iprobe (PID src, int tag, int cntxt ) ; Status probe (PID src, int tag, int cntxt ) ; Request peek ( ) ; } Fig. 1. API pública de la clase xxdev III. Mecanismos de Comunicación Eficientes en Redes de Altas Prestaciones Esta sección presenta el diseño e implementación de los mecanismos de comunicación para las redes de altas prestaciones soportadas eficientemente en F- MPJ. A. Myrinet/High Speed Ethernet Myrinet es una red de interconexión de clusters de altas prestaciones desarrollada por Myricom [7] que proporciona latencias reducidas, en torno a 3- µs y altos anchos de banda, Gbps en Myrinet y 1 Gbps en Myri-1G. Myrinet Express (MX) [] es la biblioteca de comunicación de bajo nivel y altas prestaciones que proporciona Myricom para su utilización, tratándonse de un API con una semántica orientada al paso de mensajes. La presencia de Myrinet en el Top [9] se ha visto notablemente reducida en los ultimos años, hasta el punto que Myricom ha diseñado sus últimos productos (Myri-1G) para ser compatibles a nivel físico con 1 Gigabit Ethernet, y que gracias al protocolo MXoE (MX over Ethernet) es totalmente compatible con Myrinet a nivel de API utilizando MX. Open-MX [1] es una implementación open-source del API MX para su utilización sobre redes High Speed Ethernet, fundamentalmente 1/ Gigabit Ethernet, que además proporciona compatibilidad con el protocolo MXoE. Esto nos permite desarrollar el dispositivo de comunicación siguiendo la especificación del API MX, y poder utilizarlo con una tarjeta de red Ethernet genérica, sin necesidad del hardware especializado de Myricom. Su compatibilidad a nivel de API permite su uso en redes Myrinet o en redes Ethernet utilizando los productos de Myricom. Como Open-MX está desarrollado en lenguaje C es necesario el uso de la interfaz nativa de Java, JNI (Java Native Interface), para su soporte en Java. A.1 Dispositivo en Java sobre MX: omxdev El código Java para el dispositivo de comunicaciones para Myrinet/High Speed Ethernet debe implementar la interfaz xxdev. Cada método de comunicación delega en el método nativo correspondiente de la biblioteca MX a través de JNI, encargándose de la obtención de referencias así como del manejo de los parámetros. Esto permite minimizar al máximo el código JNI, eliminando posibles problemas derivados de su uso. Es necesario el uso de la función de JNI denominada GetPrimitiveArrayCritical, la cual permite obtener un puntero directo a los datos a enviar evitando así copias intermedias que degraden el rendimiento. De esta forma, cuando se hace un envío de tipos de datos primitivos se evita la serialización, que quedaría reservada al envío de los restantes objetos Java. B. InfiniBand InfiniBand es una tecnología de interconexión entre nodos de computación en clusters y dispositivos de E/S que permite formar una red de área de sistema o SAN (System Area Network), que destaca en entornos HPC ya que es actualmente la red más popular en las primeras 1 posiciones del Top. La arquitectura definida por InfiniBand es independiente del sistema operativo y de la plataforma. Algunas características destacadas de InfiniBand son el acceso directo a memoria remota, conocido como RDMA (Remote Direct Memory Access), y también el soporte de las clásicas operaciones Send/Receive, así como operaciones atómicas, soporte en hardware de operaciones multicast y QoS (Quality of Service). Al contrario que en otras especificaciones, la arquitectura de InfiniBand no estableció una API

estándar. En su lugar, define la funcionalidad que la tarjeta de red debe proporcionar al sistema operativo en términos de la interfaz verbs. Esta interfaz especifica la funcionalidad de la capa de transporte, siendo su implementación más extendida y utilizada la proporcionada por la OpenFabrics Alliance [11], denominada InfiniBand Verbs API (IBV), un API de bajo nivel disponible sólo en C, lo cual fuerza de nuevo al uso de JNI para implementar un soporte directo y eficiente del API de IBV en Java. Al tratarse IBV de una capa inmediatamente por encima del hardware, proporciona operaciones de bajo nivel sobre la tarjeta de red. La semántica requerida por la API xxdev difiere mucho de la semántica ofrecida por IBV, al contrario de lo que sucedía con la biblioteca MX. Es por ello que se ha desarrollado una biblioteca intermedia en C similar a MX utilizando IBV, denominada IBVX, con una semántica orientada al paso de mensajes lo que permitirá una implementación más fácil desde Java, minimizando de esta forma el código JNI requerido. C. Biblioteca IBVX IBVX (IBV Express) es la biblioteca en C que hemos desarrollado para comunicaciones eficientes en paso de mensajes sobre IBV. El API que ofrece IBVX, presentada en la Figura, ofrece primitivas de comunicación punto a punto tanto bloqueantes como no bloqueantes, así como comunicaciones síncronas o asíncronas. Así, es posible implementar el API xxdev de forma más sencilla desde Java, que se limitará a una fina capa wrapper sobre IBVX. IBV Init (char pnames, int ports, int nprocs, int myrank ) ; IBV Finalize ( ) ; IBV Isend (void buf, int size, int dst, int tag, int cntxt, Request r ) ; IBV Issend (void buf, int size, int dst, int tag, int cntxt, Request r ) ; IBV Irecv (void buf, int size, int src, int tag, int cntxt, Request r ) ; IBV Send(void buf, int size, int dst, int tag, int cntxt ) ; IBV Ssend(void buf, int size, int dst, int tag, int cntxt ) ; IBV Recv(void buf, int size, int src, int tag, int cntxt, Status s ) ; IBV Wait( Request r, Status s ) ; IBV Test ( Request r, Status s ) ; IBV Iprobe ( int src, int tag, int cntxt, Status s ); IBV Probe ( int src, int tag, int cntxt, Status s ); Request IBV Peek ( ) ; Fig.. API de la biblioteca IBVX C.1 Protocolos de Comunicación en IBVX Usualmente las bibliotecas de paso de mensajes implementan internamente dos protocolos de comunicación (véase Figura 3): Eager: se trata de un protocolo de envío inmediato, de manera que el emisor hace el envío sin esperar a que el receptor haya invocado previamente su correspondiente recepción, asumiendo que tiene suficiente espacio para almacenar el mensaje, con lo cual no necesita una autorización explícita de envío. Rendezvous: se trata de un protocolo de envío acordado, ya que existe una negociación (handshaking) previa al envío en la que el receptor autoriza al emisor el envío del mensaje, usando para ello mensajes de control. Fig. 3. Protocolos de envío en paso de mensajes El ligero sobrecoste debido a la copia de los datos con el protocolo eager es asumible en el caso de mensajes de pequeño tamaño a fin de obtener latencias lo más reducidas posible. Dicho objetivo coincide con las propiedades de las operaciones Send/Receive de InfiniBand, utilizadas usualmente en mensajes de reducido tamaño. No obstante, el requisito en Infini- Band de que todos los bufers usados en las comunicaciones estén registrados, siendo el registro una operación costosa, supone una importante penalización en el rendimiento de este protocolo que es atajada mediante el uso de un pool de bufers prerregistrados por proceso para las operaciones de envío, además de un pool de bufers prerregistrados para las recepciones por cada proceso con el que se comunica, utilizados para la copia de los datos a enviar/recibir. El protocolo rendezvous es utilizado para el envío de mensajes largos, para los cuales es crítico evitar la copia de datos, lo que es posible mediante operaciones Remote Direct Memory Access (RDMA) para implementar un protocolo Zero-Copy donde se envíen directamente los datos del búfer origen al búfer destino, sin copias intermedias a los bufers del pool de envíos y recepciones. Como para el uso de las operaciones RDMA es necesario conocer tanto la dirección de memoria destino como la clave remota que nos permita el acceso a la misma, es necesario que haya un intercambio de estos parámetros previo al envío de los datos. Es por ello que se puede aprovechar el handshaking previo al envío del mensaje que contiene los datos que existe en el protocolo rendezvous y mediante la operación RDMA Write se escribe el mensaje directamente en la memoria del proceso destino. C. Dispositivo en Java sobre IBV: ibvdev El dispositivo Java que implementa la interfaz xxdev para el soporte de InfiniBand se implementa de forma análoga al dispositivo omxdev. En efecto, la biblioteca IBVX se ha diseñado de tal modo que los métodos de ibvdev deleguen directamente en sus correspondientes métodos nativos (IBVX).

TABLA I Descripción de los clusters utilizados en la evaluación del rendimiento Clúster Ubicación Nodos Procesador Memoria Red Plutón Univ. A Coruña 1 Intel Xeon E Quad-core GB InfiniBand DDR (1 Gbps) Plutón Univ. A Coruña Intel Xeon E Quad-core 1GB 1 Gigabit Ethernet DAS- VU Amsterdam 7 Intel Xeon E Quad-core GB InfiniBand QDR (3 Gbps) Marenostrum BSC-CNS IBM PowerPC 97MP Dual-core GB Myrinet ( Gbps) 7 7 3 3 1 1 Punto a Punto (IB DDR Plutón) 1 11 1 9 7 3 1 3 1 1 1 1 1 Punto a Punto (1GbE Plutón) Intel MPI MPJE (mxdev) MX 1 1 9 7 3 1 3 3 1 1 Punto a Punto (IB QDR DAS) 1 1 1 1 1 1 3 3 3 3 1 1 1 1 1 Punto a Punto (Myrinet Marenostrum) MPJE (mxdev) MX 1. 1. 1. 1. 1. 1.... Fig.. Rendimiento de las operaciones punto a punto de paso de mensajes en redes de altas prestaciones IV. Evaluación del Rendimiento El rendimiento de los mecanismos de comunicación desarrollados ha sido evaluado en cuatro escenarios con distintas redes de interconexión cuyas características resumidas se presentan en la Tabla I. Las bibliotecas MPJ evaluadas han sido F-MPJ v.1 y MPJ Express.3 en todos los sistemas, mientras que las bibliotecas MPI utilizadas son Intel MPI version [1] en Plutón y DAS-, y MPICH-MX [7] en el Marenostrum. Los benchmarks utilizados para la evaluación de su rendimiento en operaciones punto a punto y colectivas son los Intel MPI Benchmarks para MPI, y su versión equivalente para MPJ la cual hemos desarrollado debido a la inexistencia de benchmarks adecuados para la evaluación en bibliotecas MPJ. A. Comunicaciones Punto a Punto La Figura muestra los resultados del rendimiento de las comunicaciones punto a punto en los cuatro escenarios evaluados. Tanto en InfiniBand (QDR y DDR) como en 1 Gigabit Ethernet, los resultados obtenidos por F-MPJ son muy superiores a los obtenidos por MPJ Express, tanto en términos de latencia como en ancho de banda, obteniendo rendimientos similares a Intel MPI. En Myrinet, F-MPJ sigue obteniendo resultados muy similares a los de la biblioteca MPI, MPICH-MX, aunque en este caso el margen de mejora con respecto a MPJ Express es inferior debido al reducido ancho de banda que proporciona la red utilizada ( Gbps), limitándose al beneficio obtenido a unos. Gbps en términos de ancho de banda en mensajes largos, mientras que para mensajes cortos F-MPJ obtiene la mitad de latencia que MPJ Express. B. Comunicaciones Colectivas La Figura presenta los resultados de rendimiento para las primitivas Broadcast y Allreduce en el clúster Plutón con 1 procesos (IB DDR), sobre el clúster DAS- con 1 procesos (IB QDR) y sobre el MareNostrum con 1 procesos (Myrinet ). Los datos transferidos son arrays de bytes, evitando de este modo la serialización ya que puede penalizar de forma importante el rendimiento y el objetivo de esta evaluación es mostrar el rendimiento de las comunicaciones colectivas. La métrica utilizada es el ancho de banda agregado que tiene en cuenta la cantidad total de información transferida por cada primitiva. Los resultados han sido obtenidos utilizando el máximo número de núcleos disponibles por nodo, en el caso del clúster Plutón y el DAS-, y en el caso del MareNostrum. Los resultados de MPJ Express han sido obtenidos únicamente en el clúster Plutón debido a que su runtime presenta problemas con los sistemas de colas del DAS- y el MareNostrum. En las gráficas del clúster Plutón se observa claramente como la mejora obtenida por F-MPJ para las comunicaciones punto a punto, implementando en el

3 1 Rendimiento Broadcast 1 Procesos (Plutón) 3 1 Rendimiento Allreduce 1 Procesos (Plutón) 1 1 1 1 1 Rendimiento Broadcast 1 Procesos (DAS ) 1 11 1 9 7 3 1 Rendimiento Allreduce 1 Procesos (DAS ) 3 1 Rendimiento Broadcast 1 Procesos (MareNostrum) 3 1 Rendimiento Allreduce 1 Procesos (MareNostrum) Fig.. Rendimiento de las operaciones colectivas en Plutón, DAS- y MareNostrum dispositivo ibvdev el soporte eficiente de InfiniBand, aumenta significativamente el rendimiento de las comunicaciones colectivas en relación a MPJ Express. No obstante, a pesar de que el rendimiento de las operaciones punto a punto de F-MPJ es muy similar al de Intel MPI, el rendimiento de las colectivas de MPI supera significativamente (en promedio dobla) el rendimiento de las colectivas de F-MPJ, a pesar de que estas últimas implementan algoritmos altamente escalables [13]. La principal causa de esta reducción de rendimiento se halla en la mayor variabilidad de los tiempos (jitter) en Java, cuyo impacto se multiplica en las operaciones colectivas implementadas en varios pasos, como por ejemplo en algoritmos basados en árbol. C. NAS Parallel Benchmarks Los benchmarks NPB (NAS -NASA Advanced Supercomputing- Parallel Benchmarks) son un conjunto de kernels computacionales y aplicaciones, que representan las partes con mayor carga computacional de simulaciones de dinámica de fluidos. Estos códigos fueron utilizados por la NASA para la evaluación del rendimiento en el ámbito de sus necesidades de supercomputación. En el ámbito Java, se ha desarrollado una implementación para paso de mensajes en Java de los NPB denominada NPB- MPJ [1]. Las Figura muestra los resultados obtenidos por dos kernels representativos de los NPB, CG (Conjugate Gradient) y FT (Fourier Transform), para la Clase C en términos de (Millones de Operaciones Por Segundo) ejecutados sobre los clusters Plutón, DAS- y el MareNostrum. Las principales conclusiones que se pueden extraer de estos resultados son que F-MPJ mejora significativamente el rendimiento de MPJ Express, llegando a obtener en Plutón en torno a un % de mejora para CG y un % de beneficio para FT, gracias a la mayor escalabilidad de F-MPJ. Comparando el rendimiento de los NPB-MPJ con sus equivalentes en MPI podemos apreciar que los resultados de CG son competitivos usando hasta núcleos gracias a obtener resultados muy similares en un núcleo, sufriendo una menor escalabilidad a partir de ese punto. En cambio, para FT el rendimiento de Java es muy inferior al del código nativo (Fortran) ya que en un núcleo NPB-MPJ FT obtiene 7 frente a los 13 del código nativo. Este factor condiciona el rendimiento de este benchmark ya que aunque F- MPJ presenta una escalabilidad similar a la de Intel MPI los resultados del código Java están en torno a la mitad del rendimiento del FT MPI. V. Conclusiones El rendimiento y la escalabilidad de las comunicaciones son aspectos de crucial importancia para las arquitecturas clúster multi-core, especialmente en presencia de redes de baja latencia. Este artículo presenta el diseño de los mecanismos de comunicación para el soporte eficiente de redes de baja latencia en Java, permitiendo mejorar el rendimiento de aplicaciones Java en computación de altas prestaciones, un ámbito en el que todavía es una opción emergente.

1 1 1 1 1 CG Clase C (Plutón) 1 1 3 1 3 3 1 1 FT Clase C (Plutón) 1 1 3 1 7 3 1 CG Clase C (DAS ) 1 1 FT Clase C (DAS ) 1 3 1 1 1 3 1 1 CG Clase C (MareNostrum) 1 1 FT Clase C (MareNostrum) 1 1 1 3 1 1 1 3 1 1 Fig.. Rendimiento de los NPB para los kernels CG y FT en Plutón, DAS- y MareNostrum Los dispositivos de comunicación a bajo nivel para paso de mensajes implementados son conformes al API xxdev, lo que ha permitido su integración de forma transparente en la biblioteca F-MPJ. La evaluación experimental de su rendimiento, tanto de las comunicationes punto a punto como de las colectivas, así como su impacto en aplicaciones a nivel de kernel/aplicación ha mostrado aumentos significativos del rendimiento. En efecto, se han obtenido mejoras de hasta dos órdenes de magnitud en comparación con soluciones previamente existentes en paso de mensajes en Java, llegándose a obtener resultados competitivos en comparación con MPI. Esta evaluación se llevó a cabo en escenarios representativos, evaluándose el rendimiento de F-MPJ en clusters con las redes de interconexión InfiniBand DDR y QDR, 1 Gigabit Ethernet y Myrinet. Agradecimientos Este trabajo ha sido financiado por el Ministerio de Ciencia e Innovación de España en el marco del proyecto TIN1-173 y por el Programa de Consolidación y Estructuración de Unidades de Investigación Competitivas de la Consellería de Educación de la Xunta de Galicia. Agradecemos al Barcelona Supercomputing Center (BSC-CNS) el acceso al MareNostrum. We also gratefully thank Advanced School for Computing and Imaging (ASCI) of the Vrije University Amsterdam for providing access to the DAS- cluster. Referencias [1] G.L. Taboada, J. Touriño, and R. Doallo, Java for High Performance Computing: Assessment of Current Research and Practice, in Proc. 7th Intl. Conf. on the Principles and Practice of Programming in Java (PPPJ 9), Calgary, Alberta, Canada, 9, pp. 3 39. [] G.L. Taboada, J. Touriño, and R. Doallo, F-MPJ: Scalable Java Message-passing Communications on Parallel Systems, Journal of Supercomputing, 11 (In press, http://dx.doi.org/1.17/s117-9-7-). [3] A. Shafi, B. Carpenter, and M. Baker, Nested Parallelism for Multi-core HPC Systems using Java, Journal of Parallel and Distributed Computing, vol. 9, no., pp. 3, 9. [] MPICH, http://www.mcs.anl.gov/research/ projects/mpich. [] Open Source High Performance MPI Library, http: //www.open-mpi.org. [] M. Baker, B. Carpenter, and A. Shafi, A Buffering Layer to Support Derived Types and Proprietary Networks for Java HPC, Scalable Computing Practice and Experience, vol., no., pp. 33 3, 7. [7] Myricom Website, http://www.myri.com. [] MX User s Guide, http://www.myri.com/scs/mx/doc/ mx.pdf. [9] Top, http://www.top.org. [1] B. Goglin, High-Performance Message Passing over Generic Ethernet Hardware with Open-MX, Parallel Computing, vol. 37, no., pp. 1, 11. [11] OpenFabrics Alliance Website, http://www. openfabrics.org. [1] Intel R MPI Library, http://www.intel.com/go/mpi. [13] G.L. Taboada, S. Ramos, J. Touriño, and R. Doallo, Design of Efficient Java Message-passing Collectives on Multi-core Clusters, Journal of Supercomputing, vol., no., pp. 1 1, 11. [1] D.A. Mallón, G.L. Taboada, J. Touriño, and R. Doallo, NPB-MPJ: NAS Parallel Benchmarks Implementation for Message-Passing in Java, in Proc. 17th Euromicro Intl. Conf. on Parallel, Distributed, and Network-Based Processing (PDP 9), Weimar, Germany, 9, pp. 11 19.