• 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
 
 
Doctoral Thesis
DOI
https://doi.org/10.11606/T.45.2016.tde-20230727-113552
Document
Author
Full name
Rogerio Aparecido Gonçalves
E-mail
Institute/School/College
Knowledge Area
Date of Defense
Published
São Paulo, 2016
Supervisor
Title in Portuguese
A runtime for code offloading on modern heterogeneous platforms
Keywords in Portuguese
Codificação De Programa
Desenvolvimento De Software
Abstract in Portuguese
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.
Title in English
Um ambiente de execução para offloading de código em plataformas heterogeneas modernas
Abstract in English
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.
 
WARNING - Viewing this document is conditioned on your acceptance of the following terms of use:
This document is only for private use for research and teaching activities. Reproduction for commercial use is forbidden. This rights cover the whole data about this document as well as its contents. Any uses or copies of this document in whole or in part must include the author's name.
Publishing Date
2023-07-27
 
WARNING: Learn what derived works are clicking here.
All rights of the thesis/dissertation are from the authors
CeTI-SC/STI
Digital Library of Theses and Dissertations of USP. Copyright © 2001-2024. All rights reserved.