Actualizado el 24 de Octubre del 2020 (Publicado el 2 de Noviembre del 2018)
901 visualizaciones desde el 2 de Noviembre del 2018
1,9 MB
225 paginas
Creado hace 15a (02/05/2009)
Design of Efficient Java
Communications for High
Performance Computing
Guillermo L ´opez Taboada
Department of Electronics and Systems
University of A Coru˜na, Spain
Department of Electronics and Systems
University of A Coru˜na, Spain
PhD Thesis
Design of Efficient Java
Communications for High
Performance Computing
Guillermo L´opez Taboada
May 2009
PhD Advisors:
Juan Touri˜no Dom´ınguez
Ram´on Doallo Biempica
Dr. Juan Touri˜no Dom´ınguez
Catedr´atico de Universidad
Dpto. de Electr´onica y Sistemas
Universidade da Coru˜na
Dr. Ram´on Doallo Biempica
Catedr´atico de Universidad
Dpto. de Electr´onica y Sistemas
Universidade da Coru˜na
CERTIFICAN
Que la memoria titulada “Design of Efficient Java Communications for High Perfor-
mance Computing” ha sido realizada por D. Guillermo L´opez Taboada bajo nuestra
direcci´on en el Departamento de Electr´onica y Sistemas de la Universidad de A
Coru˜na y concluye la Tesis Doctoral que presenta para optar al grado de Doctor en
Ingenier´ıa Inform´atica con la Menci´on de Doctor Europeo.
En A Coru˜na, a 26 de Febrero de 2009
Fdo.: Juan Touri˜no Dom´ınguez
Director de la Tesis Doctoral
Fdo.: Ram´on Doallo Biempica
Director de la Tesis Doctoral
Vo Bo: Luis Castedo Ribas
Director del Dpto. de Electr´onica y Sistemas
Resumen de la Tesis
Introducci´on
El lenguaje de programaci´on Java se ha convertido r´apidamente en uno de los
m´as populares tras su aparici´on a mediados de los a˜nos noventa. Entre las causas
de su pronta aceptaci´on en numerosos ´ambitos de aplicaci´on est´an el tratarse de un
lenguaje orientado a objetos, ser independiente de la plataforma, su portabilidad, ser
inherentemente seguro, contar con una API muy extensa, y finalmente figurar como
el principal lenguaje de programaci´on por n´umero de desarrolladores y por formaci´on
ofertada, tanto en el mundo acad´emico como en el profesional. Su penetraci´on en
el mundo de la web e Internet es especialmente importante, tanto en aplicaciones
cliente-servidor como en computaci´on distribuida. No obstante, la presencia de Java
no est´a restringida a estos ´ambitos, siendo una opci´on consolidada en muchos otros
(por ejemplo, en aplicaciones multimedia y de escritorio) e incluso una alternativa
emergente en la actualidad para su aplicaci´on en computaci´on de altas prestaciones
(High Performance Computing o HPC).
El creciente inter´es en Java para computaci´on paralela est´a motivado por las
especiales caracter´ısticas del lenguaje, de enorme utilidad en este ´ambito de aplica-
ci´on. As´ı, su inherente soporte para aplicaciones en red, el tratarse de un lenguaje
multithread (lo cual permite aprovechar de forma directa los sistemas multi-n´ucleo),
y el ser portable y multiplataforma, entre otras ventajas de Java, est´an contribuyen-
do a su adopci´on en el campo de la computaci´on de altas prestaciones. El principal
inconveniente de Java en este ´ambito ha sido, hasta ahora, su rendimiento inferior al
de los lenguajes que son compilados a c´odigo nativo de cada plataforma, los cuales
est´an m´as establecidos en este campo, especialmente Fortran y C. No obstante, en
v
vi
la actualidad el rendimiento ya no constituye un obst´aculo insalvable. La tradicio-
nal diferencia de rendimiento entre Java y los lenguajes compilados espec´ıficamente
para cada plataforma se ha ido estrechando en los ´ultimos a˜nos gracias al Just-In-
Time (JIT), la t´ecnica de compilaci´on de la M´aquina Virtual de Java (JVM) que
proporciona al bytecode de Java rendimientos comparables al del c´odigo nativo.
Sin embargo, aunque Java obtiene rendimientos similares en c´odigos secuencia-
les a los lenguajes compilados, en aplicaciones paralelas su escalabilidad depende
en gran medida de la intensidad y eficiencia de las comunicaciones y/o accesos a
memoria compartida. De hecho, la inexistencia de mecanismos de comunicaci´on efi-
cientes en Java tiene como consecuencia que sus aplicaciones paralelas presenten
peor escalabilidad que las que utilizan c´odigo nativo, ralentizando de este modo el
desarrollo de soluciones Java en computaci´on de altas prestaciones.
En cuanto a la arquitectura y configuraci´on de los sistemas utilizados en HPC
cabe destacar que actualmente se est´a incrementando significativamente el n´ume-
ro de n´ucleos de procesador instalados a fin de satisfacer la creciente demanda de
potencia de c´alculo. Adem´as, las arquitecturas cl´uster siguen siendo las m´as de-
mandadas, debido a su excelente ratio coste/rendimiento. Finalmente, la necesidad
de que las aplicaciones escalen con un mayor n´umero de n´ucleos favorece la uti-
lizaci´on de redes de baja latencia (por ejemplo InfiniBand, Myrinet o SCI). Este
hecho, la popularizaci´on de los clusters con redes de baja latencia y con un n´umero
cada vez mayor de n´ucleos por nodo, subraya la importancia del paralelismo y de
la programaci´on multithread e h´ıbrida utilizando ambos paradigmas de memoria
compartida/distribuida.
As´ı, el actual escenario demanda lenguajes de programaci´on que permitan un
desarrollo m´as productivo y que proporcionen un completo soporte multithread y
de servicios de red. Adem´as, la agregaci´on de nodos multi-n´ucleo en clusters por
medio de redes de altas prestaciones debe ir pareja del uso de un middleware de
comunicaci´on que permita a las aplicaciones aprovechar el rendimiento de dichas
redes. El lenguaje de programaci´on Java puede satisfacer estas demandas y constituir
una alternativa atractiva para la programaci´on paralela en computaci´on de altas
prestaciones, siempre y cuando sea capaz de dotarse de mecanismos de comunicaci´on
eficientes en las actuales arquitecturas de computaci´on.
vii
La presente Tesis Doctoral, “Design of Efficient Java Communications for High
Performance Computing”, parte de la hip´otesis inicial de que es posible desarro-
llar aplicaciones Java en computaci´on de altas prestaciones, un ´ambito en el que el
rendimiento es crucial, siempre que est´e disponible un middleware de comunicaci´on
eficiente. Entre los objetivos de esta Tesis se hayan la evaluaci´on del rendimiento
de Java en el marco de la computaci´on de altas prestaciones y proporcionar nue-
vas herramientas para mejorar este proceso de evaluaci´on y posterior an´alisis de los
resultados. Adem´as, otra finalidad de este trabajo es el dise˜no y desarrollo de un
middleware de comunicaci´on optimizado para Java, basado en sockets, as´ı como do-
tar a Java de bibliotecas de comunicaci´on que proporcionen mayores rendimientos
que alternativas previamente existentes. Entre los desarrollos implementados des-
tacan un middleware de comunicaci´on no bloqueante a bajo nivel, una biblioteca
de paso de mensajes en Java, y una optimizaci´on del protocolo de la Invocaci´on de
M´etodos Remotos (RMI) para Java. Finalmente, la Tesis proporciona una gu´ıa de
recomendaciones y buenas pr´acticas en optimizaci´on del rendimiento de aplicaciones
Java en computaci´on de altas prestaciones.
Metodolog´ıa de Trabajo
La metodolog´ıa de trabajo seguida en el desarrollo de la presente Tesis Doctoral,
ha consistido en:
Definir la lista de tareas a realizar en el tema de la Tesis, teniendo en cuenta
los trabajos previos y los recursos disponibles.
Determinar su secuencia u orden de ejecuci´on, ateni´endose a las restricciones
que pudiesen existir y al orden m´as favorable.
Establecer su duraci´on y la oportunidad de su desarrollo en un momento de-
terminado.
Organizar las acciones o tareas por bloques de cierta entidad que definan
etapas.
viii
Definir, para cada etapa, las metas a alcanzar (u objetivos concretos a lograr
en tiempo definidos), sabiendo que en cada etapa puede haber una o varias
metas.
Fijar para cada meta, dentro de cada etapa, la metodolog´ıa de trabajo a
emplear para lograrla (revisi´on bibliogr´afica, evaluaci´on de proyectos previos,
an´alisis de la eficiencia de los desarrollos existentes en el ´ambito de la Tesis,
an´alisis de aportaciones necesarias en el ´ambito de trabajo, dise˜no e imple-
mentaci´on de soluciones m´as eficientes en el ´area de investigaci´on, evaluaci´on
de las aportaciones realizadas y, en caso de ser de positivas y de entidad, difu-
si´on posterior a trav´es de congresos y revistas del ´ambito de conocimiento; y,
finalmente, recopilaci´on de las principales conclusiones en la presente memoria
de Tesis).
De este modo, la lista de tareas (Tn), agrupadas en bloques (Bn), desarrolladas
en la presente Tesis han sido:
B1 Estado actual de las comunicaciones en Java para computaci´on de altas pres-
taciones.
T1.1 Selecci´on del paradigma m´as apropiado para la computaci´on de altas
prestaciones en Java. Se seleccion´o el paso de mensajes debido a la mayor
escalabilidad de los sistemas de memoria distribuida, en los cuales cons-
tituye el principal paradigma de programaci´on. Adem´as, las bibliotecas
de paso de mensajes proporcionan, en general, rendimientos aceptables y
Java cuenta con numerosos proyectos de bibliotecas de paso de mensajes.
T1.2 Revisi´on de la literatura y proyectos desarrollados en Java para paso de
mensajes.
T1.3 Evaluaci´on del rendimiento de las bibliotecas existentes de paso de men-
sajes en Java.
T1.4 Obtenci´on de modelos anal´ıticos de rendimiento de comunicaciones colec-
tivas en paso de mensajes en Java. Estos modelos se obtuvieron en tres
clusters, con redes de interconexi´on Fast Ethernet y las redes de baja
latencia SCI y Myrinet.
ix
T1.5 Evaluaci´on y modelado anal´ıtico de comunicaciones MPI utilizando las
tres redes de interconexi´on mencionadas en el punto anterior con finalidad
comparativa.
T1.6 Identificaci´on de los principales problemas de rendimiento detectados: po-
bre rendimiento de las bibliotecas de comunicaciones de Java en clusters,
especialmente si se utiliza RMI, bibliotecas de paso de mensajes en Java
poco desarrolladas y con operaciones colectivas poco escalables.
B2 An´alisis y desarrollo de un middleware de comunicaciones m´as eficiente en
Java.
T2.1 Determinaci´on de la apr
Comentarios de: Design of Efficient Java Communications for High Performance (0)
No hay comentarios