Uma extensão à OpenMP para suporte à memória transacional - Jardim, André Desessards (2021)
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.