High Performance Java for Multi-Core Systems

High Performance Java for Multi-Core Systems

High Performance Java for Multi-core Systems Sabela Ramos Garea Department of Electronics and Systems University of A Coru~na,Spain Department of Electronics and Systems University of A Coru~na,Spain PhD Thesis High Performance Java for Multi-core Systems Sabela Ramos Garea June 2013 PhD Advisors: Guillermo L´opez Taboada Juan Touri~noDom´ınguez Dr. Guillermo L´opez Taboada Dr. Juan Touri~noDom´ınguez Profesor Contratado Doutor Catedr´aticode Universidade Dpto. de Electr´onicae Sistemas Dpto. de Electr´onicae Sistemas Universidade da Coru~na Universidade da Coru~na CERTIFICAN Que a memoria titulada \High Performance Java for Multi-core Systems" foi rea- lizada por Dna. Sabela Ramos Garea baixo a nosa direcci´onno Departamento de Electr´onicae Sistemas da Universidade da Coru~nae concl´uea Tese de Doutoramento que presenta para a obtenci´ondo t´ıtulode Doutora pola Universidade da Coru~na coa Menci´onde Doutor Internacional. Na Coru~na,o 25 de Xu~node 2013 Asdo.: Guillermo L´opez Taboada Asdo.: Juan Touri~noDom´ınguez Director da Tese de Doutoramento Director da Tese de Doutoramento Asdo.: Sabela Ramos Garea Autora da Tese de Doutoramento Resumo da Tese de Doutoramento Introducci´on O interese que a comunidade da computaci´onde altas prestaci´ons(High Perfor- mance Computing, HPC) v´endemostrando na linguaxe Java, aumentou considera- blemente nos ´ultimosanos grazas ´amellora experimentada en canto a rendemento e ´ascaracter´ısticasque fan de Java unha linguaxe altamente productiva. Entre elas, cabe destacar a portabilidade e independenza da plataforma, a simplicidade, a ro- bustez, a seguridade, a orientaci´ona obxectos e contar cunha grande comunidade de desarrolladores, tanto no mundo acad´emicocoma no empresarial. Ademais da mellora de rendemento, hai d´uascaracter´ısticascruciais que propiciaron a progre- siva adopci´onde Java na computaci´onde altas prestaci´ons:o soporte para redes de interconexi´one a incorporaci´onde multithreading no n´ucleoda linguaxe. Estas d´uascalidades fan de Java unha linguaxe id´oneapara a programaci´onen contornos paralelos. Dentro dos contornos paralelos actuais, os sistemas de memoria compartida vol- ven a cobrar forza nun escenario que, ata hai pouco, estaba dominado por clusters de sistemas monoprocesador, que permit´ıanconstru´ırcontornos de computaci´onde altas prestaci´onsreducindo os costes. Non obstante, o incremento de rendemento dos procesadores empezou a acadar l´ımitesf´ısicos,o que levou ´aaparici´onde problemas de disipaci´onde calor e de alta ineficiencia enerx´etica.Para superar estes obst´acu- los, os fabricantes de hardware comezaron a centrarse na mellora do rendemento dos procesadores mediante o incremento do n´umerode n´ucleospresentes en cada un deles, o que se co~nece como procesadores multi-core ou multi-n´ucleo.De feito, na actualidade, procesadores de catro ou m´aisn´ucleosson com´unsen ordenadores de v vi uso persoal. O incremento progresivo no n´umerode n´ucleosest´aconducindo tam´en´axerali- zaci´onde procesadores many-core para a computaci´onde ´ambito xeral. E neste eido volve a aparecer o problema do consumo enerx´etico,xa que ter un grande n´umero de n´ucleospor procesador en situaci´onsnas que s´ose precisa unha pequena parte, provoca unha grande ineficiencia enerx´etica.Para solventar este problema, aparecen os aceleradores de uso espec´ıfico,como as tarxetas gr´aficas(Graphics Processing Unit, GPU), arquitecturas many-core que s´ose utilizan para tareas espec´ıficasde procesamento de gr´aficosmentres outro procesador (host) ´eo que se encarga da com- putaci´onxeral. As caracter´ısticasdestes aceleradores e as s´uaselevadas capacidades de c´omputofixeron que fosen adoptadas para a aceleraci´onde c´odigosvectoriais non necesariamente relacionados coa computaci´ongr´afica.Sen embargo, as dificultades de programaci´ondestes aceleradores favoreceron a aparici´onde aceleradores de ar- quitecturas x86 que soportan linguaxes e paradigmas tradicionais de programaci´on, coma o coprocesador Xeon Phi comercializado por Intel. O ´exitodas arquitecturas multi- e many-core indica a necesidade de ferramentas e librer´ıasde programaci´onque exploten o rendemento en memoria compartida, onde Java, co soporte para multithreading, presenta unha grande vantaxe. O principal problema ´eque a API de manexo de threads ´ecomplicada, sendo o usuario o que ten que lidiar coa creaci´on/destrucci´onde threads e, o que ´em´aisimportante, coa posibilidade de aparici´onde race conditions e inconsistencias. Para solventar isto, Java incl´ueunha librer´ıade concorrencia na que se traballa con pools de threads e cun paradigma de programaci´onorientado ´adescomposici´onda carga de traballo en tarefas (que pode ser recursiva utilizando a funcionalidade de fork/join). Este paradigma obliga a que os algoritmos paralelos non orientados a tarefas te~nanque ser reescritos ou utilizar estas ferramentas de maneira non eficiente. Esta Tese presenta unha an´alisedetallada do estado da arte en canto ´asituaci´on de Java para a programaci´onde sistemas de memoria compartida, centr´andoseen soluci´onsaxeitadas para a computaci´onde altas prestaci´ons.Os principais obxec- tivos deste traballo son a an´alisedo estado do soporte Java ´acomputaci´onde altas prestaci´onsen memoria compartida e o desenvolvemento de middleware para mel- lorar tanto o rendemento como a productividade. En consecuencia, levouse a cabo un estudo do soporte software dispo~niblepara a programaci´onmulti-n´ucleoen Java vii e realizouse o dese~no,implementaci´one avaliaci´ondun dispositivo de comunicaci´ons de paso de mensaxes en Java optimizado para memoria compartida. Este dispositivo proporciona unha API de alto nivel que elimina a necesidade de manexar threads ou a descomposici´onen tarefas. Esta API segue a especificaci´onJava de paso de mensaxes (Message Passing in Java, MPJ) baseada no est´andarMPI, amplamente utilizado en computaci´onde altas prestaci´ons.Tam´ense incl´ueunha optimizaci´on de patr´onsde comunicaci´onsentre procesos ou threads (operaci´ons colectivas), tan- to bloqueantes coma non bloqueantes, para contornos baseados en sistemas multi- n´ucleo,al´endunha an´aliseda adecuaci´one potencial das colectivas non bloqueantes en contornos de memoria compartida. Por outra banda, f´ıxoseun estudo e avaliaci´on de soluci´onsdispo~niblespara a explotaci´onde sistemas many-core en aplicaci´onsJa- va. A principal conclusi´ondeste estudo ´eque o uso de Java en contornos many-core ´eproductivo e pode proporcionar resultados de alto rendemento. Metodolox´ıade Traballo A metodolox´ıade investigaci´on seguida na presente Tese de Doutoramento con- sistiu en: Definir a lista de obxectivos identificando as tarefas necesarias para acadalos, tendo en conta os traballos previos e os recursos dispo~nibles. Determinar a secuencia de execuci´ondas tarefas at´endose´asrestricci´onsque puidesen existir e buscando a orde m´aisaxeitada. Establecer a duraci´ondas tarefas e a oportunidade de desenvolvemento nun momento determinado. Organizar os obxectivos e tarefas en bloques de certa entidade que definan etapas. Definir, para cada etapa, os fitos, ou metas a acadar en tempo definido, tendo en conta que cada etapa pode constar dunha ou varias metas. Os obxectivos e tarefas foron definidos de maneira iterativa para poder aproveitar o co~necemento adquirido en etapas previas. viii A continuaci´on,enum´erasea lista de obxectivos (O), agrupados en bloques (B), detallando as tarefas (T ) que foron desenvolvidas na Tese para acadar cada un dos obxectivos. B 1. An´alisedas capacidades da linguaxe Java para a programaci´onde altas prestaci´ons en memoria compartida. O 1.1. An´aliseda programaci´onen Java para memoria compartida. T 1.1.1. Estudo da usabilidade e rendemento de Java para programaci´onde altas prestaci´ons. T 1.1.2. An´alisedas carater´ısticasinternas de Java para programaci´onpar- alela en memoria compartida. T 1.1.3. An´alisedoutros modelos de programaci´onparalela utilizados en Java actualmente. T 1.1.4. Avaliaci´ondas necesidades de optimizaci´ondo soporte Java para ar- quitecturas de memoria compartida. O 1.2. An´alisedo estado actual de dispo~nibilidadedo soporte en Java para pro- gramaci´onheterox´enea. T 1.2.1. B´usquedabibliogr´aficade soluci´onse proxectos existentes que den soporte ´aprogramaci´onheterox´eneaen Java. T 1.2.2. An´alisedo soporte dispo~niblee identificaci´onde carencias. B 2. Estudo das principais arquitecturas de memoria compartida dispo~nibles. O 2.1. Estudo e avaliaci´onde arquitecturas de memoria compartida con soporte para a execuci´onde instrucci´onsx86. T 2.1.1. An´alisedetallada de arquitecturas multi-core dispo~nibles. T 2.1.2. An´alisedetallada de arquitecturas many-core x86 dispo~nibles. O 2.2. Estudo e avaliaci´ondoutras arquitecturas de memoria compartida. T 2.2.1. An´alisedetallada de unidades de procesamento gr´afico(Graphics Processing Units, GPU) para programaci´onde prop´ositoxeral. B 3. An´alise,dese~noe implementaci´ondunha soluci´onde paso de mensaxes en Java para memoria compartida. ix O 3.1. Avaliaci´ondo estado da arte do paso de mensaxes en Java para memoria compartida. T 3.1.1. An´alisede proxectos de paso de mensaxes noutras linguaxes con so- porte espec´ıficopara memoria compartida. T 3.1.2. An´alisedo soporte para paso de mensaxes en Java. O 3.2. Dese~noe implementaci´ondunha soluci´onde paso de mensaxes en Java para memoria compartida. T 3.2.1. Dese~noda soluci´ontendo en conta as caracter´ısticasespec´ıficasde Java e o seu soporte para programaci´onparalela en memoria com- partida. T 3.2.2. Implementaci´ondo dese~node paso de mensaxes proposto. T 3.2.3. Optimizaci´onda soluci´onimplementada facendo especial fincap´enos puntos de sincronizaci´onentre threads. O 3.3. Avaliaci´onda soluci´onproposta. T 3.3.1. Dese~nodo conxunto de probas a realizar e selecci´ondas librer´ıas m´aisrelevantes entre as atopadas no punto O 3.1 para comparar coa soluci´onproposta. T 3.3.2. An´alisee selecci´ondos contornos de probas e do hardware dispo~nible. T 3.3.3.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    185 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us