Hesaplama için mevcut paralel modeller


30

1980'lerde hem PRAM hem de BSP paralel hesaplama modelleri ortaya çıktı. Görünüşe göre, her iki modelin de bugünkü 80'li yılların sonunda ve 90'lı yılların başında olduğu görülüyor.

Paralel algoritmalar için araştırmalar hala bu alanlarda etkin midir? Paralel hesaplama için daha yeni daha gelişmiş modeller var mı? Genel modeller hala moda mıdır yoksa araştırmacılar GPGPU veya Cloud tabanlı hesaplamayla modaya uygun şekilde uzmanlaşmaya mı çalışıyor?

Yanıtlar:


19

Etrafta yüzen birkaç model var, ancak en göze çarpan bazıları:

  1. Öncelikle MapReduce çerçevesini yakalamakla ilgili olan MUD ve Mapreduce modelleri, ancak daha genel olarak paralel dağıtılmış hesaplama modelleri olarak görülebilir.
  2. Önerilen çeşitli çok çekirdekli modeller (ancak hiçbir şekilde henüz standarttır)

DIMACS'ta geçen ay bu konuda bir atölye çalışması yapıldı : Özetleri incelemek size daha fazla işaret verecek.


DIMAC'ın atölyesi harika! Teşekkür ederim.
Nicholas Mancuso

3
2009'da daha önceki bir çalıştaydı, umiacs.umd.edu/conferences/tmc2009 , bana son DIMAC'lerden bile daha keskin bir şekilde bilenmiş görünüyordu. Leslie Valiant, Multi-BSP modelini orada tanıttı (bu yılki çalıştayda daha ayrıntılı olarak tartışıldı) ve Intel'den Phil Gibbons, kışkırtıcı bir konuşma Kuramı sundu : bakmaya değer çok çekirdekli bir uykuya daldı . Bana göre DIMAC atölyesi, Google’ın artık web endeksini oluşturmak için kullanmadığı MapReduce’a odaklandı.
András Salamon

bu doğru. Birincisini unutmuştum.
Suresh Venkat

22

Cevabımın blog yazısı formatı için şimdiden özür dilerim. Paralel hesaplama dünyasına küçük bir genel bakış yaparken kendime yardım edemedim.

Paralel programlama modellerini kabaca iki kategoride sınıflandırabilirsiniz: kontrol akışı ve veri akışı modelleri.

Kontrol akış modelleri temelde her programlanabilir bilgisayara bugün bir açık-kontrol programının kapsamında paralellik çalışması için deneyin. Ele alınan temel sorun, böyle bir 'Von Neumann mimarisinin' paralel uygulama için değil, sıralı hesaplamalar için tasarlanmasıdır. Bu bağlamda paralellik, temel modüllerin bölümlerinin kopyalanmasıyla elde edilir (bellek, kontrol, aritmetik).

Yalnızca aritmetik kopyalamak size SIMD talimatlarını verir, tüm ALU'lar aynı Program Sayacını (PC) paylaşır ve bu nedenle aynı işlemi farklı verilerde olsa da paralel olarak yürütür.

ALU ve PC'yi çoğaltmak ancak komut sıralayıcıyı kontrol ünitesinde tutmak, size bir miktar boru hattı-paralelliği sağlayan Sıra Dışı (OoO) çalışmasını sağlar. Bu kategoride ayrıca Çok Uzun Öğretim Sözcüğüne (VLWI) ve branche tahmin tekniklerine sahipsiniz. Bu kategoriyi nadiren bir yazılım düzeyinde görüyorsunuz.

Biraz daha ileri gitmek, tüm 'çekirdeği' çoğaltıyor ama hafızayı paylaşmaya devam ediyorlar, bunlar size görev (veya iş parçacığı) paralelliği veren mevcut çok çekirdekli işlemcilerdir. Bu bağlamda belleği paylaşmak size çok, çok zor ve ince eşzamanlılık sorunları verir . Mevcut çok çekirdekli paralel hesaplamalar bu nedenle senkronizasyon / eşzamanlılık problemleri, dikkatli performans dengesi (senkronizasyon yok) ve istenen anlambilim (tamamen senkronize, sıralı çalıştırma anlambilimi) etrafında tamamen döner. Bunun örnekleri, bu gün PAAM ya da daha çok popüler Cilk bu çatal / birleştirme (şekilde ofshoots IntelTBB , Java.Utils.Concurrency). CSP ve Aktör modelleri eşzamanlılık modelleridir, ancak yukarıda belirtildiği gibi eşzamanlılık ve paralellik paylaşılan bellek ortamında bulanıklaşır. nb paralellik performans için, doğru anlambilimi korumak için eşzamanlılık içindir.

Belleği çoğaltmak da size ya MPI ile programlanan ağ bağlantılı bilgisayarları ya da ilkini ya da yonga ağındaki işlemciler (bulut işlemci, Transputer, Tilera) gibi sadece garip Von Neumann mimarileri vermez. UMA veya NUMA gibi bellek modelleri , paylaşılan bellek yanılsamasını korumaya çalışır ve yazılım veya donanım düzeyinde var olabilir. MPI program düzeyinde paralelliği korur ve yalnızca mesaj ileterek iletişim kurar. İleti aktarma, iletişim ve eşzamanlılık için (Donanım) bir donanım düzeyinde de kullanılır.

İkinci kategori veri akışı modelleridir . Bunlar bilgisayar çağının başlangıcında, Von Neumann tasarımından kaçınarak paralel hesaplamaları yazmanın ve uygulamanın bir yolu olarak tasarlandı. Bunlar, sıralı performansın üssel olarak artmasından sonra 80'lerin modası dışına çıktı (paralel hesaplama için). Bununla birlikte, Google MapReduce, Microsoft'un Dryad veya Intel'in Eşzamanlı Koleksiyonları gibi pek çok paralel programlama sistemi aslında veri akışı hesaplama modelleridir. Bir noktada hesaplamaları bir grafik olarak temsil ederler ve uygulamayı yürütmek için kullanırlar.

Modellerin bölümlerini belirleyerek, dataflow modeli için farklı kategoriler ve anlamlar elde edersiniz. Grafiğin şeklini ne ile sınırlandırıyorsunuz: DAG (CnC, Dryad), ağaç (mapreduce), digraph? Sıkı senkronizasyon semantiği var mı ( Parlaklık, reaktif programlama]? Statik bir zamanlamaya (StreaMIT) sahip olmak için özyinelemeye izin vermiyor musunuz veya dinamik bir zamanlayıcıya (Intel CnC) sahip olarak daha anlamlı bir güç sağlıyor musunuz? Gelen veya giden kenarların sayısında bir sınır var mı? Ateşleme semantiği, gelen verinin bir alt kümesi olduğunda düğüme ateşlemeye izin veriyor mu? Kenarları veri akışı (akış işleme) veya tek veri belirteçleri (statik / dinamik tek atama). İlgili çalışmalar için Arvind, K. Kavi, j. Gibi insanların dataflow araştırma çalışmalarına bakarak başlayabilirsiniz. Sharp, W. Ackerman, R. Jagannathan, vb.

Düzenleme: Bütünlüğü uğruna. Paralel olarak indirgenmiş ve paternli modeller de olduğunu belirtmeliyim . Küçültme stratejileri için genel olarak grafik küçültme ve dizi küçültme işlemlerine sahipsiniz. Haskell temelde sıralı bir paylaşımlı bellek sisteminde çok etkili bir strateji olan grafik azaltmayı kullanır. Dize azaltma yinelenenleri çalışır, ancak örtük olarak paralelleştirilmeye daha uygun olmasını sağlayan özel bellek özelliğine sahiptir. Model odaklı modeller, eşzamanlı prolog gibi paralel mantık dilleridir. Aktör modeli aynı zamanda model odaklı bir modeldir, ancak özel hafıza özelliklerine sahiptir.

PS. Hem model hem de programlama amaçlı soyut makineleri kapsayan 'model' terimini geniş bir şekilde kullanıyorum.


Mapreduce'un bir ağacı nasıl oluşturduğunu anlamıyorum. Açıklar mısın
Riko Jacob,

@Riko Jacob, '+' işaretini (1 2 3 4) eşleştirelim, kavramsal olarak bu, her düğümde ve her sayıyı yaprak olarak '+' ile bir uygulama ağacı oluşturur. azaltmak (veya eğer haskel iseniz katlayın) her düğümü çocuklarından gelen verilerle daraltacaktır.
Sığır eti

K2,2

Grafiğin kendisinin yaratılmasını hesaba katmazsanız (örneğin a, b'yi anahtar / vale çiftlerine eşleme), küçültme yaparken iki ağaç elde edersiniz, biraz şerefiye ile :) Belki daha k-bağlı veya kafes grafiğidir. Dediğin gibi. Haklısın, basit bir ağaçtan biraz daha genel. Daha genel DAG veri akışı yapılarıyla bir ayrım yapmaya çalışıyordum.
Sığır eti

8

Mesaj ileten mimariler için, BSP'ye oldukça benzeyen ancak başa çıkmak için daha kolay olan ve gerçekten gerçek bir makinede elde ettiğinize yakın performans analizi ile çalışan bir model kesinlikle CGM veya Coarse Grained Multicomputer'dır. Frank Dehne tarafından önerildi ve bu bağlamda geliştirilen algoritmaları sunan birçok ilginç makale bulacaksınız.

CGM, her biri O (n / p) yerel belleğe sahip p işlemcileri ve giriş boyutunun p, yani p ordersn'den çok daha büyük (büyüklük dereceleri) olduğunu varsayarak kaba taneli mimarilere uyar. Bu nedenle, model mevcut mimarilerde diğerlerinden çok daha iyi haritalar; kapsamlı bir şekilde çalışılmıştır. Model, aşağıdaki varsayımlara dayanmaktadır: (i) algoritmalar, yerel hesaplamanın bir aşamasını ve ara bariyer senkronizasyonu ile işlemcilerin arasındaki bir işlemcinin bir fazından oluşan, süpersteps denilen, (ii) tüm işlemcilerin erişebildiği O (n / p) yerel bellek, (iii) her üst adımda, bir işlemci en fazla O (n / p) elemanı gönderebilir ve alabilir ve (iv) işlemciler arasındaki iletişim ağı isteğe bağlı olabilir. Bu modelde, bir algoritma hesaplama süresi ve iletişim tur sayısı ile değerlendirilir. Model basit olmasına rağmen, paralel algoritmaların gerçek performanslarının makul bir tahminini sağlar; Aslında, CGM'ler için paralel algoritmalar genellikle bunları uygularken ve kıyaslarken deneysel olarak belirlenen gerçek zamanlara çok yakın teorik bir karmaşıklık analizine sahiptir.



4

Bildiğim kadarıyla, BSP ve LogP modelleri bugün dağıtık algoritmalar için kullanılıyor. Ayrıca, GPU hesaplamasından beri, PRAM yeniden popüler hale geldi, ancak bir tanesi analizdeki bellek hiyerarşilerini içermelidir. PRAM'a güzel bir şekilde uyan UPMH modelini (Uniform Parallel memory hiyerarşi) kontrol edebilirsiniz.

B. Alpern, L. Carter, E. Feig ve T. Selker. Tekdüzen bellek hiyerarşi hesaplama modeli. Algoritmi, 12: 72-109, 1994. 10.1007 / BF01185206.

Bowen Alpern, Larry Carter ve Jeanne Ferrante. Paralel bilgisayarların bellek hiyerarşileri olarak modellenmesi. İçinde Proc. Yoğun Paralel Bilgisayarlar için Programlama Modelleri, sayfa 116– 123. IEEE Computer Society Press, 1993.

Ayrıca GPU hesaplama için, teorik bir hesaplama modeli için bir öneride bulunuldu; K-modeli:

Gabriele Capannini, Fabrizio Silvestri ve Ranieri Baraglia. K modeli: Akış işlemcileri için yeni bir hesaplama modeli. 2010 IEEE 12. Uluslararası Yüksek Performanslı Bilgi İşlem ve İletişim Konferansı Bildirilerinde, HPCC '10, sayfa 239-246, Çamaşır, DC, ABD, 2010. IEEE Computer Society.

Son olarak, paralel bilgisayarlar olarak modellenmiş hücresel otomatları (CA) gördüm, şahsen bunun çok ilginç bir araştırma konusu olduğunu düşünüyorum. Gelecekte kim bilir, işlemciler bu şekilde yapılır, küçük hesaplama alanları gibi. Bunun için sağlam bir referans yok, web'de bakabilirsiniz.


3

Tamamen işlevsel programlar, bağımsız ifadelerin paralel yürütülmesine izin verir. Dolayısıyla, onları paralel hesaplama modelleri olarak sayardım.


İşlevsel programlama ile ilişkilendirilmiş belirli bir maliyet modeli yoktur, bu nedenle bu soruya cevap vermez. Bkz. Cstheory.stackexchange.com/questions/376/…
Charles Stewart

2
Bu tür lambda-matematiğe dayalı diller için değerlendirme mekanizması, gerçekten gerçek donanıma doğrudan bir eşleştirmesi bulunmayan redüksiyondur. Bu yüzden Haskell'in hala “par” gibi açık paralel yapılar ortaya koyması gerekiyor. başvuru: csg.csail.mit.edu/projects/languages/ph.shtml
Beef

3

Bader-Jaja yaklaşımını tercih ederim (bkz. Bölüm 2.1). Karmaşıklığı mesaj iletme sorunu olarak modelliyorsunuz. Gönderilen her mesaj için, iletişimi başlatmak için gecikme süresinin bir değişkeni ve bant genişliği için bir değişken vardır.

tumptump


-3

Cloud Cloud'dan özellikle bahsettiniz. ile bu alanda sadece birkaç yıl yoğun yenilik içinde olmuştur Amazon elastik hesaplama bulut, google app motor ve çeşitli araçlar ve bunlarla ilişkili kavramsal paralel işlem "modellerinin".

özel açık kaynaklı araçlar arasında google'ın Mapreduce , Apache Hadoop ve paralelleştirme algoritması "en iyi uygulamalar" ve "tasarım desenleri" ile yeni, güçlü, yaygın olarak adapte edilmiş standartlar olarak ortaya çıkan NoSQL veritabanları yer alıyor. Ayrıca memcacheD , bellek içi dağıtılmış bir veritabanı olarak giderek daha fazla kullanılıyor. bunun bir örneği, son bir makalede [1] açıklanan Facebook'ta kullanılıyor.

[1] bir çok çekirdekli anahtar değer kayıtlı Berezecki ve ark


tekrar. Ben sormak modelleri veya paralel hesaplama. Alet değil. MapReduce böyle bir modeldir. Ancak Hadoop ve NoSQL değildir. Hadoop, Java tabanlı bir MapReduce sertifikasıdır. NoSQL, söyleyebileceklerimden daha rahat anahtar mağazalar için bir model.
Nicholas Mancuso

MapReduce bir araç olarak başladı ve yaygın kullanım / benimseme yoluyla bir modele mezun oldu. diğerleri ile aynı. Hadoop, MapReduce ile aynı değildir ancak belki benzerdir. evet, sanırım Suresh’in MapReduce’un da dahil olduğu üst oylama cevabı beni çok etkiledi, insanlar ne kadar yaygın kullanılırsa kullansınlar ... MapReduce'un yaptığı gibi daha sonra teoriye ilham veren / çapraz bağlayan / süren teoriye ilham verdiklerinde bile ... benim
kötüm

2
Mesele şu ki, soruyu cevaplamıyorsun. Buradaki politika, soru ile temkinli olarak yapılan önerilerin kabul edilebilir cevaplar olmadığıdır. Eğer bu politikayı sevmiyorsan, katılmamayı seçebilirsin. gerçek dünya paralel bir sistemin nasıl modelleneceği hakkında gerçek fikirleriniz varsa , bu daha çok konuyla ilgili olacaktır (hala sorulan soruya cevap olmasa da)
Sasho Nikolov

-3

bu konuda başka bir açı. kuşkusuz ki bu, bazıları tarafından biraz belirsiz ya da yanıltıcı olarak kabul edilebilir, ancak genel olarak, paralellik için biraz doğal olarak iddia edilen olasılıksal algoritmaların paralelleştirilmesi üzerine bazı çalışmalar vardır.

bakınız, örneğin bir İş İstasyonları Kümesinde Paralel Olasılıksal Hesaplamalar Radenski, Vann, Norris:

Olasılık algoritmaları, hesaplanamayan sorunların çözümünde yoğun olarak kullanılan yaklaşık yöntemlerdir. Olasılık algoritmaları küme hesaplamaları için mükemmel adaylardır çünkü çok az iletişim ve senkronizasyon gerektirir. Olasılıklı küme hesaplamaları için genel bir paralel kontrol yapısını genel bir algoritma olarak belirlemek mümkündür . Böyle bir jenerik paralel algoritma, farklı zorlanabilir problemler için yaklaşık paralel çözümler elde etmek amacıyla alana özgü sıralı algoritmalar ile birlikte yapıştırılabilir. Bu yazıda, bir iş istasyonu kümesinde olasılıksal hesaplamalar için genel bir algoritma öneriyoruz. İki genel optimizasyon problemi için spesifik paralel algoritmalar türetmek için bu jenerik algoritmayı kullanıyoruz: sırt çantası problemi ve seyahat eden satıcı problemi.

net olmadığı durumda, olasılıksal hesaplama ve genel dönüşümle birlikte belirtilen "genel bir algoritma olarak ortak paralel kontrol yapısı" ve "model" dir.

olasılıklı hesaplamanın kesinlikle klasik hesaplama veya Turing tamamlanmadığı söylenebilir. öyleyse, özellikle paralel bir bağlamda da olasılıksal hesaplama ile klasik bağdaştırmanın bazı çalışmaları olduğunu unutmayın;

Rao'nun olasılıksal paralel programları hakkında muhakeme:

Algoritmaların tasarımında ve analizinde randomizasyonun kullanılması, bazılarının deterministik bir çözümü olmayan zor problemlere basit ve etkili algoritmalar vaat etmektedir. Sadelik, verimlilik ve çözülebilirlikteki bu kazanç, daha nicel bir kavram için algoritmaların mutlak doğruluk nosyonunun geleneksel bir şekilde anlaşılmasıyla sonuçlanır: 0 ile 1 arasında bir olasılık ile doğruluk rasgeleleştirme fikri olasılıksal paralel programlar hakkında akıl yürütmeyi zorlaştırıyor. Bu yazıda, deterministik veya olasılık 1 olan olasılıksal paralel programların özelliklerini belirleme ve türetme problemini ele alıyoruz.

Elbette QM hesaplama olasılıklı hesaplamaya oldukça benzerdir (bunun bir Karmaşıklık Teorisinin Fortnow Tarafından Kuantum Hesaplama Görüşünü Vurguladığını vurgulayan güzel bir referans ) ve bu yaklaşımların burada, örneğin paralel QM simülasyonunda yapılan çalışmalarda genişletilebileceği konusunda bazı ipuçları vardır.


-6

bu bazıları tarafından tartışmalı olarak kabul edilecektir ve bu açının savunucuları bile araştırmanın ilk aşamalarında kabul etmek zorunda kalacaklardır, ancak temelde kuantum hesaplamanın paralellik ve paralel hesaplama ile pek çok bağlantısı olduğu görülmektedir. referanslar şu anda dağınık durumda ancak ortaya çıkan bir tema kararlı bir araştırmacı tarafından görülebiliyor.

belki de en iyi bağlantı, genel olarak çoğu NP tamamlanmış probleminde hızlanmada kullanılabilir olma anlamında daha genel olduğu gösterilmiş olan Grovers arama algoritmasıdır [5]. Grovers algoritması, paralel veritabanı arama algoritmalarıyla güçlü bir benzetme / bağlantıya sahip gibi görünüyor. En iyi klasik seri algoritmalar aynı performansı sağlayamaz, ancak son zamanlarda en az bir otorite arama için Kalite Yönetimi yaklaşımlarının aslında paralelleştirilmiş klasik algoritmalardan daha iyi performans göstermediğini savunur. [1]

Diğer kanıtlar, kuantum arayışındaki paralelliğe açıkça bakan şemalardır, örneğin [2]. paralel / dağıtılmış işleme [3] [4] ve şema iyi uyuyor ve verimli ve izlenebilir simülasyonlara yol açtığından (30 litre ref [3] 'te simüle edildi), bu dönüşüm de kuantum simülatörleri önerildi. elbette sadece bir tesadüf değildir ve paralel klasik hesaplama ve kalite güvencesi hesaplama arasında daha derin bir köprü olduğunu, ancak şimdiye kadar ortaya çıkarılmamış olduğunu gösterir.

[1] Kuantum araması pratik mi? Viamontes et al tarafından

[2] Wu / Dian’ın paralel üniter ayrımcılık programları ile kesin kuantum araştırması

[3] Niwa, Matsumoto, Imai tarafından kuantum hesaplama için genel amaçlı paralel simülatör .

[4] Beals ve arkadaşları 2012 tarafından verimli dağıtılmış kuantum hesaplama

[5] Furer 2008’in kuantum arama ile NP tamamlanmış problemlerini çözme


@ VNZ, bu en iyi ihtimalle kuantum kavramlarının rastgele bir çit yuvası gibi görünmektedir. Googling "paralel kuantum" ve burada sonuçları listelemek bana ve bunu okuyanlara yararı yok. Topluluğun, itibar puanları için çılgınca bir çizgi çizmekten çok, kendinizi rahat hissettiğiniz ve bilgili olduğunuz cevaplara yanıt vermesinin daha iyi olacağını düşünüyorum. Yapıcı olmayan ve muhtemelen kuantum hesaplamayı paralel arama olarak düşünmek anlamsız. Kuantum hesaplama, açıklamanızı kullanabilmeniz için, paralel arama yapmama ihtimalinizle "güçlü analojiler / bağlantılar" dır.
Nicholas Mancuso

Dogmalarda ne dogmanın öğretildiğini bilmiyorum ama eğer biri dışarıda bir tanesinde gerçekten klasik bir değerlendirmeyi tamamlayan QM'nin şimdiye dek keşfedilmemiş bir yazışması için geçerliliğin olmadığını belirten bir TEMEL DEĞERLENDİRME yerine REFERANS'a sahip. O. QM hesaplaması, kesin cevaplar ala / örneğin kısa faktoring verir, aksi takdirde gerçek bir hesaplama sistemi değildir. QM hesaplamasının bir anlamda paralel klasik hesaplamaya eşdeğer olması gerektiğini göstermenin başka yolları da olabilir ... belki bir ders kitabında olmadığı için yanlış olmalı!
vzn

Burada kuantum hesaplama konusunda tamamen ücretsiz bir kurs var: coursera.org sizin için işleri açıklığa kavuşturabilir.
Nicholas Mancuso

"hodgepodge" gibi ps ... aslında REFS OKUYOR .. ya da belki sadece davanızda onları gözden geçirme göz kırpmak =)
vzn 31:12

1
(6.) Ref. [5] kuantum hesaplamasında aradığınız paralelliğe değinmeden, Grover'in algoritmasının genişletilebileceği yolları anlatıyor. Özetle: kuantum ve paralel hesaplama arasında bağlantı olduğu konusundaki yorumunuz, QM'nin Birçok Dünya Yorumundan kaynaklanıyor gibi görünmektedir. Kapamayın birlikte, biz bu durumlar dışında, ayrıca uncontrovertial değildir ve kesinlikle bize üretken "paralel hesaplama" olarak kuantum hesaplama açıklamak için izin vermez yok için güçlü bir argüman olmadığı ... o hesaplamaları bkz onların varlığı.
Niel de Beaudrap
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.