# Paralellik

Adres: https://softwaredictionary.org/tr/terimler/parallelism
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-10-03
İngilizcesi: Parallelism
Okunuşu: perılelizım

Kısaca: Paralellik, birkaç hesaplamayı birden çok CPU çekirdeğinde, GPU'da ya da makinede gerçekten aynı anda çalıştırmaktır; böylece büyük bir iş daha hızlı biter.

## Programlamada paralellik (parallelism) nedir?

Günümüz bilgisayarlarının çok sayıda çekirdeği, bir GPU'nun da binlerce küçük çekirdeği vardır. Paralel kod işi bunların aynı anda çalışacağı şekilde böler: bin görüntüyü sekiz çekirdekte yeniden boyutlandırmak ya da bir sinir ağının içindeki büyük matrisleri bir GPU'da çarpmak gibi. Veri paralelliği aynı işlemi verinin farklı parçalarına uygular; görev paralelliği ise farklı görevleri aynı anda çalıştırır.

Çoğu dil bunun için araçlar sunar. Java, C#, Go, Rust ve C++'ta thread'ler paralel çalışabilir. Python'da standart CPython yorumlayıcısının global yorumlayıcı kilidi (GIL) uzun zamandır aynı anda yalnızca tek bir thread'in Python kodu çalıştırmasına izin verir; bu yüzden CPU yoğun işler `multiprocessing` ya da `concurrent.futures` üzerinden ayrı süreçler kullanır; yine de yeni sürümler GIL'siz deneysel bir derleme sunuyor.

Hızlanmanın sınırları vardır. 1967'den gelen Amdahl yasası, programın sırayla çalışması gereken kısmının toplam kazancı sınırladığına dikkat çeker: işin onda biri paralelleştirilemiyorsa, hiçbir çekirdek sayısı onu on kattan fazla hızlandıramaz. İşi bölmek, veriyi taşımak ve sonuçları birleştirmek de zaman alır; bu yüzden küçük işler paralelleştirildiğinde yavaşlayabilir.

Sık yapılan bir yanlış, paralellik ile eşzamanlılığın (concurrency) aynı şey olduğunu düşünmektir. Eşzamanlılık, bir programı aynı anda birçok işle ilgilenecek şekilde yapılandırmaktır; görevler arasında geçiş yaparak tek bir çekirdekte bile işler. Paralellik ise birkaç şeyi gerçekten aynı anda yapmaktır ve birden fazla işlemci gerektirir.

## Önemli noktalar

- Paralellik, hesaplamaları birden fazla işlemcide aynı anda çalıştırır.
- Veri paralelliği veriyi böler; görev paralelliği farklı görevleri çalıştırır.
- CPU yoğun Python işleri GIL yüzünden genellikle süreçler kullanır.
- Amdahl yasası: sıralı kısım en yüksek hızlanmayı sınırlar.
- Eşzamanlılık yapıyla, paralellik eşzamanlı yürütmeyle ilgilidir.

## Örnek: CPU yoğun bir iş için bütün çekirdekleri kullanmak (Python)

```python
from concurrent.futures import ProcessPoolExecutor
import math

def count_primes(limit):
    return sum(1 for n in range(2, limit) if all(n % d for d in range(2, math.isqrt(n) + 1)))

chunks = [200_000] * 8

if __name__ == "__main__":
    # Each chunk runs in its own process, so all cores work at the same time
    with ProcessPoolExecutor() as pool:
        results = list(pool.map(count_primes, chunks))
    print(sum(results))
```

## Sık sorulan sorular

**Eşzamanlılık (concurrency) ile paralellik arasındaki fark nedir?**

Eşzamanlılık, birden çok görevi örtüşen zamanlarda, gerekirse tek bir çekirdekte aralarında geçiş yaparak ele almaktır. Paralellik ise birden çok görevi birden çok çekirdekte aynı anda yürütmektir. Kod paralel olmadan eşzamanlı olabilir.

**Paralel kod her zaman daha mı hızlı çalışır?**

Hayır. İşi bölmek ve sonuçları birleştirmek zaman alır, sıralı kısım hızlandırılamaz, paylaşılan veri de koordinasyon ister. Küçük ya da I/O ağırlıklı işlerde paralellik çok az fayda sağlayabilir ya da hiç sağlamayabilir.

**GPU'lar paralellikte neden iyidir?**

Bir GPU'da, aynı işlemi aynı anda birçok veri parçası üzerinde çalıştırmak için tasarlanmış binlerce basit çekirdek vardır. Bu grafiklere, matris hesaplarına ve sinir ağı eğitimine çok iyi uyar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
