The manual transformation of sequential programs into parallel code is not an easy
task. It requires very effort and attention of the developer during this process at great risk
of introducing errors that can not be perceived by the programmer. One of these problems,
strongly connected to shared memory parallel programming is the race condition.
This problem occurs because of the simultaneous manipulation performed for more than
a thread on a variable shared between them, with the result of this variable dependent of
the access order. Exploring this difficulty, this work proposes an approach that helps the
programmer during the refactoring of a sequential code for OpenMP parallel code, identifying
variables in an automated manner that may have problems of race condition. To
this end, we propose a verification algorithm based on access to the variables and made its
implementation using the Photran framework tool (a plugin for editing FORTRAN code
integrated into the Eclipse IDE). For purposes of empirical evaluation of the algorithm,
we present tests with small programs and code examples showing the operation of the tool
in the cases provided. In addition, it presents a case study based on a real and complex
application, showing the ability of the algorithm to identify all the variables at risk, as
well as illustrating some of its known limitations. / 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.
Identifer | oai:union.ndltd.org:IBICT/oai:repositorio.ufsm.br:1/5392 |
Date | 16 December 2011 |
Creators | Tietzmann, Dionatan Kitzmann |
Contributors | Charão, Andrea Schwertner, Piveta, Eduardo Kessler, Du Bois, André Rauber |
Publisher | Universidade Federal de Santa Maria, Programa de Pós-Graduação em Informática, UFSM, BR, Ciência da Computação |
Source Sets | IBICT Brazilian ETDs |
Language | Portuguese |
Detected Language | Portuguese |
Type | info:eu-repo/semantics/publishedVersion, info:eu-repo/semantics/masterThesis |
Format | application/pdf |
Source | reponame:Repositório Institucional da UFSM, instname:Universidade Federal de Santa Maria, instacron:UFSM |
Rights | info:eu-repo/semantics/openAccess |
Relation | 100300000007, 400, 300, 300, 300, 300, aac57e3e-0ef6-44db-8eb8-463a52aa902d, e998f042-994e-4ab2-99d6-0a7e1435ecd2, 15b6c103-19c6-4ace-8789-f26318c8023f, 41dd28aa-e335-47e6-844f-023f6f2ca56b |
Page generated in 0.0027 seconds