Skip to content
Snippets Groups Projects
Commit 7ee08d5a authored by El Mehdi Bakri's avatar El Mehdi Bakri
Browse files

Edit README.md

parent 027eb143
Branches main
No related tags found
No related merge requests found
......@@ -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:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment