
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.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages185 Page
-
File Size-