62ª Reunião Anual da SBPC
B. Engenharias - 1. Engenharia - 3. Engenharia Civil
ESTUDO E IMPLEMENTAÇÃO DE TÉCNICAS DE COMPUTAÇÃO DE ALTO DESEMPENHO EM UMA BIBLIOTECA DE ANÁLISE DINÂMICA DE LINHAS DE ANCORAGEM E RISERS
Heleno Pontes Bezerra Neto 1
Joseanderson Augusto de Caldas Costa 2
Fábio Martins Gonçalves Ferreira 2
Eduardo Setton Sampaio da Silveira 3
1. Centro de Tecnologia, Univ. Federal de Alagoas - UFAL
2. Lab.de Comput. Científica e Visualização - LCCV, Univ. Federal de Alagoas - UFAL
3. Prof. Dr./Orientador - Centro de Tecnologia, Univ. Federal de Alagoas - UFAL
INTRODUÇÃO:

A biblioteca AnaLynes permite a análise dinâmica de risers e linhas de ancoragem e foi implementada usando a linguagem C++. A AnaLynes é integrada ao DYNASIM, software da Petrobras que faz a análise dinâmica acoplada de linhas em estruturas offshore.

No projeto dessas estruturas, às vezes, a malha utilizada precisa ser muito discretizada para se obter uma resposta satisfatória. Nesses casos, o tempo de processamento pode ser muito elevado, inviabilizando algumas análises. Nesse contexto, surge a Computação de Alto Desempenho (CAD) como uma estratégia para contornar problemas desse tipo, reduzindo o tempo de simulação e otimizando o código, aumentando sua eficiência.

Dentre as técnicas de CAD, destacam-se as estratégias de otimização e o processamento paralelo. Essa última é recomendada em regiões que demandam elevado esforço computacional, cujo objetivo é dividir o fluxo do programa entre centrais de processamento existentes, podendo ser aplicada em ambientes de memória compartilhada e distribuída, bem como híbridos.

Neste trabalho é abordada a estratégia de paralelização em ambientes de memória compartilhada, sendo utilizado o padrão OpenMP. Essa técnica foi aplicada em desktops com arquiteturas multicore, comprovando os reais ganhos que podem ser obtidos com essa estratégia.
METODOLOGIA:

Inicialmente, realizou-se uma revisão bibliográfica sobre CAD e mais especificamente sobre Processamento Paralelo utilizando o padrão OpenMP.

Logo após, estudou-se todo o material acerca da biblioteca AnaLynes como, por exemplo, teses/dissertações e o próprio código fonte, tendo como objetivo entender o funcionamento da biblioteca.

Ainda dentro desse contexto foi realizada uma análise para medir o desempenho da biblioteca nos compiladores icpc (Intel) e g++ (GNU), passando a utilizar o icpc por ter apresentado melhor desempenho.

O passo seguinte foi estudar as ferramentas de profile (gprof e Valgrind) e em seguida realizar uma análise de profile na biblioteca. Com isso foi possível calcular o tempo gasto em cada método, permitindo identificar as regiões críticas, candidatas a receber diretivas do OpenMP.

Após essa identificação, fez-se um estudo detalhado das regiões críticas, identificando aquelas que receberiam as deritivas do OpenMP, sendo verificado o ganho de tempo em cada método, o ganho de tempo geral, problemas de race condition e outros aspectos.
RESULTADOS:

Os seguintes resultados foram obtidos na simulação de uma linha em forma de catenária, com 1750 m de comprimento, sofrendo influência da corrente marítima, com deslocamento senoidal prescrito na extremidade superior, o número de elementos em que a linha foi discretizada, variou de 200 a 500.

Com o estudo do fluxo do programa observou-se que os métodos que demandavam maior consumo de tempo eram os responsáveis pelo cálculo das forças externas e internas nos elementos. Demandando aproximadamente 85% do tempo de simulação, sendo nessa região aplicada as diretivas de OpenMP.

Na análise de performance constatou-se um ganho de aproximadamente 69% com um erro percentual de 0,1. O ganho máximo teórico de desempenho segundo a Lei de Amdahl (que relaciona tempo seqüencial e número de processadores) é de 1,74, ou seja 74%, observando que obteve-se um valor próximo do teórico. Já o erro percentual é considerado pequeno, devido a sua ordem de grandeza.
CONCLUSÃO:

Com a aplicação das diretivas de OpenMP, obteve-se uma versão para ser utilizada em ambientes de memória compartilhada, com um ganho de performace de 69% em relação à versão anterior (sem a aplicação das diretivas), com um erro percentual pequeno, entre as versões com as diretivas de OpenMP e sem as diretivas.

Na comparação entre os compiladores icpc e g++, percebeu-se que no compilador da icpc a biblioteca era aproximadamente 50% mais rápida que no compilador g++. Resultado que pode ser justificado pelo fato de o processador ser do mesmo fabricante do compilador.

Com essa versão da biblioteca para voltada para ambientes de memória compartilhada e com a existência de uma versão para ambientes de memória distribuída, trabalhos futuros podem ser influenciados a gerar uma versão da biblioteca voltada para ambientes híbridos, aumentando ainda mais a velocidade de processamento.
Instituição de Fomento: Universidade Federal de Alagoas - UFAL
Palavras-chave: Processamento Paralelo, Ambientes de memória compartilhada, OpenMP.