Para usar a Fast Fourier Transform (FFT) em dados de amostra uniforme, por exemplo, em conexão com os solucionadores de PDE, é sabido que a FFT é um algoritmo ). Quão bem a escala FFT é processada em paralelo para (isto é, muito grande)?n → ∞
pde
fftw
fourier-analysis
Allan P. Engsig-Karup
fonte
fonte
Respostas:
Isso é mais uma evidência anedótica do que uma prova demonstrada, mas parece que as implementações existentes para FFTs, como a FFTW , têm um limite para sua capacidade de dimensionamento.
Quando começamos a usar os resolvedores de espaço LAMMPS em sistemas muito grandes ( átomos), descobrimos que o dimensionamento continuava, desde que pudéssemos manter o número de processadores pequeno o suficiente para que eles pode caber em um rack. Assim que tentamos expandir ainda mais (acima dos processadores 4K, dependendo da máquina), a escala quebrou - aparentemente porque os custos de comunicação para enviar dados entre os processadores se tornaram muito grandes para manter a escala. [Recentemente, para contornar esse problema, eles introduziram a capacidade de dedicar uma certa partição da alocação do processador ao cálculo da FFT.] O ( 10 7 )k O ( 107)
Mas a mensagem para levar para casa aqui é que a FFT deve aumentar; no entanto, às vezes existem limitações e interações inesperadas que entram em jogo quando se passa da consideração teórica do desempenho de um algoritmo para sua implementação prática em uma plataforma HPC real.
fonte
O método multipolar rápido (FMM) é e possui requisitos de comunicação muito mais baixos, portanto, fornece uma transformada de Fourier discreta e altamente escalável. Edelman, McCorquodale e Toledo (1999) O Futuro Transformar Rápido de Fourier? analise essa abordagem e conclua que o FMM seria preferível ao FFT convencional em larga escala. Observe que o FMM é apenas aproximado; portanto, as constantes são piores se você precisar de uma precisão muito alta. Agradecemos a Jack Poulson por apontar isso em uma discussão na semana passada.O ( n )
fonte
No contexto das PDEs, é importante reconhecer que o valor de para uma 1D FFT necessária normalmente cresce como a ésima raiz do número total de pontos da grade, onde a dimensionalidade é mais frequentemente 3.d dn d d
Procurar por "FFT paralelo" ou "escalabilidade pseudoespectral" no Google Scholar gera uma riqueza de informações que não estou qualificado para avaliar. Mas este parece ser um bom exemplo recente do que pode ser realizado na prática:
Um esquema híbrido MPI-OpenMP para cálculos pseudoespectrais paralelos escaláveis para turbulência de fluidos
Abstrato:
fonte
Se você possui um número infinito de processadores, a DFT pode ser determinada em tempo.O(n)
No algoritmo ingênuo, você pode colocar cada ponto de saída em um nó separado e calcular esse ponto transformado de fourier no tempo . Qualquer algoritmo rápido deve conseguir pelo menos corresponder a essa escala.O(logn)
No entanto, você também precisa coletar todos os pontos transformados de quatro camadas em uma matriz, o que leva tempo .O(n)
fonte