4 research outputs found
Developing adaptive multi-device applications with the Heterogeneous Programming Library
[Abstract] The usage of heterogeneous devices presents two main problems. One is their complex programming, a problem that grows when multiple devices are used. The second issue is that even if the codes for these devices can be portable on top of OpenCL, they lack performance portability, effectively requiring specialized implementations for each device to get good performance. In this paper we extend the Heterogeneous Programming Library (HPL), which improves the usability of heterogeneous systems on top of OpenCL, to better handle both issues. First, we provide HPL with mechanisms to support the implementation of any multi-device application that requires arbitrary patterns of communication between several devices and a host memory. In a second stage HPL is improved with an adaptive scheme to optimize communications between devices depending on the execution environment. An evaluation using benchmarks with very different nature shows that HPL reduces the SLOCs and programming effort of OpenCL applications by 27 and 43 %, respectively, while improving the performance of applications that exchange data between devices by 28 % on average.Xunta de Galicia; GRC2013/055Ministerio de EconomÃa y Competitividad; TIN2013-42148-PConsejo de Investigación CientÃfica y Tecnológica de TurquÃa (TUBITAK); 112E191European Cooperation in Science and Technology (COST); IC130
Improving the programmability of heterogeneous systems by means of libraries
Programa Oficial de Doutoramento en Investigación en TecnoloxÃas da Información. 524V01[Resumo]
O emprego de dispositivos heteroxéneos coma co-procesadores en entornos de
computación de altas prestacións (HPC) medrou ininterrompidamente nos últimos
anos debido ás súas excelentes propiedades en termos de rendemento e consumo de
enerx:Ãa. A ma.ior dispoñibilidade de sistemas HPC hÃbridos conlevou de forma natural
a necesidade de desenrolar ferra.mentas de programación adecuadas para eles,
sendo CUDA e OpenCL as máis a.mplamente empregadas na actualidade. Desafortunadamente,
estas ferramentas son relativamente de baixo nivel, o cal emparellado co
ma.ior número de detalles que deben de ser controlados cando se programan aceleradoras,
fa.i da programación destes sistemas mediante elas, moito roáis complexa que a.
programación tradicional de CPUs. Isto levou á. proposta de alternativas de roáis alto
nivel para facilitar a programación de dispositivos heteroxéneos. Esta tesis contribúe
neste campo presentando dúas librerÃe.<i que mellora.n ampla.mente a programabilidade
de sistemas heteroxéneos en C++, permitindo aos usuarios centrarse no que hai
que facer en vez de nas tarefas de baixo nivel. As nosas propostas, a librerÃa. Heterogeneous
Progromming Libmry (HPL) e a. librerÃa Heterogene.ous Hiemrchically Tiled
Arrays (H2TA), están deseñadas para nodos con unha ou má.is aceleradoras, e para
clusters heteroxéneos, respectivamente. Ambas librerÃas, demostraron ser capaces de
incrementar a. productividade dos usuarios mellora.ndo a programabilidade dos sem;
códigos, e ó mesmo tempo, lograr un rendemento semella.nte ó de solucións de roáis
baixo nivel.[Abstract]
The usage of heterogeneous devices as co-processors in high performance computing
(HPC) environments has steadily grown during the last years due to their
excellent properties in terms of perfonnance and energy consumption. The larger
a.vailability of hybrid HPC systems naturally led to the need to develop suitable
programming tools for them, being the most widely tL'ied nowadays CUDA and
OpenCL. Unfortlmatciy, these tools are relativcly low leve), which coupled with the
large DUlllber of deta.ils that must be monaged when programming accelerators, makes
the programm.ing of these systems using them much more complex thon that
of trad.itional CPUs. This has led to the proposal of higher leve) alternatives that
facilitate the progranuning of heterogeneous devices. This thesis contri bu tes to this
field presenting two libraries that largely improve the programma.bility of heterogeneous
systeins in C++, helping users to focus on what todo rather thtlJl onlow leve)
tasks. These two libraries, the Heterogeneous Programming Library (HPL) and the
Heterogeneous Hierarch.ically Tiled Arrays (H2TA), are well suited to nodes with
one or more accelerators, a.nd to heterogeneous clusters, respectively. Both libraries
have proveo to be able to incresse the productivity of the users improving the progro.
mmability of their codes, and at the s8llle time, achieving performance similar
to that of lower leve) solutions.[Resumen]
El empleo de dispositivos heterogéneos como co-procesadores en entornos de
computación de altas prestaciones (HPC) ha. crecido ininterrumpidamente durante
los últimos años debido a. sus excelentes propiedades en términos de rendimiento y
consumo de energÃa. La mayor disponibilidad de sistemas HPC hÃbridos conllevó de
forma natural la necesidad de desarrollar herramientas de programación adecuadas
para. ellos, siendo CUDA y OpenCL las más ampliamente utilizadas en la actualidad.
Desafortunadamente, estas herramientas son relativamente de bajo nivel, lo cual
emparejado con el mayor número de detalles que han de ser controlados cuando se
programan aceleradoras, hacen de la programación de estos sistemas mediante ell8S
mucho más compleja que la programación tradicional de CPUs. Esto ha llevado a la
propuesta de alternativ8S de más alto nivel para facilitar la programación de dispositivos
heterogéneos. Esta tesis contribuye a este campo presentando dos librerÃas que
mejoran ampliamente la programabilidad de sistemas heterogéneos en C++, permitiendo
a los usuarios centrarse en lo que hay que hacer en vez de en las tareas de bajo
nivel. Nuestras propuestas, la librerÃa Heterogeneous Progromming Librory (HPL) y
la librerÃa Heterogeneous HierorchÃoolly TÃled Arrays (H2TA), están diseñadas para
nodos con una o más aceleradoras, y para clusters heterogéneos, respectivamente.
Ambas librerÃas, han demostrado ser capaces de incrementar la productividad de los
usuarios mejorando la programabilidad de sus códigos, y al mismo tiempo, lograr
un rendimiento similar al de soluciones de más bajo nivel
XXV Congreso Argentino de Ciencias de la Computación - CACIC 2019: libro de actas
Trabajos presentados en el XXV Congreso Argentino de Ciencias de la Computación (CACIC), celebrado en la ciudad de RÃo Cuarto los dÃas 14 al 18 de octubre de 2019 organizado por la Red de Universidades con Carreras en Informática (RedUNCI) y Facultad de Ciencias Exactas, FÃsico-QuÃmicas y Naturales - Universidad Nacional de RÃo CuartoRed de Universidades con Carreras en Informátic
XXV Congreso Argentino de Ciencias de la Computación - CACIC 2019: libro de actas
Trabajos presentados en el XXV Congreso Argentino de Ciencias de la Computación (CACIC), celebrado en la ciudad de RÃo Cuarto los dÃas 14 al 18 de octubre de 2019 organizado por la Red de Universidades con Carreras en Informática (RedUNCI) y Facultad de Ciencias Exactas, FÃsico-QuÃmicas y Naturales - Universidad Nacional de RÃo CuartoRed de Universidades con Carreras en Informátic