Skalierbarkeit der Fast Fourier Transformation (FFT)

12

Um die schnelle Fourier-Transformation (FFT) für gleichmäßig abgetastete Daten zu verwenden, z. B. in Verbindung mit PDE-Solvern, ist es bekannt, dass die FFT ein ) -Algorithmus ist. Wie gut ist die FFT-Skalierung bei paralleler Verarbeitung für n (dh sehr groß)?O(nlog(n)n

Allan P. Engsig-Karup
quelle
1
Ich bin ein wenig verwirrt. Sprechen Sie darüber, wie die Ausführungszeit für eine feste Anzahl von Prozessoren mit zunehmender Anzahl von Datenpunkten skaliert, wie die Ausführungszeit für eine feste Anzahl von Datenpunkten mit zunehmender Anzahl von Prozessoren skaliert oder wie die Ausführungszeit für a festes Verhältnis der Datenpunkte pro Prozessor bei steigender Anzahl der Datenpunkte?
Geoff Oxberry
Sowohl schwache als auch starke Skalierung.
Allan P. Engsig-Karup

Antworten:

8

Dies ist eher ein anekdotischer Beweis als ein nachgewiesener Beweis, aber es scheint, dass vorhandene Implementierungen für FFTs , wie z. B. FFTW , ihre Skalierbarkeit einschränken.

Als wir damit begannen, LAMMPSs Raum-Löser in sehr großen Systemen ( O ( 10 7 ) Atome) einzusetzen , stellten wir fest, dass die Skalierung fortgesetzt wurde, solange wir die Anzahl der Prozessoren so klein halten konnten, dass sie auf ein Rack passen . Sobald wir versuchten, weiter zu expandieren (über 4K-Prozessoren, je nach Maschine), brach die Skalierung zusammen - anscheinend, weil die Kommunikationskosten für das Verschieben von Daten zwischen den Prozessoren zu hoch wurden, um die Skalierung aufrechtzuerhalten. [Um dieses Problem zu umgehen, wurde kürzlich die Möglichkeit eingeführt, der FFT-Berechnung eine bestimmte Partition der Prozessorzuordnung zuzuweisen.]kÖ(107)

Aber die Botschaft zum Mitnehmen ist hier, dass FFT skaliert werden sollte; Manchmal treten jedoch unerwartete Einschränkungen und Interaktionen auf, wenn man von der theoretischen Betrachtung der Leistung eines Algorithmus zu seiner praktischen Implementierung auf einer tatsächlichen HPC-Plattform übergeht.

aeismail
quelle
6

Ö(n)

Jed Brown
quelle
5

ndd

Die Suche nach "paralleler FFT" oder "pseudospektraler Skalierbarkeit" in Google Scholar liefert eine Fülle von Informationen, die ich nicht beurteilen kann. Dies scheint jedoch ein schönes aktuelles Beispiel dafür zu sein, was in der Praxis erreicht werden kann:

Ein hybrides MPI-OpenMP-Schema für skalierbare parallele pseudospektrale Berechnungen für Fluidturbulenzen

Abstrakt:

Es wird ein Hybridschema vorgestellt, das MPI für die Parallelität des verteilten Speichers und OpenMP für die Parallelität des gemeinsam genutzten Speichers verwendet. Die Arbeit ist motiviert durch den Wunsch, außergewöhnlich hohe Reynolds-Zahlen bei pseudospektralen Berechnungen von Fluidturbulenzen auf neuen petascalen, massiv parallel verarbeitenden Systemen mit hoher Kernanzahl zu erzielen. Die Hybrid-Implementierung basiert auf einem bewährten skalierbaren MPI-parallelisierten Pseudospektralcode und erweitert diesen. Das hybride Paradigma führt zu einem neuen Bild für die Domänenzerlegung der Pseudospektralgitter, das unter anderem zum Verständnis der 3D-Transponierung der globalen Daten beiträgt, die für die parallelen schnellen Fourier-Transformationen erforderlich sind, die die zentrale Komponente von sind numerische Diskretisierungen. Einzelheiten zur Hybridimplementierung werden zur Verfügung gestellt. und Leistungstests veranschaulichen die Nützlichkeit der Methode. Es wird gezeigt, dass das Hybridschema eine nahezu ideale Skalierbarkeit bis zu ~ 20000 Rechenkernen mit einem maximalen mittleren Wirkungsgrad von 83% erreicht. Es werden Daten vorgestellt, die zeigen, wie die optimale Anzahl von MPI-Prozessen und OpenMP-Threads ausgewählt werden kann, um die Codeleistung auf zwei verschiedenen Plattformen zu optimieren.

David Ketcheson
quelle
1

Wenn Sie eine unendliche Anzahl von Prozessoren haben, kann die DFT in bestimmt werden Ö(n) Zeit.

Im naiven Algorithmus können Sie jeden Ausgabepunkt auf einen separaten Knoten legen und diesen Fourier-transformierten Punkt in berechnen Ö(Logn)Zeit. Jeder schnelle Algorithmus sollte in der Lage sein, diese Skalierung zumindest zu erreichen.

Sie müssen jedoch auch alle fouriertransformierten Punkte in einem Array sammeln, was dauert Ö(n) Zeit.

Dan
quelle
1
Es gibt eine beträchtliche Menge an Kommunikation in der FFT, aber es ist sicherlich nicht notwendig (oder wünschenswert), das Ergebnis auf einem einzelnen Knoten zu sammeln. Eine sehr häufige Verwendung von FFT ist die direkte numerische Simulation von Turbulenzen, bei der der nichtlineare Konvektionsterm im Realraum angewendet wird, während der Rest der Simulation im Fourierraum durchgeführt wird. Dies erfordert nachdrücklich keine Serialisierung des Ergebnisses. Im Allgemeinen sollten beim parallelen Rechnen "große" Daten immer in verteilter Form gespeichert und analysiert werden.
Jed Brown