Análise automática de acessos concorrentes a dados para refatoração de código sequencial em código paralelo OpenMP
Resumo
A transformação manual de programas sequenciais em código paralelo não é uma
tarefa fácil. Ela requer muito esforço e atenção do programador durante esse processo,
correndo grande risco de se introduzir erros que podem não ser percebidos pelo programador.
Um desses problemas, fortemente ligado à programação paralela em memória
compartilhada, é a condição de corrida. Esse problema ocorre em virtude da manipulação
concomitante realizada por mais de uma thread sobre uma variável compartilhada entre
elas, sendo o resultado desta variável dependente da ordem de acesso. Explorando essa
dificuldade, este trabalho propõe uma abordagem que auxilie o programador durante a
refatoração de código sequencial para código paralelo OpenMP, identificando de forma
automatizada variáveis que podem vir a ter problemas de condição de corrida. Para tanto,
é proposto um algoritmo de verificação baseado no acesso às variáveis e feita a sua implementação
utilizando-se do framework da ferramenta Photran (um plugin para edição
de código Fortran integrado ao IDE Eclipse). Para fins de avaliação empírica do algoritmo,
apresentam-se testes realizados com pequenos programas e exemplos de código,
mostrando o funcionamento da ferramenta nos casos previstos. Além disso, apresenta-se
um estudo de caso baseado em uma aplicação real e complexa, mostrando a habilidade
do algoritmo em identificar as variáveis em risco, bem como ilustrando algumas de suas
limitações conhecidas.