Publicação
Otimização do código de remoção de imagem fantasma utilizado na missão espacial Proba-3
| Resumo: | 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. |
|---|---|
| Autores principais: | Ribeiro, Bruno Miguel Freitas |
| Assunto: | PROBA-3 OpenACC Paralelização CPU GPU CUDA Otimização Parallelization Optimization |
| Ano: | 2020 |
| País: | Portugal |
| Tipo de documento: | dissertação de mestrado |
| Tipo de acesso: | acesso aberto |
| Instituição associada: | Universidade do Minho |
| Idioma: | português |
| Origem: | RepositóriUM - Universidade do Minho |
| Resumo: | 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. |
|---|