You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2025-02-10-paralel-programlama.md
+51-34Lines changed: 51 additions & 34 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,16 +13,25 @@ Düşünün ki bir yapay zeka modelini eğitirken kullanılan veri setleri, yaz
13
13
14
14
İşte bu gibi büyük matematiksel işlemleri, meşhur "böl-parça yönet" stratejisiyle, şu filmlerde gördüğümüz devasa veri merkezlerinde, yüzlerce işlemcinin eş zamanlı çalıştığı sistemlerde; hatta kendi bilgisayarımızda oyunların Ray Tracing özelliğinde bile, paralel hesaplama yöntemleriyle işlemciye maliyetli hesaplamaları dağıtarak gerçekleştiriyoruz.
15
15
16
-
Paralel hesaplama, birçok hesaplama veya işlemin aynı anda gerçekleştirilebilmesine imkan sağlayan bir yöntemdir. Görevleri ardışık (sıralı) olarak yerine getirmek yerine, problemi daha küçük, bağımsız (veya yarı-bağımsız) alt görevlere bölerek bunların aynı anda, birden fazla işlem birimi üzerinde çözebilmemizi sağlar.
17
-
18
16
Şimdi paralel hesaplamanın ne olduğu ve nasıl çalıştığına daha yakından bir bakış atalım, diğer blog yazılarından farklı olarak hemen gidip CUDA ve MPI kütüphanelerine giriş yapıyorum ayağıyla kaynak kodundaki örnek kodları bir tur da ben paylaşmadan önce; paralel hesaplamada kullanılan bazı donanımsal, matematiksel ve gerek alt seviyeli gerek üst seviyeli tekniklere değinelim.
19
17
20
18
# Paralel Hesaplama Nedir?
21
19
20
+
Paralel hesaplama, birçok hesaplama veya işlemin aynı anda gerçekleştirilebilmesine imkan sağlayan bir yöntemdir. Görevleri ardışık (sıralı) olarak yerine getirmek yerine, problemi daha küçük, bağımsız (veya yarı-bağımsız) alt görevlere bölerek bunların aynı anda, birden fazla işlem birimi üzerinde çözebilmemizi sağlar.
21
+
22
22
Paralel hesaplamanın tanımı, bir dizi hesaplamayı aynı anda gerçekleştirmek için birden fazla işlemci veya çekirdek kullanmak gibi şeklinde yapılabilir. Bu zamana kadar bilgisayar mühendisliği derslerinde gördüğümüz algoritmalarda, görevler tek tek işlendiği sıralı hesaplamalarla yapılmaktadır. Örneğin, bir grafik üzerinde potansiyel ağırlıkları hesaplamak ya da Dijkstra gibi algoritmalarda dalların kontrolünü sağlamak, sıralı hesaplamada büyük maliyet getirebilir. Bir Djikstra'yı ele alalım, en kısa yol uygulamasında her bir dallanma için en yüksek puanlı dalı seçerek hareket ederiz ancak oldu da yüksek puanlı dallarımız bizim için sonuç elde etmezse geriye dönerek çıkış şansımız bulunan olası diğer yolları tek tek gezeriz. Böyle bir graf üzerinde işlem yaparken eğer her bir dalın potansiyel ağırlığını hesaplamak istersek bu durumda karmaşıklığımız her bir graf için eleman sayısının faktoriyeli ile ifade edilecek. Diyelim ki gerçekten de Djikstra gibi algoritmik yaklaşımlarla çözemeyeceğimiz bir görev var, bu görevde beklenen potansiyel olarak iki nokta arasındaki tüm yolların adımlarının çıkarılması ve yolun toplam ağırlıklarının hesaplaması olsun. Hatta bir ileri adıma taşıyayım bu ikili nokta seçimi de graftaki tüm 2'li nokta kombinasyonları için yapılacak olsun. Bu gibi işlemleri tek bir çekirdekli bir donanımda koşturmak, O(n ^ 2 * n!) karmaşıklığa sahip bir problemi çözmeye çalışmak, veya devasa bir matris üzerinde aynı işlemleri uygulamak sıralı yapıldığı zaman çok büyük bir hesaplama maaliyeti demek.
23
23
24
24
İşte paralel hesaplamada temel amaç, aynı anda birçok işlemi gerçekleştirebilen donanımlardan yararlanarak, hesaplama görevlerini yatay eksende dağıtarak hızlanmayı sağlamaktır. Bu yaklaşım, özellikle sıralı olarak gerçekleştirildiğinde işlem süresi çok uzun olabilecek karmaşık veya büyük ölçekli problemlerin çözümünde hayati öneme sahiptir. İşlemlerin paralelleştirmesi yaklaşımı, özellikle bilimsel simülasyonlar, makine öğrenimi ve veri analitiği gibi uygulamalarda kullanılmaktadır.
25
25
26
+
## Paralel Hesaplamanın Tarihçesi ve Gelişimi
27
+
28
+
İlk bilgisayarlar 1940’lar ve 1950’lerde sıralı hesaplama prensipleriyle çalışıyordu. Fakat hesaplama hızının yetersizliği, 1950’lerden itibaren paralel hesaplama yaklaşımının geliştirilmesine yol açtı.
29
+
Geleneksel bilgisayarlar, 1940’lardan itibaren geliştirilen tek işlemcili sistemlerle, verilen komutları sırayla yürütür. Bu da, her bir komutun tamamlanmasını beklemek anlamına gelir. Seri hesaplama, basit ve lineer işlemler için yeterli olsa da, karmaşık ve büyük ölçekli problemler için yetersiz kalır.
30
+
31
+
İşte 1950’lerde büyük ölçekli problemlerin çözülebilmesi için başlayan bu evrim, problemlerin alt parçalara ayrılarak aynı anda çözümlenmesi fikrini getirdi. 1980’lerde Caltech’in Concurrent Computation projesi ve 1990’larda ASCI Red süper bilgisayarı gibi örnekler, paralel hesaplamanın gücünü ortaya koydu. ASCI Red gibi sistemler, gerçek zamanlı veri işleme ve simülasyonlarda kullanılarak, örneğin uzay mekiği kontrolü gibi kritik görevlerde başarı sağlamıştır.
32
+
33
+
Bugün, çok çekirdekli işlemciler, GPU’lar ve bulut tabanlı dağıtık sistemler sayesinde paralel hesaplama, kişisel cihazlardan süper bilgisayarlara kadar her yerde uygulanmaktadır.
34
+
26
35
# Paralel Hesaplama Nasıl Çalışır?
27
36
28
37
Paralel hesaplama daha önce belirttiğim gibi "böl-parçala-yönet" mantığına benzer olarak 5 aşamalı bir metodoloji getirir.
@@ -80,35 +89,37 @@ Paralel azaltma, bir değerler kümesini tek bir özet değere indirgeme işleml
80
89
81
90
### Örnek: Toplama Azaltma
82
91
83
-
Bir dizi \(\{x_0, x_1, \dots, x_{n-1}\}\) verildiğinde, toplam:
92
+
Bir dizi $$( {x_0, x_1, \dots, x_{n-1}} )$$ verildiğinde, toplam:
93
+
94
+
95
+
$$ S = x_0 + x_1 + \cdots + x_{n-1} $$
84
96
85
-
\[
86
-
S = x_0 + x_1 + \cdots + x_{n-1}.
87
-
\]
88
97
89
98
Paralel azaltmada, dizi çiftlere bölünür ve her çift aynı anda toplanır:
Bu işlem, bir ağaç yapısı boyunca devam eder ve tek bir toplam elde edilene kadar sürer. Matematiksel olarak, toplama işlemi birleşim özelliğine sahipse, toplama sırası sonucu etkilemez ve işlem \( O(\log n) \) adımda tamamlanabilir.
103
+
Bu işlem, bir ağaç yapısı boyunca devam eder ve tek bir toplam elde edilene kadar sürer. Matematiksel olarak, toplama işlemi birleşim özelliğine sahipse, toplama sırası sonucu etkilemez ve işlem $$( O(\log n) )$$ adımda tamamlanabilir.
95
104
96
105
---
97
106
98
107
## 2. Paralel Öncelik (Prefix) İşlemleri
99
108
100
-
Paralel öncelik veya tarama (scan), bir dizinin tüm kısmi azaltmalarını hesaplayan bir işlemdir. Birleşim özelliğine sahip bir ikili işlem \( \oplus \) için, bir dizinin içeren öncelik toplamı şu şekilde tanımlanır:
109
+
Paralel öncelik veya tarama (scan), bir dizinin tüm kısmi azaltmalarını hesaplayan bir işlemdir. Birleşim özelliğine sahip bir ikili işlem $$( \oplus )$$ için, bir dizinin içeren öncelik toplamı şu şekilde tanımlanır:
Bu işlem, birçok algoritmada—özellikle yinelemeli ilişkileri çözme, histogram oluşturma veya veri sıkıştırmada—kritik öneme sahiptir. Paralel öncelik algoritması tipik olarak iki aşamada çalışır:
107
118
108
119
-**Yukarı Tarama (Reduction) Aşaması:** Toplamı hesaplamak için bir azaltma ağacı oluşturulur.
Birleşim özelliği sayesinde, ağaç yapısı ne olursa olsun aynı sonuç elde edilir ve bu işlem \( O(\log n) \) zamanında verimli şekilde uygulanabilir.
122
+
Birleşim özelliği sayesinde, ağaç yapısı ne olursa olsun aynı sonuç elde edilir ve bu işlem $$( O(\log n) )$$ zamanında verimli şekilde uygulanabilir.
112
123
113
124
---
114
125
@@ -118,17 +129,21 @@ Birleşim özelliği sayesinde, ağaç yapısı ne olursa olsun aynı sonuç eld
118
129
119
130
### Örnek: Sonlu Elemanlar Yöntemi (FEM)
120
131
121
-
Bir PDE, uzaysal bir alan \( \Omega \) üzerinde tanımlı olsun. Alan bölme yöntemleri, \( \Omega \) alanını \( \Omega_1, \Omega_2, \ldots, \Omega_p \) alt alanlarına ayırır. Her alt alanın PDE’si eşzamanlı olarak çözülür ve ardından alt alan çözümleri ara yüz koşulları ile birleştirilir. Matematiksel olarak, PDE şu şekilde verilir:
132
+
Bir PDE, uzaysal bir alan $$( \Omega )$$ üzerinde tanımlı olsun. Alan bölme yöntemleri, $$( \Omega )$$ alanını $$( \Omega_1, \Omega_2, \ldots, \Omega_p )$$ alt alanlarına ayırır. Her alt alanın PDE’si eşzamanlı olarak çözülür ve ardından alt alan çözümleri ara yüz koşulları ile birleştirilir. Matematiksel olarak, PDE şu şekilde verilir:
122
133
123
-
\[
134
+
$$
135
+
[
124
136
\mathcal{L}(u) = f \quad \text{in } \Omega,
125
-
\]
137
+
]
138
+
$$
126
139
127
140
Her alt problem ise
128
141
129
-
\[
142
+
$$
143
+
[
130
144
\mathcal{L}(u_i) = f \quad \text{in } \Omega_i,
131
-
\]
145
+
]
146
+
$$
132
147
133
148
şeklinde, uygun sınır ve ara yüz koşullarıyla tanımlanır. Yinelemeli yöntemler (örneğin Schwarz yöntemleri), çözümlerin küresel çözüme yakınsamasını sağlar.
134
149
@@ -140,11 +155,13 @@ Birçok yüksek performanslı sayısal algoritma, LU, QR ve Cholesky ayrışıml
140
155
141
156
### Örnek: LU Ayrışımı
142
157
143
-
Bir \( A \) matrisi, alt üçgen matris \( L \) ve üst üçgen matris \( U \) olarak ayrışır:
158
+
Bir $$( A )$$ matrisi, alt üçgen matris $$( L )$$ ve üst üçgen matris $$( U )$$ olarak ayrışır:
144
159
145
-
\[
160
+
$$
161
+
[
146
162
A = LU.
147
-
\]
163
+
]
164
+
$$
148
165
149
166
Paralel ortamda matris, bloklara ayrılabilir. Her blok üzerinde yapılan işlemler (örneğin, Schur tamamlayıcısının hesaplanması) farklı işlemcilerde eşzamanlı gerçekleştirilebilir. Matris çarpımı ve ters çevirme gibi işlemlerin matematiksel özelliklerinden yararlanarak bu işlemler paralel olarak hızlandırılır.
150
167
@@ -156,19 +173,19 @@ Paralel ortamda matris, bloklara ayrılabilir. Her blok üzerinde yapılan işle
156
173
157
174
## 1. Veri Paralelliği (Data Parallelism)
158
175
159
-
Veri paralelliği, paralelliğin en basit formudur. Bu modelde, aynı işlem farklı veri parçalarına eşzamanlı olarak uygulanır. Matematiksel olarak, bir dizi veya vektör \( \mathbf{x} = (x_0, x_1, \ldots, x_{n-1}) \) verildiğinde ve her eleman için eleman bazlı bir dönüşüm \( f(x) \) hesaplanmak istendiğinde, paralel formülasyon şu şekilde olur:
176
+
Veri paralelliği, paralelliğin en basit formudur. Bu modelde, aynı işlem farklı veri parçalarına eşzamanlı olarak uygulanır. Matematiksel olarak, bir dizi veya vektör $$ \mathbf{x} = (x_0, x_1, \ldots, x_{n-1}) $$ verildiğinde ve her eleman için eleman bazlı bir dönüşüm $$ f(x) $$ hesaplanmak istendiğinde, paralel formülasyon şu şekilde olur:
tüm \( i \) değerleri için aynı anda hesaplanabilir. SIMD (Tek Komut, Çoklu Veri) mimarileri veya modern GPU'lar, bu tür aritmetik işlemleri binlerce çekirdekle paralel olarak yapabilir ve genel hesaplama süresini önemli ölçüde azaltır.
188
+
tüm $$ i $$ değerleri için aynı anda hesaplanabilir. SIMD (Tek Komut, Çoklu Veri) mimarileri veya modern GPU'lar, bu tür aritmetik işlemleri binlerce çekirdekle paralel olarak yapabilir ve genel hesaplama süresini önemli ölçüde azaltır.
172
189
173
190
---
174
191
@@ -180,17 +197,17 @@ Görev paralelliği, karmaşık bir problemi farklı görevler halinde ayrışt
180
197
181
198
Hızlı Fourier Dönüşümü (FFT), matematiğin paralelleştirmeye yön verdiği klasik bir örnektir. Bir dizinin ayrık Fourier dönüşümü (DFT) şu şekilde tanımlanır:
182
199
183
-
\[
200
+
$$
184
201
X_k = \sum_{n=0}^{N-1} x_n e^{-2\pi i kn/N}, \quad k = 0, \ldots, N-1.
185
-
\]
202
+
$$
186
203
187
-
FFT algoritması, Danielson-Lanczos leması temelinde bir DFT’yi \( N/2 \) boyutlu iki alt DFT’ye ayıran bir böl ve fethet yaklaşımını kullanır:
204
+
FFT algoritması, Danielson-Lanczos leması temelinde bir DFT’yi $$ N/2 $$ boyutlu iki alt DFT’ye ayıran bir böl ve fethet yaklaşımını kullanır:
188
205
189
-
\[
206
+
$$
190
207
X_k = \sum_{n=0}^{N/2-1} x_{2n} e^{-2\pi i k (2n)/N} + e^{-2\pi i k/N} \sum_{n=0}^{N/2-1} x_{2n+1} e^{-2\pi i k (2n+1)/N}.
191
-
\]
208
+
$$
192
209
193
-
Bu daha küçük dönüşümler paralel olarak hesaplanır ve sonuçlar, uygun "twiddle faktörleri" \( e^{-2\pi i k/N} \) ile birleştirilir. Bu matematiksel yapı, doğal olarak paralel uygulamalara uygundur.
210
+
Bu daha küçük dönüşümler paralel olarak hesaplanır ve sonuçlar, uygun "twiddle faktörleri" $$ e^{-2\pi i k/N} $$ ile birleştirilir. Bu matematiksel yapı, doğal olarak paralel uygulamalara uygundur.
0 commit comments