Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/74437
Título: | Otimizaçã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-chave: | PROBA-3 OpenACC Paralelização CPU GPU CUDA Otimização Parallelization Optimization |
Data: | 2020 |
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. |
Tipo: | Dissertação de mestrado |
Descrição: | Dissertação de mestrado integrado em Engenharia Eletrónica Industrial e Computadores |
URI: | https://hdl.handle.net/1822/74437 |
Acesso: | Acesso aberto |
Aparece nas coleções: | BUM - Dissertações de Mestrado |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Dissertação BrunoMFRibeiro_Final.pdf | 2,47 MB | Adobe PDF | Ver/Abrir |
Este trabalho está licenciado sob uma Licença Creative Commons