Paylaşımlı Bellek ve Veri Paralelliği
Paylaşımlı bellek paralelliğinde birden çok iş parçacığı ortak bir adres alanı üzerinde çalışırken, veri paralelliği aynı işlemi birçok veri öğesine aynı anda uygulamaktadır.
Tanım
Paylaşımlı bellek modelinde, paralel yürütme iş parçacıkları ortak bir belleği okuyup yazarak örtük olarak iletişim kurmakta ve senkronizasyon ilkelleri aracılığıyla koordinasyon sağlamaktadır; veri paralelliği ise aynı hesaplamanın bir veri yapısının öğeleri üzerinde bağımsız olarak uygulandığı özel bir durumu ifade etmektedir.
Kapsam
Bu kapsamda, paylaşımlı adres alanı modeli ve programlama arayüzleri (iş parçacıkları, OpenMP), iş parçacıklarını koordine eden senkronizasyon ilkelleri (kilitler, bariyerler, atomik işlemler) ve bunların yönettiği tehlikeler (veri yarışları, kilitlenme (deadlock), yanlış paylaşım (false sharing)), veri-paralel ve döngü-paralel yapılar ile iş çalma zamanlayıcılarına sahip görev tabanlı çalışma zamanı ortamları ele alınmaktadır. Konu, teorik temelleri paylaşımlı bellek modelleri altında yer alan programlama yönünü incelemektedir.
Temel sorular
- İş parçacıkları, veri yarışları veya kilitlenme (deadlock) olmadan paylaşımlı verilere erişimi nasıl koordine etmektedir?
- Döngüler ve dizi işlemleri paralel yürütme için nasıl ifade edilebilmektedir?
- Dinamik olarak oluşturulan görevler çekirdekler arasında verimli bir şekilde nasıl dengelenmektedir?
Temel kuramlar
- Senkronizasyon ve bellek tutarlılığı
- Doğru paylaşımlı bellek programları, senkronizasyon ilkellerine ve bir iş parçacığının yazma işlemlerinin diğerine ne zaman görünür hale geldiğini yöneten bellek modelinin anlaşılmasına dayanmaktadır; yanlış yönetim ise veri yarışlarına veya kilitlenmeye (deadlock) neden olabilmektedir.
- Yönerge tabanlı veri paralelliği
- OpenMP, programcıların sıralı kodu, döngüleri ve bölgeleri paylaşımlı bir adres alanı üzerinde paralelleştiren yönergelerle işaretlemesine olanak tanıyarak, paylaşımlı bellek paralelliğine taşınabilir, artımlı bir yol sunmaktadır.
- İş çalma görev zamanlaması
- Görev tabanlı çalışma zamanı ortamları, dinamik olarak oluşturulan görevleri, boşta duran işlemcilerin meşgul olanlardan iş çalarak zamanlamasıyla gerçekleştirmekte, bu sayede düzensiz paralel hesaplamalar için kanıtlanabilir iyi bir yük dengelemesi ve sınırlı ek yük sağlamaktadır.
Klinik önem
Paylaşımlı bellek ve veri-paralel programlama, günlük yazılımların çok çekirdekli CPU'ları nasıl kullandığını ve bilimsel çekirdeklerin, simülasyonların ve dizi yoğun iş yüklerinin tek bir düğümde nasıl hızlanma sağladığını göstermektedir; bu da onu en yaygın karşılaşılan paralel programlama biçimi haline getirmektedir.
Tarihçe
Paylaşımlı bellek çoklu işlemciliği, iş parçacıkları modeli ve taşınabilir yönerge tabanlı paralellik için 1998 OpenMP standardı ile olgunlaşmıştır; Cilk projesinden (1996 sonrası) gelen iş çalma zamanlayıcıları verimli görev tabanlı paralellik sağlamış ve bu fikirler günümüzde diller arası çok çekirdekli programlamanın temelini oluşturmaktadır.
Öne çıkan isimler
- Maurice Herlihy
- Nir Shavit
- Charles Leiserson
- Vipin Kumar
İlgili konular
Temel eserler
- herlihy2008
- grama2003
- blumofe1996
Sıkça sorulan sorular
- Veri yarışı nedir ve neden tehlikelidir?
- Veri yarışı, iki iş parçacığının aynı bellek konumuna eş zamanlı olarak ve en az birinin yazma işlemi yapmasıyla, senkronizasyon olmaksızın erişmesi durumunda meydana gelmektedir. Sonuç tanımsızdır ve çalıştırmalar arasında farklılık gösterebilmekte, aralıklı, yeniden üretilmesi zor hatalara yol açabilmektedir; bu nedenle senkronizasyon paylaşımlı bellek programlarında temel bir öneme sahiptir.