A runtime for code offloading on modern heterogeneous platforms

Detalhes bibliográficos
Ano de defesa: 2016
Autor(a) principal: Gonçalves, Rogerio Aparecido
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Biblioteca Digitais de Teses e Dissertações da USP
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113552/
Resumo: 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.
id USP_1056cefa607ea2e63c471b354e1e7c4b
oai_identifier_str oai:teses.usp.br:tde-20230727-113552
network_acronym_str USP
network_name_str Biblioteca Digital de Teses e Dissertações da USP
repository_id_str
spelling A runtime for code offloading on modern heterogeneous platformsUm ambiente de execução para offloading de código em plataformas heterogeneas modernasCodificação De ProgramaDesenvolvimento De SoftwareAs 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.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.Biblioteca Digitais de Teses e Dissertações da USPGoldman, AlfredoGonçalves, Rogerio Aparecido2016-12-15info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisapplication/pdfhttps://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113552/reponame:Biblioteca Digital de Teses e Dissertações da USPinstname:Universidade de São Paulo (USP)instacron:USPLiberar o conteúdo para acesso público.info:eu-repo/semantics/openAccesspor2023-07-27T20:09:04Zoai:teses.usp.br:tde-20230727-113552Biblioteca Digital de Teses e Dissertaçõeshttp://www.teses.usp.br/PUBhttp://www.teses.usp.br/cgi-bin/mtd2br.plvirginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.bropendoar:27212023-07-27T20:09:04Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)false
dc.title.none.fl_str_mv A runtime for code offloading on modern heterogeneous platforms
Um ambiente de execução para offloading de código em plataformas heterogeneas modernas
title A runtime for code offloading on modern heterogeneous platforms
spellingShingle A runtime for code offloading on modern heterogeneous platforms
Gonçalves, Rogerio Aparecido
Codificação De Programa
Desenvolvimento De Software
title_short A runtime for code offloading on modern heterogeneous platforms
title_full A runtime for code offloading on modern heterogeneous platforms
title_fullStr A runtime for code offloading on modern heterogeneous platforms
title_full_unstemmed A runtime for code offloading on modern heterogeneous platforms
title_sort A runtime for code offloading on modern heterogeneous platforms
author Gonçalves, Rogerio Aparecido
author_facet Gonçalves, Rogerio Aparecido
author_role author
dc.contributor.none.fl_str_mv Goldman, Alfredo
dc.contributor.author.fl_str_mv Gonçalves, Rogerio Aparecido
dc.subject.por.fl_str_mv Codificação De Programa
Desenvolvimento De Software
topic Codificação De Programa
Desenvolvimento De Software
description 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.
publishDate 2016
dc.date.none.fl_str_mv 2016-12-15
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113552/
url https://teses.usp.br/teses/disponiveis/45/45134/tde-20230727-113552/
dc.language.iso.fl_str_mv por
language por
dc.relation.none.fl_str_mv
dc.rights.driver.fl_str_mv Liberar o conteúdo para acesso público.
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Liberar o conteúdo para acesso público.
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.coverage.none.fl_str_mv
dc.publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
dc.source.none.fl_str_mv
reponame:Biblioteca Digital de Teses e Dissertações da USP
instname:Universidade de São Paulo (USP)
instacron:USP
instname_str Universidade de São Paulo (USP)
instacron_str USP
institution USP
reponame_str Biblioteca Digital de Teses e Dissertações da USP
collection Biblioteca Digital de Teses e Dissertações da USP
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)
repository.mail.fl_str_mv virginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.br
_version_ 1815258342474383360