Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/74437

TítuloOtimização do código de remoção de imagem fantasma utilizado na missão espacial Proba-3
Autor(es)Ribeiro, Bruno Miguel Freitas
Orientador(es)Ribeiro, A. Fernando
Palavras-chavePROBA-3
OpenACC
Paralelização
CPU
GPU
CUDA
Otimização
Parallelization
Optimization
Data2020
Resumo(s)Esta dissertação surgiu no âmbito da missão espacial PROBA-3 da ESA. Esta missão tem como objetivo estudar em maior profundidade a coroa solar, com o intuito de obter dados importantes sobre o sol e os raios solares. Para realizar esta observação irão ser lançados dois satélites que irão realizar um trajeto em formação. Estes dois satélites irão formar um coronagraph, um instrumento utilizado para observar a coroa solar. Apesar deste instrumento já eliminar parte do ruído luminoso originado por outras fontes de luz é necessário que este ruído seja também reduzido com métodos de software. Devido aos desalinhamentos causados pelo vôo em formação dos dois satélites a imagem obtida necessita de ser processada pixel por pixel, aumentando assim o tempo de execução do código. Esta dissertação tem como objetivo estudar e implementar métodos que otimizem o código já desenvolvido, para que este tenha a capacidade de analisar mais imagens em um menor período de tempo. O método de otimização que terá maior foco nesta dissertação é a paralelização. O código inicial será inicialmente paralelizado com OpenACC, sendo este um modelo de programação que permite que a paralelização do código seja feita apenas com o recurso a incrementação de diretivas. Com este modelo será estudado o desempenho da execução do código paralelizado para CPU e para GPU para poderem ser comparados ambos os desempenhos. Devido à comunicação e transferência de memória entre o CPU e o GPU ser bastante demorada, a execução de código paralelo no GPU pode não ser eficaz se existir a necessidade de várias transferências de memória entre os dois processadores. Apesar de OpenACC permitir que o código seja paralelizado sem a alteração do mesmo, algumas partes do código para poderem ser paralelizadas necessitam de ser modificadas. Devido a ter partes do código a serem executadas no CPU e outras no GPU é necessário transferência de memória entre eles, fazendo assim com que o desempenho do código seja pior. Para obter a total paralelização do código de forma a eliminar o tempo gasto na transferência de dados o código foi alterado e codificado em CUDA. CUDA é uma framework da NVIDIA que permite escrever código para ser executado em GPUs da NVIDIA. Com o uso de CUDA é possível analisar a verdadeira potencialidade de um GPU na resolução de problemas matemáticos.
This dissertation appeared in the scope of the PROBA-3 space mission from ESA. This mission aims to study in more detail the solar corona, with the objective of getting important data about the sun and the sun rays. These observation will be done by two satellites in a formation flight. This two satellites will form a coronagraph, which is an instrument used to perform observations to the solar corona. Despite this instrument already eliminates part of the luminous noise originated by other light sources, it is necessary that this noise is also reduced by software methods. Due to the misalignments caused by the formation flight of the two satellites, the image obtained needs to be processed pixel by pixel, thus increasing the execution time of the code. This dissertation aims to study and implement methods that optimize the code already developed, so that it has the ability to analyze more images in a shorter period of time. The optimization method that will have the greatest focus on this dissertation is parallelization. The initial code will initially be parallelized with OpenACC, this being a programming model that allows the code to be paralyzed only with the addition of directives. With this model, the performance of the execution of the parallel code for CPU and for GPU will be studied so that both performances can be compared. Because communication and memory transfer between CPU and GPU takes a long time, running parallel code on GPU may not be effective if there is a need for multiple memory transfers between the two processors. Although OpenACC allows the code to be parallelized without changing it, some parts of the code in order to be parallelized need to be modified. Due to having parts of the code to be executed in CPU and others in GPU, it is necessary to transfer memory between them, thus making the code performance worse. To obtain complete parallelization of the code in order to eliminate the time spent on data transfer, the code was changed and coded in CUDA. CUDA is an NVIDIA framework that allows to write code to run on NVIDIA’s GPU. Using CUDA it is possible to analyze the true potential of a GPU in solving mathematical problems.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado integrado em Engenharia Eletrónica Industrial e Computadores
URIhttps://hdl.handle.net/1822/74437
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Dissertação BrunoMFRibeiro_Final.pdf2,47 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID