diff --git a/README.md b/README.md index 14ef91b0b94b001ccfc998971ee3a3ab7b2d1c78..afe4913081bf45fa0029ab4fb1dce61b4edac39a 100644 --- a/README.md +++ b/README.md @@ -3,14 +3,14 @@ Dieses Projekt implementiert und vergleicht drei graphbasierte Pfadfindungsalgorithmen (Dijkstra, A\* und ALT) unter Verwendung paralleler Verarbeitung mit OpenMP für CPU-Parallelisierung und CUDA für GPU-Beschleunigung. -## Projektübersicht +## 1. Projektübersicht ---------------- Das Projekt vergleicht die Leistung von: * **Dijkstra-Algorithmus**: Klassischer Kürzeste-Wege-Algorithmus -* **A* (A-Stern)**: Heuristikbasierter Pfadfindungsalgorithmus -* **ALT (A, Landmarks und Dreiecksungleichung)**: Fortgeschrittene Variante von A* mit Landmarken +* **A-Stern-Algorithmus**: Heuristikbasierter Pfadfindungsalgorithmus +* **ALT-Algorithmus (A, Landmarks und Dreiecksungleichung)**: Fortgeschrittene Variante von A* mit Landmarken Jeder Algorithmus wird in drei Versionen implementiert: @@ -18,7 +18,7 @@ Jeder Algorithmus wird in drei Versionen implementiert: 2. Parallel mit OpenMP (CPU Multi-Thread) 3. Parallel mit CUDA (GPU-beschleunigt) -## Projektstruktur +## 2. Projektstruktur ---------------- ```mermaid @@ -86,7 +86,7 @@ classDiagram ``` -## Voraussetzungen +## 3. Voraussetzungen --------------- * Qt 5.x oder höher (qtbase5-dev für Qt5 oder qt6-base-dev für Qt6) @@ -95,7 +95,7 @@ classDiagram * CUDA Toolkit 12.8 (installiert in /usr/local/cuda-12.8) * NVIDIA GPU mit Compute Capability 7.5 oder höher (Turing-Architektur oder neuer) -## Projekt kompilieren +## 4. Projekt kompilieren ------------------- ### Umgebungseinrichtung @@ -124,13 +124,16 @@ Führen Sie die kompilierte Binärdatei aus: ```bash ./pth ``` - +Für Windows: +```bash +./pth.exe +``` Das Programm führt Leistungstests durch, die die drei Algorithmen über verschiedene Implementierungen hinweg vergleichen und die Ergebnisse ausgeben. ## Implementierungsdetails ----------------------- -### Graphgenerierung +### 1. Graphgenerierung Das Projekt verwendet synthetische Graphen für Tests, die mit kontrollierbaren Parametern wie folgenden generiert werden: @@ -139,7 +142,7 @@ Das Projekt verwendet synthetische Graphen für Tests, die mit kontrollierbaren * Kantengewichtsverteilung * Landmarkenauswahl -### Leistungstests +### 2. Leistungstests Das performancetest-Modul bietet Funktionalitäten zum: @@ -148,14 +151,14 @@ Das performancetest-Modul bietet Funktionalitäten zum: * Messen und Vergleichen der Ausführungszeiten * Berechnen von Beschleunigungsfaktoren -### CUDA-Implementierung +### 3. CUDA-Implementierung Die CUDA-Implementierung nutzt: * CUDA-Streams für gleichzeitige Kernel-Ausführung * Shared-Memory-Optimierung für bessere Speicherzugriffsmuster -### OpenMP-Implementierung +### 4. OpenMP-Implementierung Die OpenMP-Implementierung verwendet: @@ -163,7 +166,7 @@ Die OpenMP-Implementierung verwendet: * Dynamische Scheduling für Lastausgleich * Aufgabenbasierte Parallelität wo angemessen -## Konfiguration +## 5. Konfiguration ------------- Die wichtigsten Leistungsparameter können im Code konfiguriert werden: @@ -172,7 +175,7 @@ Die wichtigsten Leistungsparameter können im Code konfiguriert werden: * Anzahl der OpenMP-Threads * Testwiederholungen für statistische Signifikanz -## Leistungsanalyse +## 6. Leistungsanalyse ---------------- Die Leistung wird über Implementierungen hinweg gemessen und verglichen, basierend auf: