Log-log paralel ölçeklendirme / verimlilik grafikleri


17

Kendi çalışmalarımın çoğu algoritma ölçeğini daha iyi hale getirme etrafında dönüyor ve paralel ölçekleme ve / veya paralel verimliliği göstermenin tercih edilen yollarından biri, bir algoritma / kodun performansını çekirdek sayısı, örneğin ör.

yapay paralel ölçekleme çizimi

burada ekseni çekirdek sayısını ve eksenini bir miktar metrik temsil eder , örneğin birim zaman başına yapılan iş. Farklı eğriler 64 çekirdekte sırasıyla% 20,% 40,% 60,% 80 ve% 100 paralel verimlilik göstermektedir.xy

Ne yazık ki, birçok yayında bu sonuçlar bir log-log ölçeği ile çizilir , örneğin bu veya bu makaledeki sonuçlar . Bu log-log grafiklerindeki problem, gerçek paralel ölçeklendirmeyi / verimliliği değerlendirmenin inanılmaz derecede zor olmasıdır;

resim açıklamasını buraya girin

Yukarıdaki ile aynı çizim, ancak log-log ölçekleme ile. Şimdi% 60,% 80 veya% 100 paralel verimlilik için sonuçlar arasında büyük bir fark olmadığını unutmayın. Burada biraz daha kapsamlı yazdım .

İşte sorum: Günlük kaydı ölçeklemede sonuçları göstermek için hangi gerekçe var? Kendi sonuçlarımı göstermek için düzenli olarak doğrusal ölçeklendirme kullanıyorum ve kendi paralel ölçekleme / verimlilik sonuçlarımın başkalarının (log-log) sonuçları kadar iyi görünmediğini söyleyerek hakemler tarafından düzenli olarak dövülüyorum, ama benim hayatım için neden çizim stillerini değiştirmem gerektiğini göremiyorum.

Yanıtlar:


16

Şu anda bir dizi karşılaştırılabilir grafik içeren bir makale yazıyoruz ve aşağı yukarı aynı problemi yaşadık. Makale, bir BlueGene'de 1 ila 100k arasında değişen çekirdek sayısı üzerindeki farklı algoritmaların ölçeklendirmesini karşılaştırmakla ilgilidir. Bu durumda loglogramların kullanılmasının nedeni, söz konusu büyüklük sıralarının sayısıdır. Doğrusal bir ölçekte 6 büyüklük sırası çizmenin bir yolu yoktur.

Ve gerçekten de, loglogdaki çekirdek sayısı üzerinden zamanı çizerken, algoritmalar, aşağıdaki grafikte görebileceğiniz gibi, çok ayırt edici değildir. Loglog ölçeğinde bir dizi algoritmanın zamanlaması.  Farklı algoritmaları ayırt etmek zordur.

Bu nedenle, paralel verimliliği yarılog ölçeğinde zamanlama yerine çekirdek sayısı üzerine çizmeye karar verdik . Paralel verimlilik olarak tanımlanır , burada tek bir çekirdeğin kullanıldığı zamandır, çekirdeğinin kullanıldığı zamandır ve çekirdek sayısıdır. Temel olarak, algoritmalarında bir algoritmanın verimliliğini anlatır .Ep=T1/(pTp)T1TpppEpp

Ne yazık ki, bunu yaparken, zamanlamalardaki mutlak farklılıklar bir rol oynamaz (yani bir algoritma diğerinden on kat daha yavaş olduğunda). Bununla ilgilenmek için, tarafından tanımlanan "göreceli paralel verimlilik" dediğimiz şeyi kullanıyoruz , burada en hızlı algoritmanın zamanıdır .Ep=Tref/(pTp)Tref

Göreceli paralel verimliliğin bir yarı log ölçeğinde çizilmesi, bir algoritmanın ölçeklendirilmesini açıkça gösterir ve ayrıca algoritmaların birbirlerine göre nasıl performans gösterdiğini gösterir. Çok sayıda algoritmanın çekirdek sayısına göre göreceli paralel verimliliği.


2
x

Grafiklerin, günlük ölçeğinde oldukça hızlı bir şekilde düştükleri için, diğer ölçekleme çizimleri kadar etkileyici görünmediğine dikkat edin. Ayrıca, teorik olarak sağ kenarda daha fazla ayrıntı görmek için bir loglog grafiğindeki verimliliği de çizebilirsiniz. Bununla birlikte, bunun büyük olasılıkla büyük ilgi görmeyen çok düşük verimliliklere ayrıntılı olarak baktığınız anlamına geldiğini unutmayın.
14'te olenz

14

Georg Hager bu konuda Kitleleri Kandırmak - Dublör 3: Kütük ölçeği senin arkadaşın .

Güçlü ölçeklemenin log-log grafiğinin üst uçta çok fazla fark etmediği doğru olsa da, ölçeklerin daha fazla büyüklük düzeyinde gösterilmesine izin veriyorlar. Bunun neden faydalı olduğunu görmek için, düzenli iyileştirme ile 3D bir sorun düşünün. Doğrusal bir ölçekte, yaklaşık iki büyüklük düzeyinde performansı gösterebilirsiniz, örneğin 1024 çekirdek, 8192 çekirdek ve 65536 çekirdek. Okuyucunun arsadan daha küçük bir şey çalıştırıp çalıştırmadığınızı söylemesi imkansızdır ve gerçekçi olarak, arsa çoğunlukla en büyük iki koşuyu karşılaştırır.

Şimdi varsayalım ki, bellekte çekirdek başına 1 milyon ızgara hücresi sığabiliriz, bu da 8 faktörlü iki kez güçlü ölçeklemeden sonra, çekirdek başına hala 16k hücreye sahip olabileceğimiz anlamına gelir. Bu hala büyük bir alt alan boyutu ve birçok algoritmanın verimli bir şekilde çalışmasını bekleyebiliriz. Grafiğin görsel spektrumunu (1024 ila 65536 çekirdek) ele aldık, ancak güçlü ölçeklemenin zorlaştığı rejime bile girmedik.

Bunun yerine, çekirdek başına 1 milyon ızgara hücresi ile 16 çekirdeğe başladığımızı varsayalım. Şimdi 65536 çekirdeğe ölçeklenirsek, çekirdek başına sadece 244 hücre olacak, bu da çok daha ayırt edici olacak. Bir günlük ekseni, 16 çekirdekten 65536 çekirdeğe kadar spektrumu açıkça temsil etmenin tek yoludur. Tabii ki hala doğrusal bir eksen kullanabilir ve "16, 128 ve 1024 çekirdek için veri noktaları şekilde örtüşür" diyen bir altyazı kullanabilirsiniz, ancak şimdi göstermek için şeklin kendisi yerine kelimeler kullanıyorsunuz.

Bir günlük kaydı ölçeği, ölçeklemenizin tek bir düğümün veya rafın ötesine geçmesi gibi makine özniteliklerinden "kurtarmasına" olanak tanır. Bunun istenip istenmediği size bağlıdır.


xy

1
Öyle çok güçlü ölçeğine ölçek iki daha 4096 kat tek sorun daha zor farklı 64 her kat sorun boyutları. Verdiğim örnekte, iki bağımsız vakanın% 95'ten daha iyi verimlilik göstermesini sağlamak kolay, ancak tek bir kombine kasanın% 30'dan daha az verime sahip olması kolay. Bilim ve endüstride, istenen dönüş süresinin algoritmanın "rahat" olduğu dar boyut aralığında kalması için önceden belirlenmiş bir neden yoktur.
Jed Brown

Birinden binlere kadar ölçeklendirmenin büyük zorluk olduğuna tamamen katılıyorum! Farklı büyüklükleri farklı problemler olarak görmemizin nedeni, son kullanıcı için farklı şeyler anlamına gelmesidir. Örneğin MD'de, çoğu biyologun bodrum katında bir BlueGene yoktur, ancak bazı çok çekirdekli iş istasyonlarına, hatta orta boyutlu bir kümede (az sayıda düğüm) bir süre hibe ve büyük ölçüde bakan insanlara sahiptir. Ancak CFD sorunları, tek düğümlü durum için fazla umursamaz çünkü problem belleğe sığmaz. Bu algoritmanın rahatlığı değil, kullanıcının kurulumu ile ilgili.
Pedro

2

Jed'in yanıtında söylemesi gereken her şeye katılıyorum, ancak aşağıdakileri eklemek istedim. Martin Berzins ve meslektaşlarının Uintah çerçeveleri için ölçeklendirme gösterme şeklinin hayranı oldum. Kodun log-log eksenleri üzerindeki zayıf ve güçlü ölçeklenmesini çizerler (yöntemin adım başına çalışma süresini kullanarak). Ben nasıl kodu mükemmel ölçekler gösterir düşünüyorum (mükemmel ölçekleme sapması belirlemek biraz zor olsa da). Bkz. Sayfa 7 ve 8 bu * kağıdın 7 ve 8 rakamları . Ayrıca her ölçeklendirme şekline karşılık gelen sayıları içeren bir tablo verir.

Bunun bir avantajı, sayıları verdikten sonra, bir gözden geçirenin söyleyebileceği çok şey olmaması (veya en azından çürütemeyeceğiniz çok fazla şey olmaması).

* J. Luitjens, M. Berzins. 24. UEEE Uluslararası Paralel ve Dağıtılmış İşleme Sempozyumu (IPDPS10), Atlanta, GA, ss. 1--10. “Uintah'ın Performansının Geliştirilmesi: Büyük Ölçekli Uyarlanabilir Bir Mesh Hesaplama Çerçevesi”. 2010. DOI: 10.1109 / IPDPS.2010.5470437


Görüntüyü doğrudan cevabınıza gömme şansınız var mı?
Aron Ahmadia

Figürlerini ödünç almak için muhtemelen adil bir kullanım olsa da, yazarların sitesine trafik çekmeyi tercih ederim. Belki bazı sayılar ve kendi grafiğimi yapıp daha sonra bir figürle geri döneceğim.
Bill Barth

Bu açıdan, görüntüyü yazarın sitesine bağlanacak şekilde sarabilir ve bağlantıdaki metin miktarını artırabilirsiniz. Bunu daha fazla tartışmak isterseniz, bir meta / sohbet dizisi açabilirim.
Aron Ahmadia

@BillBarth Bağlantınız şimdi ana sayfalarına yönlendiriliyor. Düzeltebilir veya istenen görüntüyü gömebilir misiniz?
Jed Brown

1
@JedBrown Bağlantı düzenlendi. Tam referans eklendi. DOI ekledi.
Bill Barth
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.