• JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
 
  Bookmark and Share
 
 
Tesis Doctoral
DOI
https://doi.org/10.11606/T.45.2016.tde-20230727-113552
Documento
Autor
Nombre completo
Rogerio Aparecido Gonçalves
Dirección Electrónica
Instituto/Escuela/Facultad
Área de Conocimiento
Fecha de Defensa
Publicación
São Paulo, 2016
Director
Título en portugués
A runtime for code offloading on modern heterogeneous platforms
Palabras clave en portugués
Codificação De Programa
Desenvolvimento De Software
Resumen en portugués
As plataformas modernas de processamento paralelo cada vez trazem aos usuarios sistemas multi-core com organizacoes de hierarquia de memória complexas e novas recursos como o suporte a vetorizacao. Alem disso, essas plataformas reúmem elementos heterogeneos, que vao de CPUs multi-core a CPUs manycores. Quando esses elementos sao integrados, o poder de processamento dessas plataformas pode ser potencializado. Entretando, do lado do software ha a necessidade de modernizacao de aplicacoes de código legado para que usem esses novos recursos. Mesmo quando isso e feito, pode acontecer que a carga de trabalho ultrapasse a capacidade de sistemas multi-core, usualmente ha a necessidade de paralelizar o c6digo dessas aplicacoes para usarem o poder de processamento de coprocessadores e dispositivos aceleradores. Programar para estas novas plataformas nao e uma tarefa trivial, quer seja escrever um novo código ou a traducao de código legado de maneira transparente sao tarefas muito complexas. Estas plataformas com dispositivos aceleradores e processadores multi-core, mesmo fornecendo kits de desenvolvimento, requerem que o programador declare explicitamente todas as transferencias de dados entre as memórias dos dispositivos. 0 programador deve especificar a estrutura completa de grids e blocos de threads para lancar a execucao de kernels em cada dispositivo. Para amemizar essa condicao, ferramentas e abordagens tem sido propostas para gerar código para essas plataformas. Entre as abordagens que tern se destacado, uma usa diretivas de compilacao e a outra tenta detectar automaticamente regiões de código paralelizaveis. Na primeira abordagem, diretivas de compilacao sao usadas para guiar o processo de compilacao, no qual transformacoes e modificacoes de código sao aplicadas as regiões anotadas para obtencao da versao paralela de código. Na segunda abordagem a traducao de código deveria ocorrer sem modificacoes no código original e sem a intervencao do programador. Para se alcancar esses resultados, trabalhos nessa categoria aplicam modelos e tecnicas para detectar automaticamente quais regiões de código sao paralelizaveis. Neste trabalho, apresentamos um runtime relacionado com paralelizacao automatica e offloading de código baseado em versoes de código para lacos paralelos. A ideia e que o código de entrada OpenMP seja gerado por uma ferramenta de compilacao ou escrito manualmente. As bibliotecas do runtime sao capazes de interceptar, usando uma tecnica de hooking, algumas chamadas que as aplicacoes fazem ao runtime do OpenMP. A decisao de offloading tem sido tomada automaticamente em tempo de execucao usando a intensidade operacional que e obtida aplicando-se conceitos do Modelo Roofline. Estamos considerando medidas em todos os níveis da hierarquia de memória e das transferencias de dados entre o host e os dipositivos aceleradores.
Título en inglés
Um ambiente de execução para offloading de código em plataformas heterogeneas modernas
Resumen en inglés
The modern parallel processing platforms increasingly have brought to users multi-core systems with complex memory hierarchies organizations and new features as vectorization support. Moreover, these platforms congregate heterogeneous elements, from multi-core CPUs to many-cores GPUs. When these elements are integrated, the power processing of these platforms can are boosted. However, in the software side there is the need to modernize the code of legacy applications to use these new resources. Even when this is done, it may happen that the workload overcomes the ca- pacity of multi-core systems usually there is the need to parallelize the applications code to use the computing power of coprocessors and accelerators devices. Programming for these new platforms is not a trivial task, either writing new code or transparently translation of legacy code are very complex tasks. These platforms with accelerators devices and multicore processors, even providing development kits, require the programmer to explicitly declare all data transfers between device memories. The programmer should specify the complete structure of grids and blocks of threads to launch the kernel execution on each specific device. To mitigate this condition, tools and approaches have been proposed to generate code for these platforms. Among the approaches that have excelled, one approach uses compilation directives and other approaches try to detect parallelizable code re- gions. In the first approach, compilation directives are used to guide the compilation process, where code transformations and modifications are applied on annotated regions to obtain a parallell code version. In the second approach the code translation should occur without modifications on original code and without programmer intervention. For this outcome, these approaches apply models and techniques to automatically detect which regions of code are parallelizable. In this thesis, we describe a runtime related with automatic code parallelization and offloading based on code ver- sioning of parallel loops. The idea is that the 0penMP input code can be generated by compiler tool or written manually. Our runtime libraries are intercepting some applications calls for 0penMP runtime using a hooking technique. The decision about offloading have been taken automatically at runtime using the operational intensity that is obtained applying Roofline rvlodel concepts. We are considering measures in all levels of memory hierarchy and the data transfers between host and devices.
 
ADVERTENCIA - La consulta de este documento queda condicionada a la aceptación de las siguientes condiciones de uso:
Este documento es únicamente para usos privados enmarcados en actividades de investigación y docencia. No se autoriza su reproducción con finalidades de lucro. Esta reserva de derechos afecta tanto los datos del documento como a sus contenidos. En la utilización o cita de partes del documento es obligado indicar el nombre de la persona autora.
Fecha de Publicación
2023-07-27
 
ADVERTENCIA: Aprenda que son los trabajos derivados haciendo clic aquí.
Todos los derechos de la tesis/disertación pertenecen a los autores
CeTI-SC/STI
Biblioteca Digital de Tesis y Disertaciones de la USP. Copyright © 2001-2024. Todos los derechos reservados.