Amdahl Kanunu nedir? Detayli aciklama yapabilirmisiniz.
Amdahl Kanunu, paralel işlemciler kullanıldığında elde edilebilecek maksimum hızlanmanın, programın paralelleştirilemeyen (serileşen) kısmı tarafından sınırlandırıldığını söyler; matematiksel olarak hızlanma S(N) = \dfrac{1}{(1-P) + \dfrac{P}{N}} şeklindedir (burada P paralelleştirilebilen oran, N işlemci sayısıdır). Kanun, işlemci sayısı arttıkça kazancın azalan getirilerle sınırlanacağını ve \lim_{N\to\infty} S(N) = \dfrac{1}{1-P} ile maksimum hızlanmanın paralel olmayan kısmın tersi ile sınırlı olduğunu gösterir.
Açıklama ve çıkarımlar
- Tanım: Programın toplam çalışma süresinin bir kısmı paralel çalıştırılabilir (oran P), geri kalan kısmı ise mutlaka seri çalışır (oran 1-P). Amdahl Kanunu bu iki parçanın birleşimini analiz eder.
- Formül: S(N) = \dfrac{1}{(1-P) + \dfrac{P}{N}} . Burada
- S(N): N işlemci ile elde edilen göreli hızlanma (tek işlemciye göre),
- P: paralelleştirilebilen kodun payı (0 ile 1 arası),
- N: paralel birim (işlemci) sayısı.
- Limit: İşlemci sayısı sonsuza giderse seri kısmın sınırı nedeniyle maksimum hızlanma S_{\max} = \dfrac{1}{1-P} olur; örn. P=0{,}9 ise S_{\max}=10.
- Örnek sayısal hesap:
- P=0{,}9, N=10 için S(10)=\dfrac{1}{0{,}1 + 0{,}9/10} = \dfrac{1}{0{,}19} \approx 5{,}26 .
- Aynı P için işlemci sayısını sonsuza çıkarırsak hızlanma 10’u aşamaz.
- Neden önemli: Amdahl, paralelleştirmeye harcanan çabanın getirilerini ve hangi parçaların seri kalmasının sistem performansını nasıl sınırladığını gösterir. Bu da optimizasyon önceliklerini (seri kısmı küçültme) belirlemede yardımcı olur.
Uygulama ve sınırlamalar
- Varsayımlar: Sabit iş yükü (fixed problem size), paralelleştirilen kısım ideal şekilde bölünebilir ve iletişim/koordine maliyetleri ihmal edilebilir.
- Gerçek dünyada: İletişim gecikmeleri, senkronizasyon, yük dengesizliği, bellek/önbellek sınırları gibi ek maliyetler Amdahl’ın verdiğinden daha düşük hızlanmalara yol açar.
- Alternatif görüş: Gustafson Kanunu (Gustafson’s Law) sabit zaman içerisinde problem boyutunun büyüdüğünü varsayar; bu durumda paralel süreçlerin faydası daha büyük gözükebilir — yani ölçeklendirilebilir problemlerde Amdahl’ın sınırlayıcılığı daha az kritik olabilir.
Hedef hızlanma için gerekli işlemci sayısını hesaplama
- Hedef S için N şu şekilde bulunur:
N = \dfrac{P}{\dfrac{1}{S} - (1-P)} (burada payda pozitif olmalı; aksi halde hedef S mümkün değildir). - Örnek: P=0{,}95 ve hedef S=15 ise N = \dfrac{0{,}95}{1/15 - 0{,}05} \approx \dfrac{0{,}95}{0{,}006667} \approx 142{,}5 → yaklaşık 143 işlemci gerekir.
Küçük bir hesaplama örneği (Python)
Aşağıdaki kod, farklı N değerleri için hızlanmayı hesaplar ve gösterir.
# Hızlanmayı hesaplayan küçük örnek fonksiyon
def amdahl_speedup(P, N):
return 1.0 / ((1.0 - P) + P / N)
P = 0.9
for N in [1, 2, 4, 8, 16, 32, 64, 128]:
print(f"N={N:3d}, S={amdahl_speedup(P,N):.4f}")
Ne yapmalısınız (pratik öneriler)
- Seri kısmı tespit edip azaltın (algoritma değişiklikleri, hesaplamaların yeniden düzenlenmesi).
- Paralel overhead (iletişim, senkronizasyon) azaltılmaya çalışılmalı.
- Problem boyutunu (iş yükünü) artırma seçeneği varsa Gustafson perspektifinden değerlendirin.
- Benchmark yapın; teorik Amdahl tahminleri ile gerçek ölçümler arasındaki farkı analiz edin.
Terimler
- Amdahl Kanunu: Paralel işlemde toplam hızlanmanın paralel olmayan kısmın sınırlandırdığı ilke; hızlanma formülü S(N) = \dfrac{1}{(1-P) + \dfrac{P}{N}} .
- Gustafson Kanunu: Sabit zaman sınırında problem boyutu büyüdüğünde paralelleştirme kazancının artacağını savunan karşı yaklaşım.
- Paralel oran (P): Programın paralelleştirilebilen bölümünün toplam zamana oranı.
- Seri oran: Programın paralelleştirilemeyen bölümünün (1 − P) şeklinde ifade edilen oranı.
- Speedup (Hızlanma): Paralel sistem kullanılarak elde edilen göreli hızlanma, genelde tek işlemci ile karşılaştırma olarak tanımlanır.
İsterseniz kendi uygulamanızın P değerini ve gerçekçi iletişim/overhead etkilerini verin; buna göre örnek hesaplama ve hangi parçaları optimize etmeniz gerektiğine dair somut öneriler hazırlayayım.