Automatische Parallelisierung
Der ParallelizationAnalyzer analysiert automatisch Datenabhängigkeiten und parallelisiert Code für maximale Performance auf modernen Multi-Core-Systemen und GPUs.
Architektur des Analyzers
Der `ParallelizationAnalyzer` ist ein integraler Bestandteil der VelinScript-Compiler-Pipeline (Pass 6). Er erkennt unabhängige Operationen und wählt die optimale Strategie für die Ausführung.
Erstellt einen Graphen aller Datenabhängigkeiten, um sicherzustellen, dass parallele Ausführung die Programmlogik nicht verändert.
Wählt basierend auf Heuristiken zwischen Multithreading, GPU-Acceleration, Async-Parallelismus oder SIMD.
Parallelisierungs-Strategien
Async Parallelism
Automatische Bündelung von unabhängigen `await`-Aufrufen in I/O-lastigen Szenarien.
// Der Compiler erkennt unabhängige Aufrufe
async fn loadDashboard() {
let user = await getUser();
let stats = await getStats();
let config = await getConfig();
return { user, stats, config };
}
// Wird automatisch transformiert zu:
// let (user, stats, config) = tokio::join!(getUser(), getStats(), getConfig());Performance-Benchmarks
| Operation | Sequentiell | Parallel | Speedup |
|---|---|---|---|
| Matrix (1k x 1k) | 500ms | 5ms (GPU) | 100x |
| I/O (10 API-Calls) | 1000ms | 105ms (Async) | 9.5x |
| Array Sum (1M) | 100ms | 12ms (SIMD) | 8x |
Manuelle Steuerung: @Optimize
Obwohl der Compiler meist die beste Wahl trifft, kannst du mit dem `@Optimize`-Decorator explizit Strategien erzwingen oder deaktivieren.
@Optimize(target="gpu") // Erzwingt GPU-Nutzung
@Optimize(target="simd") // Nutzt SIMD-Vektorisierung
@Optimize(target="async") // Parallelisiert await-Aufrufe
@Optimize(target="thread") // Nutzt Multithreading
@Optimize(target="none") // Deaktiviert alle Optimierungen