Damla
New member
Paralel İşlemenin Amacı Nedir? Bilgisayara “Sen Bunu Yap, Ben Şunu Hallederim” Demeyi Öğrenmek
Paralel İşleme Nedir? Bilgisayarın Aynı Anda Birden Fazla İşe Koşması
Bilgisayarla aramızdaki en büyük yanlış anlaşılmalardan biri şu olabilir: Biz bilgisayarı çok hızlı sanıyoruz, bilgisayar ise muhtemelen bizi sürekli bekleyen bir memur gibi görüyor. “Şunu da aç, bunu da hesapla, bir yandan videoyu oynat, arkada dosyayı kopyala, bu arada yapay zekâ modelini de eğitiver.” İnsan olsaydı muhtemelen “Bir dakika kardeşim!” derdi.
İşte paralel işleme tam bu noktada devreye giriyor.
En basit ifadeyle paralel işleme, büyük bir problemi veya işi daha küçük parçalara ayırarak bu parçaların birden fazla işlem biriminde aynı anda yürütülmesini amaçlıyor. IEEE de paralel işlemeyi iki veya daha fazla işlem birimi kullanarak birden fazla hesaplama görevinin eş zamanlı yürütülmesi olarak tanımlıyor.
Buradaki temel amaç yalnızca “bilgisayarı hızlandırmak” değil. Daha kısa sürede daha fazla iş yapmak, büyük veri kümelerini işleyebilmek, karmaşık problemlerin çözümünü mümkün hâle getirmek ve mevcut işlem kaynaklarından daha verimli yararlanmak da paralel işlemenin önemli hedefleri arasında.
Bir bakıma bilgisayara şunu öğretiyoruz:
“Her şeyi tek başına yapmaya çalışma. İşleri bölüştür.”
Asıl Amaç Hız Değil, İş Yükünü Akıllıca Paylaştırmak
Paralel işlemenin amacı sorulduğunda çoğu kişinin vereceği ilk cevap “hızı artırmak” olur. Bu cevap yanlış değil ama biraz eksik.
Diyelim ki 100.000 fotoğrafın boyutunu küçültmeniz gerekiyor. Geleneksel yaklaşımda bilgisayar fotoğrafları sırayla işleyebilir:
Fotoğraf 1 → Fotoğraf 2 → Fotoğraf 3 → Fotoğraf 4...
Bu işlem uzun sürebilir.
Paralel yaklaşımda ise fotoğraflar parçalara ayrılabilir:
İşlemci 1 → 1-25.000
İşlemci 2 → 25.001-50.000
İşlemci 3 → 50.001-75.000
İşlemci 4 → 75.001-100.000
Böylece farklı bölümler aynı zaman aralığında işlenebilir.
MATLAB'ın güncel paralel hesaplama dokümantasyonunda da büyük problemlerin daha küçük parçalara ayrılıp aynı anda işlenmesinin temel hedefleri arasında zaman kazanmak, büyük veri problemlerini dağıtmak ve masaüstü sistemlerden kümelere kadar farklı bilgi işlem kaynaklarından yararlanmak gösteriliyor.
Fakat burada küçük bir ayrıntı var: Dört çekirdek kullanmak her zaman dört kat hız anlamına gelmez.
Keşke gelseydi.
Bilgisayar mühendisleri o zaman “8 çekirdek aldım, kahvemi de sekiz kat hızlı içiyorum” diye gezerdi.
Gerçekte işlemin bazı bölümleri paralelleştirilebilirken bazı bölümleri sırayla yürütülmek zorunda kalabilir. Amdahl Yasası olarak bilinen yaklaşım da paralel hızlanmanın, programın seri kalmak zorunda olan kısmıyla sınırlandığını ortaya koyuyor.
Peki Neden Bir İşi Parçalara Ayırmak Bu Kadar Önemli?
Çünkü modern bilgisayarların işlem gücü yalnızca “tek bir dev beyin” mantığıyla ilerlemiyor.
Bugün çok çekirdekli CPU'lar, GPU'lar ve büyük hesaplama kümeleri aynı anda çok sayıda işi yürütebiliyor. IEEE'ye göre paralel işlem, akıllı telefonlardaki çok çekirdekli çiplerden bilimsel süper bilgisayarlara kadar modern hesaplamanın temel yapı taşlarından biri hâline gelmiş durumda.
Buradaki fikir aslında günlük hayattan oldukça tanıdık.
Bir restoranda 100 kişilik yemek hazırlanacağını düşünün. Tek bir aşçı bütün sebzeleri doğrayacak, eti pişirecek, salatayı hazırlayacak, tatlıyı yapacak ve tabakları servis edecekse mutfak kısa sürede küçük bir kaos merkezine dönüşür.
Ama görevler bölünürse:
Bir kişi sebzeleri hazırlar.
Bir kişi ana yemeği pişirir.
Bir kişi salatayla ilgilenir.
Bir kişi servis yapar.
Sonuç?
Aynı mutfak, aynı zaman aralığında çok daha fazla iş çıkarabilir.
Paralel işleme de bilgisayarın mutfağında buna benzer bir organizasyon kurar.
Tabii bilgisayarın aşçılara göre önemli bir avantajı var: “Ben salataya bakmam, bugün moralim bozuk” deme ihtimali daha düşük.
Görev Paralelliği ve Veri Paralelliği: Her İş Aynı Şekilde Bölünmez
Paralel işlemenin ilginç taraflarından biri, her problemin aynı yöntemle paralelleştirilememesidir.
Örneğin görev paralelliğinde farklı işlemler farklı işlem birimlerine dağıtılabilir. Bir işlemci görüntüyü işlerken başka bir işlemci ses verisini işleyebilir.
Veri paralelliğinde ise aynı işlem, verinin farklı parçalarına uygulanır.
Örneğin milyonlarca sayının her birini ikiyle çarpmamız gerekiyorsa veri kümesini parçalara ayırıp farklı işlem birimlerine dağıtabiliriz. Her biri kendi sayı grubunu işler ve sonuçlar daha sonra bir araya getirilir.
Microsoft'un paralel hesaplama açıklamalarında da görev paralelliği ve veri paralelliği temel yaklaşımlar arasında ele alınıyor.
Bu ayrım özellikle yapay zekâ ve büyük veri uygulamalarında önemli.
Bir yapay zekâ modeli eğitim sırasında çok büyük miktarda matematiksel işlem gerçekleştirebilir. Bu işlemlerin uygun şekilde paralelleştirilmesi, eğitim sürecinin ciddi ölçüde hızlandırılmasına yardımcı olabilir. Bu yüzden GPU'lar yalnızca oyunlarda yüksek kare hızı almak için değil, yüksek derecede paralel hesaplama gerektiren yapay zekâ iş yüklerinde de son derece değerlidir.
Kadın mı, Erkek mi Daha İyi Paralel Düşünür? Asıl Cevap: Bu Soruyu Bilgisayara Sormak Daha Mantıklı
Forumlarda teknoloji konuşurken bazen konuyu insan davranışlarına bağlamak kaçınılmaz oluyor. Erkeklerin daha çözüm odaklı ve stratejik, kadınların ise daha empatik ve ilişki odaklı düşündüğüne dair genellemeler de sıkça karşımıza çıkıyor.
Ancak bunu biyolojik bir “erkek işlemcisi-kadın işlemcisi” meselesine çevirmek hem bilimsel açıdan zayıf hem de gereksiz olur.
Çünkü gerçek hayattaki insanlar çok daha çeşitli.
Örneğin Ayşe, büyük bir yazılım projesinde görevleri bağımlılıklarına göre bölen ve performans darboğazlarını grafiklerle takip eden bir sistem mimarı olabilir.
Mehmet ise ekip içinde herkesin birbirinin yükünü anlamasını sağlayan, iletişim sorunlarını çözen ve proje koordinasyonunu güçlendiren bir ekip lideri olabilir.
Başka bir ekipte durum tamamen tersine dönebilir.
Asıl ilginç olan da burada.
Paralel işlemeyi verimli hâle getiren şey yalnızca stratejik bölme değildir. İş parçalarının birbirleriyle nasıl iletişim kurduğu, ortak kaynakların nasıl kullanıldığı ve sonuçların nasıl birleştirildiği de önemlidir.
Yani bilgisayar dünyasında bile “işi dağıt, herkes kendi başına takılsın” yaklaşımı yeterli değildir.
Birileri mutlaka “Arkadaşlar, aynı dosyaya aynı anda yazmayalım” demek zorunda.
İşte senkronizasyonun hikâyesi burada başlar.
Paralel İşlemenin Gizli Düşmanı: Beklemek
İnsanlar beklemeyi sevmez.
Bilgisayarlar da aslında sevmez.
Paralel bir sistemde bir işlemci diğerinin sonucunu beklemek zorundaysa teorik olarak sahip olduğumuz işlem gücünün tamamını kullanamayabiliriz. Bir iş parçacığı diğerinin ürettiği veriye ihtiyaç duyuyorsa aralarında koordinasyon kurulması gerekir.
Microsoft'un çok iş parçacıklı uygulamalara yönelik belgelerinde de iş parçacıklarının zaman zaman eşitlenmesi gerektiği, bir iş parçacığının başka bir iş parçacığının sonucunu veya özel erişim gerektiren bir kaynağı bekleyebileceği belirtiliyor.
Bu durum biraz ekip çalışmasına benziyor.
Dört kişi bir projede çalışıyor olabilir. Ancak raporun son bölümünü yazan kişinin ilk bölümdeki sonuçları beklemesi gerekiyorsa, dört kişinin aynı anda çalışması toplam sürenin otomatik olarak dörtte bire ineceği anlamına gelmez.
Daha da kötüsü, herkes aynı kaleme uzanıyorsa kavga çıkar.
Bilgisayarda bunun karşılığı kaynak çatışmaları, senkronizasyon maliyetleri ve iletişim darboğazlarıdır.
Paralel İşleme Nedir? Bilgisayarın Aynı Anda Birden Fazla İşe Koşması
Bilgisayarla aramızdaki en büyük yanlış anlaşılmalardan biri şu olabilir: Biz bilgisayarı çok hızlı sanıyoruz, bilgisayar ise muhtemelen bizi sürekli bekleyen bir memur gibi görüyor. “Şunu da aç, bunu da hesapla, bir yandan videoyu oynat, arkada dosyayı kopyala, bu arada yapay zekâ modelini de eğitiver.” İnsan olsaydı muhtemelen “Bir dakika kardeşim!” derdi.
İşte paralel işleme tam bu noktada devreye giriyor.
En basit ifadeyle paralel işleme, büyük bir problemi veya işi daha küçük parçalara ayırarak bu parçaların birden fazla işlem biriminde aynı anda yürütülmesini amaçlıyor. IEEE de paralel işlemeyi iki veya daha fazla işlem birimi kullanarak birden fazla hesaplama görevinin eş zamanlı yürütülmesi olarak tanımlıyor.
Buradaki temel amaç yalnızca “bilgisayarı hızlandırmak” değil. Daha kısa sürede daha fazla iş yapmak, büyük veri kümelerini işleyebilmek, karmaşık problemlerin çözümünü mümkün hâle getirmek ve mevcut işlem kaynaklarından daha verimli yararlanmak da paralel işlemenin önemli hedefleri arasında.
Bir bakıma bilgisayara şunu öğretiyoruz:
“Her şeyi tek başına yapmaya çalışma. İşleri bölüştür.”
Asıl Amaç Hız Değil, İş Yükünü Akıllıca Paylaştırmak
Paralel işlemenin amacı sorulduğunda çoğu kişinin vereceği ilk cevap “hızı artırmak” olur. Bu cevap yanlış değil ama biraz eksik.
Diyelim ki 100.000 fotoğrafın boyutunu küçültmeniz gerekiyor. Geleneksel yaklaşımda bilgisayar fotoğrafları sırayla işleyebilir:
Fotoğraf 1 → Fotoğraf 2 → Fotoğraf 3 → Fotoğraf 4...
Bu işlem uzun sürebilir.
Paralel yaklaşımda ise fotoğraflar parçalara ayrılabilir:
İşlemci 1 → 1-25.000
İşlemci 2 → 25.001-50.000
İşlemci 3 → 50.001-75.000
İşlemci 4 → 75.001-100.000
Böylece farklı bölümler aynı zaman aralığında işlenebilir.
MATLAB'ın güncel paralel hesaplama dokümantasyonunda da büyük problemlerin daha küçük parçalara ayrılıp aynı anda işlenmesinin temel hedefleri arasında zaman kazanmak, büyük veri problemlerini dağıtmak ve masaüstü sistemlerden kümelere kadar farklı bilgi işlem kaynaklarından yararlanmak gösteriliyor.
Fakat burada küçük bir ayrıntı var: Dört çekirdek kullanmak her zaman dört kat hız anlamına gelmez.
Keşke gelseydi.
Bilgisayar mühendisleri o zaman “8 çekirdek aldım, kahvemi de sekiz kat hızlı içiyorum” diye gezerdi.
Gerçekte işlemin bazı bölümleri paralelleştirilebilirken bazı bölümleri sırayla yürütülmek zorunda kalabilir. Amdahl Yasası olarak bilinen yaklaşım da paralel hızlanmanın, programın seri kalmak zorunda olan kısmıyla sınırlandığını ortaya koyuyor.
Peki Neden Bir İşi Parçalara Ayırmak Bu Kadar Önemli?
Çünkü modern bilgisayarların işlem gücü yalnızca “tek bir dev beyin” mantığıyla ilerlemiyor.
Bugün çok çekirdekli CPU'lar, GPU'lar ve büyük hesaplama kümeleri aynı anda çok sayıda işi yürütebiliyor. IEEE'ye göre paralel işlem, akıllı telefonlardaki çok çekirdekli çiplerden bilimsel süper bilgisayarlara kadar modern hesaplamanın temel yapı taşlarından biri hâline gelmiş durumda.
Buradaki fikir aslında günlük hayattan oldukça tanıdık.
Bir restoranda 100 kişilik yemek hazırlanacağını düşünün. Tek bir aşçı bütün sebzeleri doğrayacak, eti pişirecek, salatayı hazırlayacak, tatlıyı yapacak ve tabakları servis edecekse mutfak kısa sürede küçük bir kaos merkezine dönüşür.
Ama görevler bölünürse:
Bir kişi sebzeleri hazırlar.
Bir kişi ana yemeği pişirir.
Bir kişi salatayla ilgilenir.
Bir kişi servis yapar.
Sonuç?
Aynı mutfak, aynı zaman aralığında çok daha fazla iş çıkarabilir.
Paralel işleme de bilgisayarın mutfağında buna benzer bir organizasyon kurar.
Tabii bilgisayarın aşçılara göre önemli bir avantajı var: “Ben salataya bakmam, bugün moralim bozuk” deme ihtimali daha düşük.
Görev Paralelliği ve Veri Paralelliği: Her İş Aynı Şekilde Bölünmez
Paralel işlemenin ilginç taraflarından biri, her problemin aynı yöntemle paralelleştirilememesidir.
Örneğin görev paralelliğinde farklı işlemler farklı işlem birimlerine dağıtılabilir. Bir işlemci görüntüyü işlerken başka bir işlemci ses verisini işleyebilir.
Veri paralelliğinde ise aynı işlem, verinin farklı parçalarına uygulanır.
Örneğin milyonlarca sayının her birini ikiyle çarpmamız gerekiyorsa veri kümesini parçalara ayırıp farklı işlem birimlerine dağıtabiliriz. Her biri kendi sayı grubunu işler ve sonuçlar daha sonra bir araya getirilir.
Microsoft'un paralel hesaplama açıklamalarında da görev paralelliği ve veri paralelliği temel yaklaşımlar arasında ele alınıyor.
Bu ayrım özellikle yapay zekâ ve büyük veri uygulamalarında önemli.
Bir yapay zekâ modeli eğitim sırasında çok büyük miktarda matematiksel işlem gerçekleştirebilir. Bu işlemlerin uygun şekilde paralelleştirilmesi, eğitim sürecinin ciddi ölçüde hızlandırılmasına yardımcı olabilir. Bu yüzden GPU'lar yalnızca oyunlarda yüksek kare hızı almak için değil, yüksek derecede paralel hesaplama gerektiren yapay zekâ iş yüklerinde de son derece değerlidir.
Kadın mı, Erkek mi Daha İyi Paralel Düşünür? Asıl Cevap: Bu Soruyu Bilgisayara Sormak Daha Mantıklı
Forumlarda teknoloji konuşurken bazen konuyu insan davranışlarına bağlamak kaçınılmaz oluyor. Erkeklerin daha çözüm odaklı ve stratejik, kadınların ise daha empatik ve ilişki odaklı düşündüğüne dair genellemeler de sıkça karşımıza çıkıyor.
Ancak bunu biyolojik bir “erkek işlemcisi-kadın işlemcisi” meselesine çevirmek hem bilimsel açıdan zayıf hem de gereksiz olur.
Çünkü gerçek hayattaki insanlar çok daha çeşitli.
Örneğin Ayşe, büyük bir yazılım projesinde görevleri bağımlılıklarına göre bölen ve performans darboğazlarını grafiklerle takip eden bir sistem mimarı olabilir.
Mehmet ise ekip içinde herkesin birbirinin yükünü anlamasını sağlayan, iletişim sorunlarını çözen ve proje koordinasyonunu güçlendiren bir ekip lideri olabilir.
Başka bir ekipte durum tamamen tersine dönebilir.
Asıl ilginç olan da burada.
Paralel işlemeyi verimli hâle getiren şey yalnızca stratejik bölme değildir. İş parçalarının birbirleriyle nasıl iletişim kurduğu, ortak kaynakların nasıl kullanıldığı ve sonuçların nasıl birleştirildiği de önemlidir.
Yani bilgisayar dünyasında bile “işi dağıt, herkes kendi başına takılsın” yaklaşımı yeterli değildir.
Birileri mutlaka “Arkadaşlar, aynı dosyaya aynı anda yazmayalım” demek zorunda.
İşte senkronizasyonun hikâyesi burada başlar.
Paralel İşlemenin Gizli Düşmanı: Beklemek
İnsanlar beklemeyi sevmez.
Bilgisayarlar da aslında sevmez.
Paralel bir sistemde bir işlemci diğerinin sonucunu beklemek zorundaysa teorik olarak sahip olduğumuz işlem gücünün tamamını kullanamayabiliriz. Bir iş parçacığı diğerinin ürettiği veriye ihtiyaç duyuyorsa aralarında koordinasyon kurulması gerekir.
Microsoft'un çok iş parçacıklı uygulamalara yönelik belgelerinde de iş parçacıklarının zaman zaman eşitlenmesi gerektiği, bir iş parçacığının başka bir iş parçacığının sonucunu veya özel erişim gerektiren bir kaynağı bekleyebileceği belirtiliyor.
Bu durum biraz ekip çalışmasına benziyor.
Dört kişi bir projede çalışıyor olabilir. Ancak raporun son bölümünü yazan kişinin ilk bölümdeki sonuçları beklemesi gerekiyorsa, dört kişinin aynı anda çalışması toplam sürenin otomatik olarak dörtte bire ineceği anlamına gelmez.
Daha da kötüsü, herkes aynı kaleme uzanıyorsa kavga çıkar.
Bilgisayarda bunun karşılığı kaynak çatışmaları, senkronizasyon maliyetleri ve iletişim darboğazlarıdır.