Um processo otimizado de produção de mapas da radiação cósmica de fundo em microondas - José Oscar Fernandes (2003)
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), 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 High Performance Fortran (HPF), em uma implementação baseada em paralelismo de dados, sendo executado em uma arquitetura paralela de memória compartilhada. 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, o que é feito por um algoritmo Fast Fourier Transform (FFT) bidimensional. Esta rotina é a maior consumidora de tempo de CPU devido à distribuição de dados entre os processadores. No algoritmo FFT, a matriz de convolução deve ser transposta. Tipicamente, um bloco de colunas desta matriz é atribuído a cada processador, mas no cálculo da matriz transposta, blocos de linhas da mesma matriz devem ser lidos. Isto é claramente, uma operação pouco eficiente quando se utiliza o HPF. A rotina FFT foi portada para Message Passing Interface (MPI), combinando paralelismo de dados e tarefas. A arquitetura paralela de memória distribuída utilizada é um beowulf cluster de 16 nós, sendo cada nó um computador Linux IA-32. O uso de MPI para melhorar o desempenho do HPF foi proposto por Foster et al. em ?Double standards: bringing task parallelism to HPF via the Message Passing Interface? e foi utilizado em uma rotina 2D-FFT com o objetivo de proporcionar uma comunicação mais eficiente entre os nós no cálculo de uma matriz transposta. Este trabalho apresenta as avaliações do método utilizado, que pode ser aplicado a outras rotinas consumidoras de tempo de CPU. A análise dos tempos de execução fornece indícios para se conseguir um melhor balanceamento de carga e menor tempo de comunicação entre os nós.