Uma extensão à OpenMP para suporte à memória transacional

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: Jardim, André Desessards
Orientador(a): Cavalheiro, Gerson Geraldo Homrich
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Pelotas
Programa de Pós-Graduação: Programa de Pós-Graduação em Computação
Departamento: Centro de Desenvolvimento Tecnológico
País: Brasil
Palavras-chave em Português:
Área do conhecimento CNPq:
Link de acesso: http://guaiaca.ufpel.edu.br/handle/prefix/7933
Resumo: Um dos aspectos mais complexos no desenvolvimento de programas em ambientes com memória compartilhada é a sincronização de atividades concorrentes no acesso a dados compartilhados. Memória Transacional foi proposta como um mecanismo que abstrai algumas das complexidades associadas ao acesso concorrente a dados compartilhados, enquanto promove o desenvolvimento de programas mais legíveis pela oferta de uma interface de programação de mais alto nível. Embora as modernas ferramentas para programação multithread ofereçam recursos para exploração eficiente do hardware, os suportes à sincronização a dados compartilhados ainda refletem modelos baseados na sincronização de fluxos de execução. O objetivo do trabalho é o de estender o estado da arte em interfaces para programação concorrente multithread pela introdução de recursos para manipulação de Memória Transacional em ferramentas de programação consolidadas. O objetivo foi alcançado pela caracterização de uma extensão à OpenMP, permitindo a manipulação de dados de forma transacional. Diferente de outras abordagens similares encontradas na bibliografia, a proposta apresentada se destaca por realizar a sincronização sobre o dado e não nos fluxos de execução, como previsto no próprio modelo de Memória Transacional. Na tese, é apresentada a especificação da extensão proposta, sua prototipação e sua validação qualitativa e quantitativa. A validação qualitativa se deu pela comparação, considerando métricas obtidas por análise de código, entre os códigos obtidos em implementações de diferentes aplicações em programas empregando a extensão proposta com outras soluções. Esta análise indicou que a solução apresentada atendeu os requisitos de abstração desejados. O protótipo, construído para verificar a viabilidade de implementação da interface, foi também avaliado em termos de desempenho, na análise quantitativa. O protótipo foi construído na forma de uma linguagem intermediária, permitindo instanciar o programa sobre diferentes ferramentas de suporte à Memória Transacional em software. As análises de desempenho consideraram um variado conjunto de casos de estudo, e as análises dos resultados permitiram atestar a viabilidade de implementação da interface proposta.