• 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
 
 
Tese de Doutorado
DOI
https://doi.org/10.11606/T.45.2016.tde-20230727-113552
Documento
Autor
Nome completo
Rogerio Aparecido Gonçalves
E-mail
Unidade da USP
Área do Conhecimento
Data de Defesa
Imprenta
São Paulo, 2016
Orientador
Título em português
A runtime for code offloading on modern heterogeneous platforms
Palavras-chave em português
Codificação De Programa
Desenvolvimento De Software
Resumo em 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 em inglês
Um ambiente de execução para offloading de código em plataformas heterogeneas modernas
Resumo em 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.
 
AVISO - A consulta a este documento fica condicionada na aceitação das seguintes condições de uso:
Este trabalho é somente para uso privado de atividades de pesquisa e ensino. Não é autorizada sua reprodução para quaisquer fins lucrativos. Esta reserva de direitos abrange a todos os dados do documento bem como seu conteúdo. Na utilização ou citação de partes do documento é obrigatório mencionar nome da pessoa autora do trabalho.
Data de Publicação
2023-07-27
 
AVISO: Saiba o que são os trabalhos decorrentes clicando aqui.
Todos os direitos da tese/dissertação são de seus autores
CeTI-SC/STI
Biblioteca Digital de Teses e Dissertações da USP. Copyright © 2001-2024. Todos os direitos reservados.