Você está na página 1de 5

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/303519140

Paralelização Multithreading do Algoritmo BLS


para Detecção de Exoplanetas

Conference Paper · May 2015

CITATIONS READS

0 67

3 authors, including:

Adriana Valio Luciano Silva


Universidade Presbiteriana Mackenzie Universidade Presbiteriana Mackenzie
118 PUBLICATIONS 1,357 CITATIONS 79 PUBLICATIONS 58 CITATIONS

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Holographic Computing View project

Grupo de pesquisa View project

All content following this page was uploaded by Luciano Silva on 25 May 2016.

The user has requested enhancement of the downloaded file.


Paralelização Multithreading do Algoritmo BLS para
Detecção de Exoplanetas
Antonio Luiz Basile Adriana R. A. Valio Luciano Silva

Centro de RadioAstronomia e Astrofísica Mackenzie, Universidade Mackenzie


Rua da Consolação, 896 – Prédio T – 01302-907 – São Paulo – SP – Brazil
antonio.basile@mackenzie.br,avalio@craam.mackenzie.br,
luciano.silva@mackenzie.br

Abstract. The method of planetary transits is one of the most common strategies for detection
and characterization of planets orbiting stars outside Solar System. Despite the exoplanet
detection by Box Least Squares (BLS) algorithm is simple, its performance is impaired when
dealing with large problems. This paper proposes a parallel version of BLS under
multithreading architecture for large volumes of data, implemented in Python and tested with
simulated data and real measures from the Kepler observatory.
Resumo. O método de trânsitos planetários é uma das estratégias mais comuns na detecção e
caracterização de planetas orbitando estrelas fora do Sistema Solar. Apesar do algoritmo de
detecção de exoplanetas por minimização de mínimos quadrados com funções-box (BLS) é
largamente utilizado pela sua simplicidade, seu desempenho é prejudicado em problemas
grandes. Este trabalho propõe uma versão paralela do BLS, sob arquitetura multithreading,
para grandes volumes de dados, implementada na linguagem Python e testada com dados
simulados e reais do observatório Kepler.

1. Introdução
Com o lançamento dos satélites CoRoT e Kepler, o método de trânsitos planetários tornou-se
uma das estratégias mais comuns para detecção e caracterização de exoplanetas, isto é, planetas
que orbitam estrelas fora do Sistema Solar. Neste método, geram-se sequências de dados por
fotometria chamadas curvas de luz e, a partir delas, pode-se obter diversos parâmetros tanto da
estrela quanto do planeta.
Uma das atividades iniciais na pipeline de processamento de uma curva luz é a detecção do
trânsito planetário. Existem três estratégias fundamentais para se realizar esta detecção
(Perryman, 2014): LS (Lomb-Scargle), BLS (Box Least Squares) e Plavchan. Dentre estas
estratégias, o algoritmo BLS é o mais utilizado, principalmente pela sua simplicidade de
implementação. Porém, para grandes curvas de luz, a implementação sequencial deste
algoritmos pode levar a um desempenho extremamente lento.
Assim, dentro deste contexto, este trabalho apresenta uma otimização paralela, via
programação multithreading, para o algoritmo BLS visando ao uso em grandes curvas de luz.
Foi realizada uma implementação com a linguagem Python, utilizando o módulo de threads, e
medidos os desempenhos para uma arquitetura multicore.

2. Método dos Trânsitos Planetários


O Método dos Trânsitos Planetários é um dos métodos possíveis para detecção de planetas
orbitando uma estrela (Perryman, 2014). Este método consiste em realizar medidas fotométricas
do fluxo luminoso da estrela, gerando um conjunto de dados chamado curva de luz. Quando um
planeta passa em frente à estrela, ocorre uma alteração no fluxo luminoso da estrela, percebida
através da deformação de sua curva de luz.

1
A Figura 1 ilustra os principais elementos da geometria da curva de luz de uma estrela.

Figura 1. Geometria das curvas de luz (Perryman, 2014).

A deformação começa a ocorrer no primeiro ponto de contato (número 1 da Figura 1) e


termina no último ponto de contato (número 4 da Figura 1). Se a curva de luz for conhecida, é
possível se estimar diversos parâmetros como profundidade do trânsito (∆𝐹) e duração do
trânsito (tT) e, a partir deles, outros parâmetros do sistema estrela-planeta como densidade da
estrela, raio do planeta, inclinação da órbita (i) e fator de impacto (b).
Porém, devido a diversos fatores como ruído, os trânsitos em curvas de luz reais não são tão
explícitos como a geometria mostrada na Figura 1. Na Figura 2, tem-se um exemplo típico de
uma curva de luz real (estrela Kepler 36).

Figura 2. Curva de luz da estrela Kepler 36 (Kepler, 2014).

A simples observação visual desta curva de luz não permite a detecção imediata de trânsitos
planetários. Para isto, podem ser necessários vários procedimentos. Um deles é a redução de
ruído através de processos de filtragem. Outro, dependendo do tempo considerado na
observação da estrela, refere-se ao fato de que uma curva de luz pode conter repetições
periódicas do trânsito. Neste caso, a curva precisa ser segmentada em trechos que tenham
probabilidade de conter trânsitos e, a partir da repetição das rotinas de detecção de trânsitos em
cada um destes segmentos, constrói-se uma curva de luz média. Tanto a detecção do trânsito em
si, quanto as rotinas de filtragem e segmentação dos sinais têm custo computacional alto e
podem ter desempenho melhorado com uso de processamento paralelo.
Neste trabalho, será considerada apenas a tarefa de detecção de trânsito em um segmento de
sinal não-filtrado, isto é, com possibilidade de presença de ruído.

3. Algoritmo de Mínimos Quadrados Box (BLS)


Um segmento de curva de luz pode ser representado matematicamente como uma sequência
finita {𝑥! }!!!,…,! de valores de fluxo luminoso. Adicionalmente, a cada valor 𝑥! , será associado
um ruído Gaussiano aditivo de média zero, com desvio-padrão 𝜎! . Para se detectar os índices
desta sequência que indiquem o início e o final de um trânsito planetário, pode-se utilizar o
Algoritmo de Mínimos Quadrados Box (BLS – Box Least Squares), proposto por Kovács et al.
(2002).

2
O algoritmo BLS consiste em encontrar dois índices 𝑖! e 𝑖! no intervalo discreto [1,...,n], com
𝑖! <   𝑖! , chamados, respectivamente, de índices de início e final do trânsito e que minimizem a
expressão quadrática
!
𝑠!
𝐷= 𝑤! 𝑥!! −
𝑟(1 − 𝑟)
!!!

com os valores 𝑤! , 𝑠 e 𝑟 dados por:


!! !!
1
       𝑤! = !                  𝑠 = 𝑤! 𝑥!                      𝑟 = 𝑤!
𝜎! ! !!! 𝜎! !!!! !!!!

Em notação algorítmica, o BLS sequencial consiste em busca por força bruta por todos os
pares 𝑖! e 𝑖! , com 𝑖! <   𝑖! :
1. c ← !!!! 𝑤! 𝑥!!
2. 𝐷!"# = +∞
3. para 𝑖!   de 1 até n-1 faça
4. para 𝑖!   de (𝑖!   + 1) até n faça
!!
5. 𝑓 ←  
!(!!!)
6. se (𝐷!"# > 𝑐 − 𝑓)
7. então 𝐷!"# = 𝑐 − 𝑓
8. (𝑖, 𝑗) = (𝑖!   , 𝑖!   )
9. retorne (𝑖, 𝑗)
Algoritmo Sequencial. Pseudocódigo da versão sequencial do algoritmo BLS.
O Algoritmo BLS descrito acima é um algoritmo assintoticamente cúbico O(𝑛! ) (dois laços
encadeados com dois laços internos sequenciais para cálculo dos fatores 𝑟 e 𝑠 ). Embora o BLS
sequencial tenha complexidade polinomial, sua aplicação prática não revela a eficiência
esperada para algoritmos polinomiais em função dos tamanhos típicos de curvas de luz e
quantidade de estrelas monitoradas por alguns observatórios. Para o observatório Kepler
(Kepler, 2014), por exemplo, os tamanhos típicos das curvas de luz são de 200.000 pontos/curva
e uma quantidade da ordem 145.000 estrelas monitoradas.

4. Paralelização do Algoritmo BLS e Resultados


A paralelização do BLS foi feita no passo 3 do pseudocódigo mostrado no Algoritmo
Sequencial, utilizando o padrão de programação paralela map-reduce (McCool et al., 2012):
• utilizou-se como mapa a função 𝑓 𝑐, 𝑖 = (𝑖, 𝐷!"#! , 𝑗), que recebe o valor 𝑐 (como no
Algoritmo 1, acima) e um índice 𝑖, devolvendo a tripla (𝑖, 𝐷!"#! , 𝑗), onde 𝑗 é índice que
produziu o valor mínimo (𝐷!"#! ) para o índice 𝑖.
• Como redução, utilizou-se a função mínimo na segunda coordenada (𝐷!"#! ) de todas as
triplas (𝑖, 𝐷!"#! , 𝑗), produzindo o par (𝑖, 𝑗) desejado.
A aplicação paralela do mapa necessita de um particionamento do conjunto de índices
𝑖   =   {1, 2, . . . , 𝑛 − 1}. Porém, este particionamento não pode ser contínuo, pois as tarefas que
forem alocadas para os primeiros índices trabalharão mais que aquelas que forem alocadas aos
índices finais, devido ao passo 4 do Algoritmo Sequencial. Para balancear melhor as tarefas,
utilizou-se a seguinte regra: as tarefas são numeradas de 1 a 𝑝; os índices de processamento da
tarefa 1 são {1, 𝑛 − 1, (𝑝 + 1), 𝑛 − (𝑝 + 1), (2𝑝 + 1), 𝑛 − (2𝑝 + 1), . . . }; para a tarefa 2
{2, 𝑛 − 2, (𝑝 + 2), 𝑛 − (𝑝 + 2), . . . } e assim por diante, ou seja, se uma tarefa foi alocada para

3
um índice muito baixo (laço do passo 4 longo), então ela irá executar um índice muito alto (laço
do passo 4 curto).
As duas estratégias foram implementadas em Python, com a versão paralela utilizando map-
reduce com threads e a estratégia de particionamento acima, sendo testadas com curvas de luz
sintéticas e obtidas do observatório Kepler, utilizando um processador Intel i7 i7-5960X (8
cores, 16 threads). Para cada curva de luz, foram efetuadas 10 execuções, sendo calculadas as
respectivas médias de tempo de execução e desvio-padrão. O gráfico mostrado na Figura 3
compara os resultados obtidos para 2, 4 e 8 threads e com números crescentes de pontos nas
curvas de luz.

Figura 3. Comparações de tempos (em horas) entre as versões sequencial e paralela.

A diferença de desempenho começou a ocorrer para um número de pontos maior ou igual a


20000 pontos, mesmo com os custos de lançamentos de threads. No tamanho mais elevado de
número de pontos, reduziu-se o tempo de 31.6 dias de processamento para 4.13 dias com 8
threads.

6. Conclusões e Trabalhos Futuros


A redução do tempo de processamento para detecção de trânsitos em grandes curvas de luz
foi conseguida com a utilização de processamento paralelo com multithreading, usando apenas
um processador com vários cores. Como trabalho futuro, pretende-se explorar outras estratégias
de paralelização do algoritmo BLS como, por exemplo, algoritmos sistólicos para quebras dos
laços via independência de dados ou utilização de processamento híbrido com GPUs e clusters.

Referências

Kepler (2014) Kepler Public Light Curves. Disponível em: https://archive.stsci.edu/kepler/


publiclightcurves.html. Acesso em: 02/05/2015.
Kovács, G., Zucker, S., Mazeh, T. (2002) A Box-Fitting Algorithm in Search for Periodic
Transits. In: Astronomy and Astrophysics, 391, 369–377.
McCool, M., Reinders, J., Robinson, A. (2012) Structured Parallel Programming: Patterns for
Efficient Computation. New York: Morgan Kaufmann.
Perryman, M. (2014) The Exoplanet Handbook. Cambridge: Cambrige University Press.

View publication stats

Você também pode gostar