Skip to content

Paralel Fraktal Görüntüleyici

C/C++ Python CUDA OpenMP MPI PyQt5

GitHub


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