Hızlandırma sonuçlarını bildirmek için doğru istatistikler


12

Diyelim ki bazı kodların yavaş ve hızlı sürümleri var ve ikisini karşılaştıran bir hızlandırma numarası bildirmek istiyorum. Yavaş sürümünü çalıştırmak sürelerini ve hızlı versiyonu m süreleri üreten kez ( s 1 , ... , s , n ) ve ( f 1 , ... , f m ) . Bir hızlandırma üretmenin en basit yolu ortalamaları ortalamaktır: ˉ snm(s1,,sn)(f1,,fm) Ancak, bu aykırı değerleri hesaba katmaz.

s¯f¯=mi<nsinj<mfj

Soru : Hızlanma sayılarını bildirirken kullanılacak en iyi istatistik nedir?


3
Ortalama ile karşılaştırıldığında standart sapma ne kadar büyük? Ne yaparsanız yapın, ne yaptığınızı rapor etmeli ve büyükse hata çubuklarını koymalısınız. Gerçekten büyükse, kaynağı araştırmalısınız. Çoğu bilgisayar kodu, programın kendisinde rasgele bir bileşen yoksa veya bilgisayar kaynaklarını başkalarıyla paylaşmadığınız sürece oldukça belirleyici bir şekilde çalışmalıdır (bu yalnızca küme düğümleri değil, ağ veya disk olabilir). Disk kaynakları için rekabet sorunsa, G / Ç devre dışı (oldukça yaygın) ile performans bildirmeyi düşünebilirsiniz - not etmeyi unutmayın.
Bill Barth

Edison'da (bir Cray süper bilgisayarı), iki örnek arasında% 2 fark var. Dizüstü bilgisayarımda 10 örnek üzerinde ölçülen% 6-8 standart sapma görüyorum. Her ikisi de yalnızca bilgi işlem çekirdeği içindir, G / Ç yok.
Geoffrey Irving

Varyanslar zaten oldukça düşükse neden aykırı değerlerden bahsettiğimi açıklığa kavuşturmak için: bu, bu raporda ideal olmayan yolu bile bilmek istediğim yeterince temel bir istatistiksel niceliktir.
Geoffrey Irving

2
Soru şu ki, ne iletişim kurmaya çalışıyorsunuz ve formül bunu en iyi şekilde iletecek mi? Nedeni kağıdın merkezinde olmadıkça, hızlanmada koşma değişkenliğini bildiren bir kağıt gördüğümü hiç sanmıyorum. Çalışma süresi ile işlemci / görev / iş parçacığı sayısı arasında doğrusal bir ilişki ortaya koyduğumuz göz önüne alındığında, muhtemelen araçların oranını kullanmanız iyi olur, ancak daha sonra maksimum-min ve min-max oranı ile hata çubuğu aralığı göstermenin önemli olduğunu düşünüyorsanız. Ayrıca, değişkenliğinizi azaltmak için muhtemelen frekans ölçeklendirme ve görev sabitleme seçeneklerine bakmalısınız. :)
Bill Barth

ES'yi ortadan kaldırmak için çok fazla hile olabilir. Derleyici optimizasyonları arasında "Yazarken Kopyala" püf noktaları arasında gerçekten belirgin olmayan bağlar aşağıya doğru olabilir. Genellikle d1 = loadData () prototipini takip ederim; d2 = kopya (d1); r1 = algo (d2); r2 = algo (d1) ve yalnızca ikinci çalışmanın zamanını göz önünde bulundurun.
meawoppl

Yanıtlar:


9

Bill Barth'ın yukarıda söylemiş olduğu her şeye ek olarak, insanların genellikle birkaç koşunun en hızlılarını bildirdiklerini söyleyeyim. Mantığı fiili çalışma süresi olmasıdır idealdir bu kullanarak biz ilgilenen olmayan tüm gürültü, olduğundan çalışma zamanı artı diğer süreçler sonucunda yavaş çıkışlar herhangi bir sayı çalışan işletim sistemi gecikmeler, ağ gecikmeler vb hızlı koşmak zamanı geldiğinde gerçekten bilmek istediğimiz kişiye en yakın olanı.


Ne yazık ki, bu ilke iki algoritma arasındaki hızlanmayı bildirirken yardımcı olmaz.
Geoffrey Irving

3
@GeoffreyIrving, neden olmasın? Her iki algoritma da düşük sıralı ve parametreden bağımsız terimler göz ardı edildiğinde problem boyutuna (veya işlemci sayısına veya diğer istatistiksel olmayan parametrelere) karşı teorik bir performans beklentisine sahiptir. En hızlı zamanı kullanmak (ve bu gerçeği not etmek), sadece bu ek terimleri görmezden gelmenize yardımcı olur. Bu iyi bir strateji gibi görünüyor. Bize farklı bir şekilde söylemediğiniz sürece, algoritmalar arasındaki farkı en etkili şekilde nasıl ileteceğinizi anlamaya çalışıyorsunuz ve Wolfgang'ın önerisi geleneksel ve beklenen bir şeydir, bu nedenle bu bilgileri en iyi şekilde iletebilir.
Bill Barth

1
Hata! Evet, haklısın. İfademi memnuniyetle geri çekiyorum.
Geoffrey Irving

(+1) Bir yan soru: Simetrik olmayan gürültü dağılımı, vb. Hakkındaki görüşünüzü tamamlıyorum . Diyelim ki bir uygulama A ve B ile bir uygulama yapıyorum ve bunları karşılaştırıyorum ve makul miktarda çalıştırmadan sonra, 25'inci kuantil ve medyan ve ortalama A'da B'den ~ 4,5x daha hızlıdır,% 0 kantil ~ 3x'dir. Uygulamayı A ile B arasında karşılaştırırken, şu gerçeğe rağmen:, yes A is theoretically only ~3x fasterB yerine A uygulamasını kullanırken hızlanmanın yaklaşık 3 katı bir temsili beklenmiyor mu? (Bu arada gerçek bir hayat örneği)
usεr11852

1
@ usεr11852: Her şey bulunduğunuz sisteme bağlı. Medyan veya 25. kuantiliniz, istatistikleri burada varsaydığınız şekilde bozacak kadar uzaksa, muhtemelen çok gürültülü bir sistemdesiniz. Örneğin, başkaları tarafından aynı anda kullanılabilir, vb. Bu, başkalarının tekrar deneyleri için sahip olduğu sistemleri temsil etmeyebilir ve bu durumda sonuçlarınızı sattığınız gibi geliyor bana. Bu yüzden hala en iyi koşuları rapor etmeyi öneriyorum. Ne yaparsanız yapın, hangi istatistikleri kullandığınızı raporda bildirmelisiniz.
Wolfgang Bangerth

1

İstatistiksel bir tahmin vermek için medyanı kullanmanızı öneririm . Ortalamadan farklı olarak, medyan aykırı değerlerle bozulmaz.


1
Tüm gürültünün pozitif olduğu veriler için (yani, simetrik olmayan bir gürültü dağılımıyla), medyan diğer tüm istatistikler kadar kötüdür. Çalışma zamanları için, gerçekten de durum budur, yukarıdaki cevabıma bakın.
Wolfgang Bangerth

0

Standart sapma ihmal edilemezse, her biri algoritmalardan birinin zamanlamasıyla yapılandırılmış iki kutu grafiği yan yana kullanabilirsiniz . Sayısal analizde elbette standart değildirler, ancak bu tür bilgileri göstermek için harika bir iş çıkarırlar.

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.