Ricardo Caldeira de Oliveira
Resumo
O tempo gasto em análises não-lineares estruturais de risers no domínio do tempo, usando programas de modelagem computacional, muitas vezes se torna um ponto crítico no projeto e estudo de viabilidade dessas estruturas. Desta forma, este trabalho tem como objetivo propor e implementar técnicas para melhorar o desempenho computacional de um programa de análise estrutural de risers, explorando arquiteturas multicore, que permitem execução de tarefas concorrentemente. Para usar a capacidade de múltiplo processamento dessas arquiteturas, foi usada computação paralela através de programação multithread. Foram analisados os códigos sequenciais existentes e identificados os locais de maior consumo de CPU, que correspondiam às etapas de formação e solução do sistema de equações. Foi feito, inicialmente, estudo de uso de otimizações através de opções do compilador mostrando a influência no desempenho final. Em seguida, foi feita implementação de programação paralela multithread usando o padrão OpenMP na paralelização da etapa de formação do sistema de equações. Nesta implementação, foi elaborada uma estratégia de divisão de tarefas com particionamento de domínio, de forma diferente à tradicional paralelização de laço com diretivas de OpenMP, que trouxe mais facilidade no tratamento de variáveis e eliminou uso de regiões críticas.
Abstract
The time spent in non-linear structural analysis of risers in the time domain, using computer modeling programs, often becomes a critical point in the design and feasibility studies of these structures. Thus, this study aims to propose and implement techniques to improve the computational performance of a program for structural analysis of risers, exploring multicore architectures, which allow execution of tasks concurrently. To use the ability of multiple processing of these architectures was used parallel computing using multithreaded programming. We analyzed the existing sequential code and identified the areas of highest consumption of CPU, which corresponded to the stages of assemble and solution of the system of equations. It was done, initially, study on use of optimizations the compiler options by showing the influence on final performance. Then, was made implementation of multithreaded parallel programming using the OpenMP standard to apply parallelization on the stage of assemble of the system of equations. In this implementation, a strategy was developed for division of tasks with domain partitioning, differently to the traditional loop parallelization with OpenMP directives, which brought more easily in the treatment of variables and elimination of critical regions.