Paralel Rastgele Erişim Makineleri
Parallel Random Access Machines (PRAM)paralel algoritmaların çoğu için düşünülen bir modeldir. Burada, birden çok işlemci tek bir bellek bloğuna eklenir. Bir PRAM modeli şunları içerir:
Bir dizi benzer işlemci türü.
Tüm işlemciler ortak bir bellek birimini paylaşır. İşlemciler kendi aralarında yalnızca paylaşılan bellek aracılığıyla iletişim kurabilirler.
Bir bellek erişim birimi (MAU), işlemcileri tek paylaşılan bellek ile bağlar.
Buraya, n işlemci sayısı üzerinde bağımsız işlemler gerçekleştirebilir nbelirli bir zaman birimindeki veri sayısı. Bu, aynı bellek konumuna farklı işlemciler tarafından eşzamanlı erişimle sonuçlanabilir.
Bu sorunu çözmek için, PRAM modeline aşağıdaki kısıtlamalar getirilmiştir -
Exclusive Read Exclusive Write (EREW) - Burada iki işlemcinin aynı anda aynı bellek konumundan okuma veya yazma izni yoktur.
Exclusive Read Concurrent Write (ERCW) - Burada iki işlemcinin aynı anda aynı bellek konumundan okumasına izin verilmez, ancak aynı anda aynı bellek konumuna yazmalarına izin verilir.
Concurrent Read Exclusive Write (CREW) - Burada tüm işlemcilerin aynı anda aynı bellek konumundan okumasına izin verilir, ancak aynı anda aynı bellek konumuna yazmalarına izin verilmez.
Concurrent Read Concurrent Write (CRCW) - Tüm işlemcilerin aynı anda aynı bellek konumundan okumasına veya bu konuma yazmasına izin verilir.
PRAM modelini uygulamak için birçok yöntem vardır, ancak en önemlileri şunlardır:
- Paylaşılan bellek modeli
- Mesaj geçen model
- Veri paralel modeli
Paylaşılan Bellek Modeli
Paylaşılan hafıza, control parallelism Üzerinde data parallelism. Paylaşılan bellek modelinde, birden çok işlem farklı işlemciler üzerinde bağımsız olarak yürütülür, ancak ortak bir bellek alanını paylaşırlar. Herhangi bir işlemci faaliyeti nedeniyle, herhangi bir bellek konumunda herhangi bir değişiklik olması durumunda, bu, işlemcilerin geri kalanı tarafından görülebilir.
Birden fazla işlemci aynı bellek konumuna erişirken, belirli bir zamanda birden fazla işlemci aynı bellek konumuna erişiyor olabilir. Birinin o yeri okuduğunu ve diğerinin o konuma yazdığını varsayalım. Kafa karışıklığı yaratabilir. Bundan kaçınmak için bazı kontrol mekanizmalarılock / semaphore, karşılıklı dışlamayı sağlamak için uygulanmaktadır.
Paylaşılan bellek programlama aşağıda uygulanmıştır -
Thread libraries- İş parçacığı kitaplığı, aynı bellek konumunda aynı anda çalışan birden çok denetim iş parçacığına izin verir. İş parçacığı kitaplığı, bir alt yordam kitaplığı aracılığıyla çoklu okumayı destekleyen bir arabirim sağlar. İçin alt yordamlar içerir
- Konu oluşturma ve yok etme
- İş parçacığının yürütülmesini planlama
- diziler arasında veri ve mesaj geçirme
- iş parçacığı bağlamlarını kaydetme ve geri yükleme
İş parçacığı kitaplıklarının örnekleri şunları içerir - Solaris için SolarisTM iş parçacıkları, Linux'ta uygulanan POSIX iş parçacıkları, Windows NT ve Windows 2000'de bulunan Win32 iş parçacıkları ve standart JavaTM Geliştirme Kitinin (JDK) bir parçası olarak JavaTM iş parçacıkları.
Distributed Shared Memory (DSM) Systems- DSM sistemleri, paylaşılan bellek programlamasını donanım desteği olmadan uygulamak için gevşek bağlı mimaride paylaşılan bellek soyutlaması oluşturur. Standart kitaplıkları uygularlar ve modern işletim sistemlerinde bulunan gelişmiş kullanıcı düzeyinde bellek yönetimi özelliklerini kullanırlar. Örnekler arasında Sırt İşaretleri Sistemi, Munin, IVY, Shasta, Brazos ve Kaşmir bulunur.
Program Annotation Packages- Bu, tek tip bellek erişim özelliklerine sahip mimarilerde uygulanır. Program açıklama paketlerinin en dikkate değer örneği OpenMP'dir. OpenMP, işlevsel paralellik uygular. Esas olarak döngülerin paralelleştirilmesine odaklanır.
Paylaşılan bellek kavramı, paylaşılan bellek sisteminin düşük seviyeli kontrolünü sağlar, ancak sıkıcı ve hatalı olma eğilimindedir. Sistem programlaması için uygulama programlamasından daha uygundur.
Paylaşılan Bellek Programlamasının Özellikleri
Global adres alanı, belleğe kullanıcı dostu bir programlama yaklaşımı sağlar.
Belleğin CPU'ya yakınlığı nedeniyle, işlemler arasında veri paylaşımı hızlı ve tek tiptir.
Süreçler arasında veri iletişimini açıkça belirtmeye gerek yoktur.
Süreç-iletişim ek yükü ihmal edilebilir düzeydedir.
Öğrenmesi çok kolay.
Paylaşılan Bellek Programlamanın Zorlukları
- Taşınabilir değildir.
- Veri yerelliğini yönetmek çok zordur.
Mesaj Geçiş Modeli
Mesaj iletme, dağıtılmış bellek sistemlerinde en yaygın kullanılan paralel programlama yaklaşımıdır. Burada programcı paralelliği belirlemelidir. Bu modelde, tüm işlemcilerin kendi yerel bellek birimleri vardır ve bir iletişim ağı üzerinden veri alışverişi yaparlar.
İşlemciler, kendi aralarında iletişim kurmak için ileti geçiren kitaplıkları kullanır. Gönderilen verilerle birlikte, mesaj aşağıdaki bileşenleri içerir -
Mesajın gönderildiği işlemcinin adresi;
Gönderen işlemcideki verilerin hafıza konumunun başlangıç adresi;
Gönderilen verinin veri türü;
Gönderen verinin veri boyutu;
Mesajın gönderildiği işlemcinin adresi;
Alıcı işlemcideki veriler için hafıza konumunun başlangıç adresi.
İşlemciler aşağıdaki yöntemlerden herhangi biriyle birbirleriyle iletişim kurabilir -
- Noktadan Noktaya İletişim
- Toplu İletişim
- Mesaj Geçiş Arayüzü
Noktadan Noktaya İletişim
Noktadan noktaya iletişim, mesaj geçişinin en basit şeklidir. Burada, aşağıdaki transfer modlarından herhangi biri ile gönderen işlemciden alıcı işlemciye bir mesaj gönderilebilir -
Synchronous mode - Bir sonraki mesaj, mesajın sırasını korumak için, yalnızca önceki mesajın teslim edildiğine dair bir onay alındıktan sonra gönderilir.
Asynchronous mode - Bir sonraki mesajı göndermek için, önceki mesajın alındığına dair onay alınması gerekli değildir.
Toplu İletişim
Toplu iletişim, mesaj iletimi için ikiden fazla işlemci içerir. Aşağıdaki modlar toplu iletişime izin verir -
Barrier - Bariyer modu, iletişimdeki tüm işlemciler belirli bir bock'u çalıştırırsa mümkündür ( barrier block) mesaj geçişi için.
Broadcast - Yayın iki türdendir -
One-to-all - Burada tek işlemli bir işlemci diğer tüm işlemcilere aynı mesajı gönderir.
All-to-all - Burada tüm işlemciler diğer tüm işlemcilere mesaj gönderir.
Yayınlanan mesajlar üç türde olabilir -
Personalized - Diğer tüm hedef işlemcilere benzersiz mesajlar gönderilir.
Non-personalized - Tüm hedef işlemciler aynı mesajı alır.
Reduction - İndirgeme yayınında, grubun bir işlemcisi gruptaki diğer tüm işlemcilerden gelen tüm mesajları toplar ve bunları gruptaki diğer tüm işlemcilerin erişebileceği tek bir mesajda birleştirir.
Mesaj Aktarmanın Esasları
- Paralellik için düşük seviyeli kontrol sağlar;
- Portatiftir;
- Daha az hata eğilimi;
- Paralel senkronizasyon ve veri dağıtımında daha az ek yük.
Mesaj Aktarmanın Zorlukları
Paralel paylaşımlı bellek koduyla karşılaştırıldığında, mesaj geçiren kod genellikle daha fazla yazılım ek yüküne ihtiyaç duyar.
Mesaj Gönderme Kitaplıkları
Birçok ileti aktaran kitaplık vardır. Burada, en çok kullanılan mesaj geçiren kitaplıklardan ikisini tartışacağız -
- Mesaj Geçiş Arayüzü (MPI)
- Paralel Sanal Makine (PVM)
Mesaj Geçiş Arayüzü (MPI)
Dağıtılmış bir bellek sistemindeki tüm eşzamanlı süreçler arasında iletişim sağlamak evrensel bir standarttır. Yaygın olarak kullanılan paralel hesaplama platformlarının çoğu, mesaj geçirme arayüzünün en az bir uygulamasını sağlar. Adı verilen önceden tanımlanmış işlevlerin koleksiyonu olarak uygulanmıştır.library ve C, C ++, Fortran, vb. gibi dillerden çağrılabilir. MPI'ler, diğer ileti geçiren kitaplıklara kıyasla hem hızlı hem de taşınabilirdir.
Merits of Message Passing Interface
Yalnızca paylaşılan bellek mimarilerinde veya dağıtılmış bellek mimarilerinde çalışır;
Her işlemcinin kendi yerel değişkenleri vardır;
Büyük paylaşımlı bellekli bilgisayarlarla karşılaştırıldığında, dağıtılmış bellekli bilgisayarlar daha ucuzdur.
Demerits of Message Passing Interface
- Paralel algoritma için daha fazla programlama değişikliği gereklidir;
- Bazen hata ayıklamak zordur; ve
- Düğümler arasındaki iletişim ağında iyi performans göstermez.
Paralel Sanal Makine (PVM)
PVM, tek bir sanal makine oluşturmak üzere ayrı heterojen ana makineleri bağlamak için tasarlanmış taşınabilir bir mesaj geçirme sistemidir. Yönetilebilir tek bir paralel bilgi işlem kaynağıdır. Süperiletkenlik çalışmaları, moleküler dinamik simülasyonları ve matris algoritmaları gibi büyük hesaplama problemleri, birçok bilgisayarın belleği ve toplam gücü kullanılarak daha uygun maliyetli bir şekilde çözülebilir. Uyumsuz bilgisayar mimarileri ağındaki tüm mesaj yönlendirmesini, veri dönüşümünü, görev planlamasını yönetir.
Features of PVM
- Kurulumu ve yapılandırması çok kolay;
- Birden çok kullanıcı aynı anda PVM kullanabilir;
- Bir kullanıcı birden çok uygulamayı çalıştırabilir;
- Küçük bir paket;
- C, C ++, Fortran;
- Bir PVM programının belirli bir çalışması için, kullanıcılar makine grubunu seçebilir;
- Mesaj ileten bir modeldir,
- Süreç tabanlı hesaplama;
- Heterojen mimariyi destekler.
Veri Paralel Programlama
Veri paralel programlama modelinin ana odak noktası, bir veri kümesi üzerinde aynı anda işlem yapmaktır. Veri kümesi, dizi, hiperküp, vb. Gibi bazı yapılarda düzenlenir. İşlemciler, işlemleri aynı veri yapısı üzerinde toplu olarak gerçekleştirir. Her görev, aynı veri yapısının farklı bir bölümünde gerçekleştirilir.
Tüm algoritmalar veri paralelliği açısından belirlenemediği için kısıtlayıcıdır. Veri paralelliğinin evrensel olmamasının nedeni budur.
Veri paralel dilleri, veri ayrıştırma ve işlemcilerle eşleştirmenin belirlenmesine yardımcı olur. Ayrıca, programcının veri üzerinde kontrol sahibi olmasına izin veren veri dağıtım ifadelerini de içerir - örneğin, hangi verilerin hangi işlemciye gideceği - işlemcilerdeki iletişim miktarını azaltmak için.