Skip to content

Commit 790bc31

Browse files
committed
Güncellemeler
1 parent 42478bf commit 790bc31

File tree

3 files changed

+54
-36
lines changed

3 files changed

+54
-36
lines changed

_layouts/default.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ <h1 class="heading-text" style="font-family: IBM Plex Sans, sans-serif; text-sha
178178
}
179179
}
180180
</script>
181-
181+
<script type="text/javascript" id="MathJax-script" async
182+
src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js">
183+
</script>
182184
</body>
183185
</html>
184186

_layouts/post.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
---
44

55
<link rel="stylesheet" href="{{site.baseurl}}/assets/css/post.css">
6-
76
<div class="col-md-10 col-lg-8 mx-auto">
87

98
<div class="post-content">

_posts/2025-02-08-paralel-programlama.md renamed to _posts/2025-02-10-paralel-programlama.md

Lines changed: 51 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,25 @@ Düşünün ki bir yapay zeka modelini eğitirken kullanılan veri setleri, yaz
1313

1414
İş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.
1515

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-
1816
Ş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.
1917

2018
# Paralel Hesaplama Nedir?
2119

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+
2222
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.
2323

2424
İş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.
2525

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+
2635
# Paralel Hesaplama Nasıl Çalışır?
2736

2837
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
8089

8190
### Örnek: Toplama Azaltma
8291

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} $$
8496

85-
\[
86-
S = x_0 + x_1 + \cdots + x_{n-1}.
87-
\]
8897

8998
Paralel azaltmada, dizi çiftlere bölünür ve her çift aynı anda toplanır:
9099

91-
- **İlk Adım:** \( s_j^{(1)} = x_{2j} + x_{2j+1} \) şeklinde hesaplanır \( j = 0, \ldots, \frac{n}{2}-1 \).
92-
- **İkinci Adım:** Sonuçlar toplanır: \( s_k^{(2)} = s_{2k}^{(1)} + s_{2k+1}^{(1)} \).
100+
- **İlk Adım:** $$( j = 0, \ldots, \frac{n}{2}-1 )$$ olmak üzere $$( s_j^{(1)} = x_{2j} + x_{2j+1} )$$ şeklinde hesaplanır.
101+
- **İkinci Adım:** Sonuçlar toplanır: $$( s_k^{(2)} = s_{2k}^{(1)} + s_{2k+1}^{(1)} )$$.
93102

94-
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.
95104

96105
---
97106

98107
## 2. Paralel Öncelik (Prefix) İşlemleri
99108

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:
101110

102-
\[
111+
$$
112+
[
103113
y_i = x_0 \oplus x_1 \oplus \cdots \oplus x_i, \quad i = 0, \ldots, n-1.
104-
\]
114+
]
115+
$$
105116

106117
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:
107118

108119
- **Yukarı Tarama (Reduction) Aşaması:** Toplamı hesaplamak için bir azaltma ağacı oluşturulur.
109120
- **Aşağı Tarama Aşaması:** Her öncelik değeri, kısmi toplamların ağacın aşağısına yayılmasıyla hesaplanır.
110121

111-
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.
112123

113124
---
114125

@@ -118,17 +129,21 @@ Birleşim özelliği sayesinde, ağaç yapısı ne olursa olsun aynı sonuç eld
118129

119130
### Örnek: Sonlu Elemanlar Yöntemi (FEM)
120131

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:
122133

123-
\[
134+
$$
135+
[
124136
\mathcal{L}(u) = f \quad \text{in } \Omega,
125-
\]
137+
]
138+
$$
126139

127140
Her alt problem ise
128141

129-
\[
142+
$$
143+
[
130144
\mathcal{L}(u_i) = f \quad \text{in } \Omega_i,
131-
\]
145+
]
146+
$$
132147

133148
ş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.
134149

@@ -140,11 +155,13 @@ Birçok yüksek performanslı sayısal algoritma, LU, QR ve Cholesky ayrışıml
140155

141156
### Örnek: LU Ayrışımı
142157

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:
144159

145-
\[
160+
$$
161+
[
146162
A = LU.
147-
\]
163+
]
164+
$$
148165

149166
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.
150167

@@ -156,19 +173,19 @@ Paralel ortamda matris, bloklara ayrılabilir. Her blok üzerinde yapılan işle
156173

157174
## 1. Veri Paralelliği (Data Parallelism)
158175

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:
160177

161-
\[
178+
$$
162179
y_i = f(x_i) \quad \text{( } i = 0, 1, \dots, n-1 \text{ )}
163-
\]
180+
$$
164181

165-
Örneğin, iki vektör \( \mathbf{a} \) ve \( \mathbf{b} \) verildiğinde, toplamları:
182+
Örneğin, iki vektör $$ \mathbf{a} $$ ve $$ \mathbf{b} $$ verildiğinde, toplamları:
166183

167-
\[
184+
$$
168185
\mathbf{c} = \mathbf{a} + \mathbf{b} \quad \text{ve} \quad c_i = a_i + b_i,
169-
\]
186+
$$
170187

171-
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.
172189

173190
---
174191

@@ -180,17 +197,17 @@ Görev paralelliği, karmaşık bir problemi farklı görevler halinde ayrışt
180197

181198
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:
182199

183-
\[
200+
$$
184201
X_k = \sum_{n=0}^{N-1} x_n e^{-2\pi i kn/N}, \quad k = 0, \ldots, N-1.
185-
\]
202+
$$
186203

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:
188205

189-
\[
206+
$$
190207
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+
$$
192209

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.
194211

195212

196213
## Sonuç

0 commit comments

Comments
 (0)