Este trabalho é dedicado a todas as pessoas cujo apoio e ajuda foram de grande importância para a sua realização. Em primeiro lugar, destaco minha família, em especial meus pais, Sandra e Edmilson, e minha esposa, Jéssica, que sempre estiveram ao meu lado apoiando-me na conquista desse objetivo. Não menos importante, agradeço também ao professor doutor Edson Borin, meu orientador, sobretudo pela oportunidade única e disponibilidade ao me conceder seus valiosos ensinamentos. Por fim, agradeço à Universidade Estadual de Campinas por oferecer um ambiente de pesquisa reconhecido em todo o mundo, sendo, consequentemente, propício para a inovação.
ResumoTécnicas de mapeamento da subsuperfície terrestre a partir de aquisições sísmicas de dados marítimos, tal como o método de empilhamento, vêm sendo fundamentais para diversas aplicações da indústria, notadamente para a exploração de petróleo e gás. Tais técnicas são importantes principalmente pelo fato de permitirem aos geofísicos obter parâmetros, tais como a velocidade de propagação do meio, por exemplo, e modelos das regiões de interesse com precisão elevada. Por utilizarem um volume bem elevado de medições sísmicas e apresentarem muitos laços, essas técnicas tendem a exigir muitos cálculos e, portanto, muito tempo de processamento quando consideramos arquiteturas tradicionais contendo poucas dezenas de CPUs. Tais características nos convidam a propor e explorar maneiras de tornar a sua execução mais rápida e eficiente. Tendo em vista o fato de que tais técnicas apresentam muitos laços cujas iterações são majoritariamente independentes entre si (com exceção ao acesso aos dados da memória, que é compartilhado), a paralelização, seja por meio do uso de GPUs ou de nós espalhados na nuvem computacional (ou de ambos), torna-se a alternativa mais viável e simples para acelerá-los. Além disso, tendo em vista o extensivo número de parâmetros a serem testados, faz-se necessário uma estratégia eficiente de busca. Sendo assim, neste trabalho, foi implementado um método de paralelização com suporte tanto a plataformas compatíveis com o framework CUDA quanto ao padrão OpenCL baseado no algoritmo genético de evolução diferencial para a procura dos parâmetros do meio de maneira a maximizar a medida de semblance para o empilhamento sísmico a partir de três modelos distintos de cálculo do tempo de trânsito, sendo eles, em ordem crescente de complexidade, o Common Mid Point, o Zero Offset Common Reflection Surface e, finalmente, o Offset Continuation Trajectory. Foi proposta igualmente uma técnica de seleção de dados para cada um destes mesmos modelos com o intuito de minimizar a quantidade de dados a ser transferida aos aceleradores a cada iteração. Finalmente, tais soluções foram integradas ao framework SPITS para a distribuição das tarefas computacionais entre os vários nós de uma nuvem. Em comparação com algumas soluções presentes na literatura para os tempos de trânsito Common Mid Point e Zero Offset Common Reflection Surface, o desempenho obtido pelo trabalho foi superior a outra...