Paralel Fraktal Görüntüleyici¶
C/C++ Python CUDA OpenMP MPI PyQt5
Problem¶
Fraktal görüntüleme utanç verici derecede paraleldir — her piksel bağımsız olarak hesaplanabilir. Bu, paralelleştirme stratejilerini karşılaştırmak için mükemmel bir kıyaslama sağlar. Soru şudur: CPU iş parçacığı, GPU hesaplama ve dağıtık hesaplama aynı yoğun hesaplama görevine uygulandığında nasıl karşılaştırılır?
Yaklaşım¶
Bu proje, üç farklı paralelleştirme paradigması kullanarak Mandelbrot ve Julia kümesi görüntüleyicileri uygular ve aynı matematiksel problem üzerinde performans özelliklerinin doğrudan karşılaştırmasını sağlar.
OpenMP (CPU Çoklu İş Parçacığı)¶
Paylaşımlı bellekli iş parçacığı kullanarak piksel hesaplama döngüsünü CPU çekirdekleri arasında paralelleştirir. Sıralı versiyondan minimal kod değişikliği — pragmalar iş dağılımını yönetir.
CUDA (GPU Hesaplama)¶
Hesaplamayı GPU'ya aktarır; binlerce CUDA çekirdeği pikselleri masif paralelizmle işler. Her iş parçacığı tek bir pikselin kaçış iterasyonunu hesaplar ve bu hesaplama yoğun görev için verimi maksimize eder.
MPI (Dağıtık Hesaplama)¶
Görüntüleme iş yükünü birden fazla süreç arasında (potansiyel olarak farklı makinelerde) dağıtır. Her süreç fraktalın yatay bir şeridini görüntüler ve sonuçlar kök sürece geri toplanır.
Temel Özellikler¶
- Üç paradigma — OpenMP, CUDA, MPI — aynı problem üzerinde
- Mandelbrot ve Julia kümeleri — yapılandırılabilir parametreler ile
- Performans karşılaştırması — duvar saati süresi, hızlanma, verimlilik metrikleri
- PyQt5 görselleştirmesi — etkileşimli fraktal keşfi için
- Ölçeklenebilirlik analizi — farklı problem boyutları ve çekirdek sayıları arasında
Performans Karşılaştırması¶
| Paradigma | En İyi Kullanım | Ölçeklenebilirlik |
|---|---|---|
| OpenMP | Tek çok çekirdekli makine | Çekirdek sayısı ile sınırlı |
| CUDA | GPU donanımlı sistemler | Masif paralelizm (binlerce çekirdek) |
| MPI | Çoklu makine kümeleri | Ağ üzerinden ölçeklenir |
Mimari¶
graph TD
A[Fraktal Parametreleri] --> B{Paradigma}
B --> C[OpenMP]
B --> D[CUDA]
B --> E[MPI]
C --> F[CPU İş Parçacıkları]
D --> G[GPU Çekirdekleri]
E --> H[Dağıtık Süreçler]
F --> I[Görüntülenen Resim]
G --> I
H --> I
I --> J[PyQt5 Görüntüleyici]
Teknoloji Yığını¶
| Bileşen | Teknoloji |
|---|---|
| CPU Paralelizmi | OpenMP |
| GPU Hesaplama | CUDA |
| Dağıtık | MPI |
| Ana Dil | C/C++ |
| Görselleştirme | Python, PyQt5 |