Um processo otimizado de produção de mapas da Radiação Cósmica de Fundo em Microondas José Oscar Fernandes1, Carlos Alexandre Wuensche de Souza1, Airam Jônatas Preto2, Stephan Stephany2 1 Coordenadoria de Ciências Espaciais e Atmosféricas, INPE, 2 Lab. de Computação e Matemática Aplicada, INPE, Av. Astronautas, 1758, 12227-010, São José dos Campos, SP E-mail: [email protected], [email protected], [email protected], [email protected]. t x N Proc 0,5 0,45 0,4 0,35 0,3 0,25 0,2 0,15 0,1 0,05 0 thpf thpf/mpi 0 4 8 12 16 20 N Proc Figura 2: Comparação entre implementações HPF e HPF/MPI Estes resultados demonstram que a otimização de desempenho paralelo deve ser melhor explorada, por exemplo, utilizando uma versão somente com MPI ou dividindo-se o domínio de forma que cada processador execute a convolução somente no seu subconjunto de dados, minimizando assim a comunicação entre processadores. Agradecimentos: C. A. W. agradece o apoio da Fapesp via Projeto Temático 2000/06770-2. tc o n v x N P ro c 3 ,0 0 M (2 5 6 ,2 5 6 ) 2 ,5 0 M (5 1 2 ,5 1 2 ) 2 ,0 0 t(s) em [3]. Entretanto, a aplicação dessa técnica não proporcionou uma comunicação mais eficiente entre os nós no cálculo de uma matriz transposta, como ilustrado na Figura 2, que apresenta uma comparação entre os resultados das duas implementações para matrizes de dimensão 512 por 512. t(s) Este trabalho propõe uma estratégia de otimização de desempenho para o software de produção de mapas da Radiação Cósmica de Fundo em Microondas (RCFM) [1], onde se busca a minimização do tempo de processamento utilizando uma arquitetura paralela de memória distribuída. Inicialmente, um código desenvolvido em Fortran foi portado para Fortran 90 e HPF (High Performance Fortran), em uma implementação baseada em paralelismo de dados. O código foi convenientemente dividido em trechos e foi instrumentado para prover informações dos tempos de execução de cada trecho. A análise dos tempos de execução mostrou um “gargalo” de desempenho nas rotinas que implementam a convolução de matrizes, que emprega um algoritmo FFT (Fast Fourier Transform) bidimensional [2]. Isso se deve à comunicação gerada pela dependência de dados entre os processadores, uma vez que no algoritmo FFT, a matriz de convolução deve ser transposta. Essa operação mostrou-se pouco eficiente quando se utiliza o HPF, como ilustrado na Figura 1, utilizando-se uma máquina paralela de memória distribuída de 16 processadores de arquitetura IA32. M (1 0 2 4 ,1 0 2 4 ) 1 ,5 0 1 ,0 0 0 ,5 0 0 ,0 0 0 4 8 12 16 20 N P ro c Figura l: Tempos da convolução paralela de matrizes para diferentes dimensões e número de processadores. Em busca de melhor desempenho, a rotina FFT foi reescrita utilizando HPF e chamadas à biblioteca de comunicação por troca de mensagens MPI (Message Passing Interface), que permite paralelismo de dados e tarefas. O uso de MPI para melhorar o desempenho do HPF havia sido proposto Referências [l] M. Tegmark, How to make maps from CMB data without losing information, The Astrophysical Journal Letters, 480 (1997) L87-L90. [2] I. Foster, "Designing and Building Parallel Programs", Addison-Wesley Publishing Company, Reading, 1995. [3] I. Foster, D. R. Kohr Jr., R. Krishnaiyer, A. Chouldhary, Double Standards: bringing task parallelism to HPF via the Message Passing Interface, em "Supercomputing Technical Papers", 1996. 543