स्पीडअप परिणामों की रिपोर्टिंग के लिए सही आंकड़े


12

मान लें कि मेरे पास कुछ कोड के धीमे और तेज संस्करण हैं, और दो की तुलना करते हुए एक गति संख्या रिपोर्ट करना चाहते हैं। मैं धीमे संस्करण बार और तेज संस्करण बार जो कई बार उत्पादन कर रहा है और । स्पीडअप का उत्पादन करने का सबसे सरल तरीका औसत साधन है: हालांकि, यह को ध्यान में नहीं रखता है।मीटर ( एस 1 , ... , एस एन ) ( 1 , ... , मीटर ) ˉ रोंnm(s1,,sn)(f1,,fm)

s¯f¯=mi<nsinj<mfj

प्रश्न : स्पीडअप संख्या की रिपोर्टिंग करते समय उपयोग करने के लिए सबसे अच्छा आँकड़ा क्या है?


3
माध्य की तुलना में मानक विचलन कितना बड़ा है? आप जो कुछ भी करते हैं, आपको रिपोर्ट करना चाहिए कि आपने क्या किया और शायद बड़े होने पर त्रुटि सलाखों को डाल दिया। यदि वे वास्तव में बड़े हैं, तो आपको स्रोत की जांच करनी चाहिए। अधिकांश कंप्यूटर कोड को समय के अनुसार नियतकालिक रूप से चलना चाहिए जब तक कि कार्यक्रम का एक यादृच्छिक घटक न हो या आप दूसरों के साथ कंप्यूटर संसाधन साझा कर रहे हों (यह नेटवर्किंग या डिस्क हो सकता है, न कि केवल क्लस्टर नोड्स)। यदि डिस्क संसाधनों के लिए प्रतिस्पर्धा समस्या है, तो आप I / O अक्षम (काफी सामान्य) के साथ रिपोर्टिंग प्रदर्शन पर विचार कर सकते हैं - बस इसे नोट करना सुनिश्चित करें।
बिल बर्थ

एडिसन (एक क्रे सुपरकंप्यूटर) पर, मेरे पास दो नमूनों के बीच 2% अंतर है। मेरे लैपटॉप पर मुझे 10 नमूनों में 6-8% मानक विचलन मापा जाता है। दोनों केवल गणना कर्नेल के लिए हैं, I / O नहीं।
ज्योफ्री इरविंग

यह स्पष्ट करने के लिए कि मैं उल्लिखित उल्लंघनों का उल्लेख क्यों कर रहा हूं यदि संस्करण पहले से ही काफी कम हैं: यह एक पर्याप्त मौलिक सांख्यिकीय मात्रा है जिसे मैं इसे रिपोर्ट करने का आदर्श तरीका जानना चाहूंगा, यहां तक ​​कि मैं इस विशेष मामले में ठीक नहीं हूं।
ज्योफ्री इरविंग

2
सवाल यह है कि आप क्या संवाद करने की कोशिश कर रहे हैं, और सूत्र क्या सबसे अच्छा संवाद करेंगे? मुझे नहीं लगता कि मैंने कभी ऐसा कोई पेपर देखा है जो स्पीडअप में रन-टू-रन परिवर्तनशीलता की रिपोर्ट करता है जब तक कि कारण कागज के लिए केंद्रीय नहीं था। यह देखते हुए कि हम रन टाइम और प्रोसेसर / टास्क / थ्रेड काउंट के बीच एक रैखिक संबंध बनाते हैं, आप संभवतः साधनों के अनुपात का उपयोग करने के लिए ठीक हैं, लेकिन फिर त्रुटि बार जो कि अधिकतम-से-मिनट और मिन-टू-मैक्स के अनुपात के साथ है अगर आपको लगता है कि रेंज दिखाना महत्वपूर्ण है। इसके अलावा, आपको संभवतः अपनी परिवर्तनशीलता को कम करने के लिए अपनी आवृत्ति स्केलिंग और कार्य पिनिंग विकल्पों को देखना चाहिए। :)
बिल बर्थ

IO को खत्म करने में बहुत सारी चालबाजी हो सकती है। कंपाइलर ऑप्टिमाइज़ेशन के बीच "कॉपी ऑन राइट" ट्रिक्स में नीचे की ओर गैर-स्पष्ट संबंध हो सकते हैं। मैं आमतौर पर d1 = loadData () के प्रोटोटाइप का पालन करता हूं; d2 = copy (d1); r1 = algo (डी 2); r2 = algo (d1), और केवल दूसरे रन के समय पर विचार करें।
meawoppl

जवाबों:


9

बिल बार्थ ने पहले ही ऊपर कहा है कि सभी के अलावा, मैं यह उल्लेख करता हूं कि लोग अक्सर कई रनों के सबसे तेज होने की रिपोर्ट करते हैं । औचित्य यह है कि वास्तविक रन टाइम आदर्श रन टाइम है और रनिंग की अन्य प्रक्रियाओं, ओएस देरी, नेटवर्क देरी, आदि के कारण किसी भी संख्या में धीमी गति से। चूंकि ये सभी शोर हैं जिनमें हम रुचि नहीं रखते हैं, सबसे तेज रन समय का उपयोग करता है। हम जिसे वास्तव में जानना चाहते हैं, उसके सबसे करीब।


दुर्भाग्य से, दो एल्गोरिदम के बीच स्पीडअप की रिपोर्ट करते समय यह सिद्धांत मदद नहीं करता है।
ज्योफ्री इरविंग

3
@GeoffreyIrving, क्यों नहीं? दोनों एल्गोरिदम में कम-क्रम और पैरामीटर-स्वतंत्र शर्तों के साथ सैद्धांतिक प्रदर्शन अपेक्षा बनाम समस्या का आकार (या प्रोसेसर गणना या अन्य गैर-सांख्यिकीय पैरामीटर) की अनदेखी है। सबसे तेज़ समय का उपयोग करना (और इस तथ्य पर ध्यान देना) बस आपको इन अतिरिक्त शर्तों को अनदेखा करने में मदद कर रहा है। जो एक अच्छी रणनीति की तरह लगता है। जब तक आप हमें अलग तरीके से नहीं बताते हैं, ऐसा लगता है कि आप यह पता लगाने की कोशिश कर रहे हैं कि एल्गोरिदम के बीच अंतर को सबसे प्रभावी ढंग से कैसे संवाद किया जाए, और वोल्फगैंग का सुझाव पारंपरिक और अपेक्षित है ताकि यह उस जानकारी को सर्वश्रेष्ठ रूप से बता सके।
बिल बर्थ

1
उफ़, हाँ, तुम सही हो। मैं खुशी-खुशी अपना बयान वापस लेता हूं।
ज्यॉफ्री इरविंग

(+1) एक पक्ष-प्रश्न: मैं गैर-सममितीय शोर वितरण इत्यादि के बारे में आपकी बात को पूरा करता हूं । आइए हम कहते हैं कि मैं एक कार्यान्वयन A बनाता हूं, और एक कार्यान्वयन B और मैं उन्हें बेंचमार्क करता हूं और उचित मात्रा में रन के बाद, 25-वें मात्रात्मक और माध्यिका और माध्य A से B में 4.5 गुणा अधिक तेज है जबकि 0% मात्रा ~ ~ 3x है। इस तथ्य के बावजूद कि ए से बी के कार्यान्वयन की तुलना करते समय: yes A is theoretically only ~3x fasterए, बी के बजाय ए का उपयोग करते समय गति-अप पर एक ~ 3x गति-अप असंवेदनशील नहीं हो सकता है? (वैसे यह एक वास्तविक जीवन का उदाहरण है)
us11r11852

1
@ us @r11852: यह सब उस सिस्टम पर निर्भर करता है जो आप कर रहे हैं। यदि आपका माध्यिका या 25 वाँ मात्रात्मक रूप इतना अलग है कि आप जिस तरह से यहाँ परिकल्पना करते हैं उसमें आँकड़ों को विकृत करने के लिए हैं, तो आप एक ऐसे सिस्टम पर होने की संभावना है जिसमें बहुत अधिक शोर है। उदाहरण के लिए, इसका उपयोग अन्य लोगों द्वारा उसी समय किया जा सकता है, आदि जो उन प्रणालियों के प्रतिनिधि नहीं हो सकते हैं जो दूसरों ने अपने दोहराए गए प्रयोगों के लिए की हैं, और यह मुझे अच्छा लगेगा जैसे आप उस मामले में अपने परिणामों की देखरेख कर रहे हैं। इसलिए, मैं अभी भी सर्वश्रेष्ठ रनों की रिपोर्ट करने का सुझाव देता हूं। आप जो कुछ भी करते हैं, आपको कागज में रिपोर्ट करना चाहिए कि आप किन आंकड़ों का उपयोग करते हैं।
वोल्फगैंग बंगर्थ

1

मेरा सुझाव है कि आप सांख्यिकीय अनुमान लगाने के लिए माध्यिका का उपयोग करें । माध्य के विपरीत, माध्यिका आउटलेर्स द्वारा दूषित नहीं है।


1
डेटा के लिए जहां सभी शोर सकारात्मक हैं (यानी, गैर-सममित शोर वितरण के साथ), माध्यिका किसी अन्य सांख्यिकीय के समान खराब है। रन-टाइम के लिए, यह वास्तव में मामला है, ऊपर मेरा जवाब देखें।
वोल्फगैंग बैंगर्थ

0

यदि मानक विचलन नगण्य नहीं है, तो आप दो बॉक्स भूखंडों का उपयोग कर सकते हैं , प्रत्येक का निर्माण एल्गोरिदम में से एक के समय के साथ किया जा सकता है। वे सभी तरीकों से संख्यात्मक विश्लेषण में मानक नहीं हैं, लेकिन वे इस तरह की जानकारी प्रदर्शित करने में एक महान काम करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.