25
Refactoring the UrQMD Model for Many-Core Architectures Mathias Radtke Semiar: Softwaretechnologie (WS 2013/2014 Goethe-Universität Frankfurt

Refactoring the UrQMD Model for Many -Core Architectures

  • Upload
    gavan

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Refactoring the UrQMD Model for Many -Core Architectures. Mathias Radtke Semiar : Softwaretechnologie (WS 2013/2014 Goethe- Universität Frankfurt. Agenda: UrQMD CPU Vs. GPU Von FORTRAN zu C++/ OpenCL Ergebnisse Schlusswort. UrQMD - PowerPoint PPT Presentation

Citation preview

Refactoring the UrQMD Model for Many-Core Architectures

Refactoring the UrQMD Model for Many-Core Architectures Mathias Radtke

Semiar: Softwaretechnologie (WS 2013/2014Goethe-Universitt Frankfurt

Agenda:

UrQMD

CPU Vs. GPU

Von FORTRAN zu C++/OpenCL

Ergebnisse

Schlusswort

UrQMDAbkrzung fr Ultra relativistic Quantum Molecular Dynamics Physikalisches Modell zur Beschreibung des Transports, der Kollision, der Streuung und des Verfalls von KernteilchenVor fast 20 Jahren implementiert in FORTRAN 77 und immer weder erweitertCodedesign und Effizienz von geringem InteresseGroteil der Berechnungen verwendet fr relativistisch hydrodynamischen Verhalten von Kernteilchen (SHASTA)SHASTA ist rein sequentiellUrQMD ist eine groe Sammlung von physikalischen Formeln in implantierter Form

UrQMDNeue Erkenntnisse werden mit UrQMD gewonnen und implementiertErgebnisse aus Experimenten werden in UrQMD hinzugefgtEin stetiger Kreislauf entsteht

UrQMDTrotz des Alters ein wertvolles Programm fr die PhysikKeine neue Softwaretechnologie und kaum neue Hardwaretechnologie seit ImplementierungFORTRAN:ProblemorientiertKeine globalen Variablen, common blocks als Ersatzgoto-Anweisungen, der weltberhmte Spaghetti-CodeKaum Untersttzung von ParallelittEs gibt Erweiterungen um FORTAN auf HPCs zu benutzenNicht Sinn der SacheRefactoringtool f2c empfehlenswert, nur simpelste AnweisungenExperte leistet bessere Arbeit

UrQMDZIEL:UrQMD an neue Soft- und Hardwaretechnologie anpassenC++/OpenCL auf CPUs und GPUsUrQMD muss gleiche Ergebnisse liefern wie unter FORTRANVerbesserte Leistung kaum noch ber Taktraten mglich

2. CPU Vs. GPU (Ochsen gegen Hunde)CPUs haben ausgeklgelte ParallelittBranch-PredictionPipeliningMultithreadsOut-of-Order-ExecutionGPUs sind ArbeitsmaschinenMehr als 1000 Prozessoren (AMD Radeon HD 7970, 2048 Streamprozessoren)Takt von ca. 1GHz4 Threads pro Streamprozessor, 250MHz / ThreadIdeal fr Fliekommaberechnung

2. CPU Vs. GPU (Ochsen gegen Hunde)SpeicheranbindungDDR3-2133, 17,066GByte/s (peak) 1128GB im Desktop Rechner mglich, 256GB im Server-Blade

GDDR5, 576 Gbyte/s (peak), AMD Radeon 7990 26GB, keine Erweiterung mglichDaten mssen entweder in/aus den/m Hauptspeicher oder Daten mssen verkleinert werden

1 http://www.elektronik-kompendium.de/sites/com/1312291.htm2 http://www.pc-erfahrung.de/fileadmin/php-skripte/grafikrangliste_info.php?ID=355&ARCH=02. CPU Vs. GPUZiel:Symbiose zwischen CPU und GPUVorteile beider Architekturen miteinander arbeiten lassenOpenCL bietet diese MglichkeitErweiterbar auf verwendete CPU/GPUNachteil: Portabilitt leidetNVIDIA CUDA verwendet nur NVIDIA Hardware, OpenCL hingegen alle Hersteller

3. Fortran zu C++/OpenCLSHASTA am zeitaufwendigstenIdeal fr das RefactoringRealisierung in zwei SchrittenEin Hybrid aus FORTRAN und C++ wird erstellt.FORTRAN Routinen und C++-Funktionen

Vollstndige C++ Version mit allen Eigenschaften der FORTRAN-Version

C++-Version wird vollstndig in OpenCL berfhrt3. Fortran zu C++/OpenCLStolpersteine sind vorhandenKeine Klassen auf GPUsKernel-Orchestrierung, Bufferablauf und Queue in einer KlasseEinige Klassen aus SHASTA ausgelassen, der Algorithmus arbeitet dennoch wie er soll (changegrid)

Der Hybrid:Mischung aus FORTRAN-Routinen und C++-FunktionenTest fr numerische GleichungenVerhalten von SHASTA nachgeahmt

3. Fortran zu C++/OpenCLDie C++-Version kann verschiedene Parameter zum Start als Eingabe annehmenZeit, Eingabedateien und Partikelzustand

Konstruktor in C++ kmmert sich um die Eingabeparameter

FORTRAN-Version greift mehrmals auf Massenspeicher zu und beinhaltet VerzweigungenVerlngerung der Laufzeit

3. Fortran zu C++/OpenCL

3. Fortran zu C++/OpenCL

3. Fortran zu C++/OpenCLDie Erstellung des Hybriden wurde stetig KontrolliertJede neue Methode wurde direkt auf Funktionalitt geprft, sodass kein falsches Ergebnis abhngige Berechnungen verflscht.Tests und Refactoring von Hand durchgefhrtC++ und FORTRAN behandeln mathematische Gleichungen nicht gleich, Ergebnisse unterscheiden sich leichtC-SHASTA (C++/OpenCL-Version) Berechnet tausende von Datenstrmen, ein guter Datenfluss ist notwendigSo viele Daten wie mglich parallel Berechnen bevor ein sequentieller Teil kommt3. Fortran zu C++/OpenCL

3. Fortran zu C++/OpenCLGrafische Ausgabe ber ein 3D-Gitter mit 8Mio ZellenIm Worst-Case 8Mio Informationen Berechnen und grafisch ausgebenGPUs haben weniger Speicher als die CPUVerringerung der zu speichernden InformationenWir rechnen in einem 1D-ArrayViel mehr Berechnungen notwendig, aber:Geringerer SpeicherbedarfErgebnisse schneller vorhanden

C-SHASTA ist erweiterbar mittels ModulenKeine nderung im Code ntig4. ErgebnisseC-SHASTA wurde auf folgender Hardware getestetNVIDIA Tesla C1060AMD Radeon HD 5870AMD Radeon HD 7970AMD Opteron 6172 (24 Cores)Die Meisten Berechnungen wurde auf dem LOEWE-CSC gerechnetErgebnisse wurden mit realistischen Daten gerechnetTests:Au-Au Kollision (Goldpartikel)Eine expandierende Kugel mit r=2fm (1fm = 10-15m) 4. ErgebnisseAu-Au-Kollision

4. ErgebnisseAu-Au-KollisionLaufzeit:

FORTRAN: 75Min

AMD Radeon HD 5870: 30 Sekunden (Faktor 160)

AMD Radeon HD 7970: weniger als 10 Sekunden (Faktor 460)4. ErgebnisseAu-Au-Kollision

4. ErgebnisseAu-Au-Kollision

4. ErgebnisseExpandierende Kugel mit r = 2fm

4. ErgebnisseExpandierende Kugel mit r = 2fm

5. SchlusswortRefactoring im Rahmen einer Dissertation angefertigtNur ein Teil von UrQMD, bentigte aber die meiste RechenzeitEnorm gesteigerte Laufzeit, Faktor 460 im besten Fall