FLOPs की मात्रा का निर्धारण कैसे करें मेरा कंप्यूटर सक्षम है


15

मैं FLOPs (फ्लोटिंग पॉइंट ऑपरेशंस) की सैद्धांतिक संख्या निर्धारित करना चाहूंगा जो मेरा कंप्यूटर कर सकता है। क्या कोई भी मेरी इस के साथ मदद कर सकता है। (मैं अपने कंप्यूटर की तुलना कुछ सुपर कंप्यूटरों से करना चाहूँगा, ताकि उनके बीच अंतर का अंदाजा लगाया जा सके)

जवाबों:


9

सैद्धांतिक उच्च फ्लॉप / एस द्वारा दिया जाता है: कोर की संख्या में आसान है। औसत आवृत्ति, सिद्धांत में, टर्बो बूस्ट (इंटेल) या टर्बो कोर (एएमडी) की कुछ मात्रा में कारक होनी चाहिए, लेकिन ऑपरेटिंग आवृत्ति एक अच्छा निचला बाध्य है। चक्र प्रति संचालन वास्तुकला पर निर्भर है और इसे खोजने के लिए मुश्किल हो सकता है (सैंडीब्रिज और आईवीब्रिज के लिए 8, स्लाइड 26 देखें )। यह इस स्टैक ओवरफ्लो प्रश्न का विषय है , जिसमें आधुनिक आर्किटेक्चर के एक समूह के लिए नंबर शामिल हैं।

Number of CoresAverage frequencyOperations per cycle

1
1.8 GHz, इंटेल टर्बो बूस्ट प्रौद्योगिकी: ठीक है, मैं 2 कोर, ऑपरेटिंग आवृत्ति है 3.00 Ghz, मैं चक्र के अनुसार संचालन नहीं मिल सकता है, यहाँ वेबसाइट है: ark.intel.com/products/75460/... धन्यवाद
Ol

हसवेल 16 डीपी / चक्र कर सकते हैं। मैंने अभी उत्तर निकाय में एक लिंक को SO उत्तर में जोड़ा है।
मैक्स हचिंसन

क्या इसका मतलब है कि मेरा कंप्यूटर ऐसा कर सकता है: 2 x 3,000,000,000 Hz x 16 = 96 Giga FLOPs?
ओल 'विश्वसनीय

इसका मतलब है कि यह वास्तविक औसत आवृत्ति के आधार पर 2 * 1.8 GHz * 16 DP = 57.6 GFLOP / s और 96 GFLOP / s के बीच कर सकता है। यदि आपको एकल संख्या का उपयोग करने की आवश्यकता है, तो 57.6 अधिक उचित है, IMO।
मैक्स हचिंसन

2
आमतौर पर FLOP दरें एक प्रोसेसर की 'अच्छाई' का एक खराब माप हैं। उदाहरण के लिए scicomp.stackexchange.com/questions/114/… देखें । आप अपने कार्य की सीमित लागत (उदाहरण के लिए बाध्य बनाम मेमोरी बाउंड बनाम डिस्क बाउंड) के बारे में सोचना चाहते हैं और संबंधित हार्डवेयर (कंप्यूट सिस्टम, मेमोरी सिस्टम, I / O) पर ध्यान केंद्रित कर सकते हैं।
मैक्स हचिंसन

4

आपको अपनी मशीन में सीपीयू के मॉडल और विक्रेता को जानना होगा। आपके पास एक बार, आप विक्रेता की वेबसाइट (या शायद विकिपीडिया पर) घड़ी की दर, चिप्स / सॉकेट की संख्या, प्रति चिप कोर की संख्या, प्रति चक्र फ्लोटिंग पॉइंट ऑपरेशन की संख्या और उन कार्यों की वेक्टर चौड़ाई देख सकते हैं। । फिर, आप बस गुणा करें।

उदाहरण के लिए, भगदड़ में इंटेल Xeon E5-2680 "सैंडी ब्रिज" प्रोसेसर जहां मैं काम करता हूं। चश्मा हैं:

  • 2.7GHz
  • 2 चिप्स / नोड, 8 कोर / चिप
  • 2 वेक्टर निर्देश / चक्र
  • 256-बिट वाइड एवीएक्स निर्देश (4 एक साथ डबल-सटीक ऑपरेंड)

उन गुणा करने से सिस्टम के अन-एक्सेलेरेटेड हिस्से के लिए 345.6 GF / नोड या 2.2 PF मिलता है।

हम आमतौर पर दोहरे-परिशुद्धता (64-बिट) के संचालन के संदर्भ में सोचते हैं, क्योंकि यह हमारे उपयोगकर्ताओं के विशाल बहुमत के लिए आवश्यक सटीकता है, लेकिन यदि आप चाहें तो आप एकल-सटीक शब्दों में गणना को फिर से कर सकते हैं। यह आमतौर पर केवल अंतिम कारक को बदलता है, 4 डीपी फ्लॉप्स / इंस्टेंस के बजाय 8 एसपी फ्लॉप्स / निर्देश कहते हैं, लेकिन यह बेतहाशा अलग हो सकता है। पुराने जीपीयू, उदाहरण के लिए, केवल डीपी ने एसपी की दर से लगभग 1/8 वाँ किया। यदि आप कभी भी अपने सिस्टम के लिए एक नंबर उद्धृत करते हैं, तो आपको इस बारे में स्पष्ट होना चाहिए कि आपने इसका उपयोग किया है यदि यह डबल-सटीक नहीं है क्योंकि लोग मान लेंगे कि यह अन्यथा था।

इसके अलावा, यदि आपकी चिप फ्यूज्ड मल्टी-ऐड (FMA) निर्देशों का समर्थन करती है, और यह उन्हें पूरी दर से कर सकता है, तो ज्यादातर लोग इसे 2 फ़्लोटिंग-पॉइंट ऑपरेशन के रूप में गिनते हैं, हालांकि एक हार्डवेयर प्रदर्शन काउंटर इसे केवल एक निर्देश के रूप में गिन सकता है।

अंत में, आप अपने सिस्टम में मौजूद किसी भी त्वरक के लिए भी ऐसा कर सकते हैं (जैसे कि GPU या Xeon Phi) और सैद्धांतिक प्रदर्शन पाने के लिए CPU प्रदर्शन में उस प्रदर्शन को जोड़ सकते हैं।


यह सीपीयू मॉडल को जानने के लिए पर्याप्त नहीं है, एक को वास्तविक ऑपरेटिंग आवृत्तियों का पता लगाने की आवश्यकता है
अक्षल लगभग निश्चित रूप से द्विआधारी

@ अक्षल, एक सैद्धांतिक विश्लेषण के लिए, नाममात्र आवृत्ति को चुनना शायद ठीक है। यह जानना मुश्किल है कि आपके चिप्स वास्तव में किस आवृत्ति पर चलेंगे क्योंकि यह कार्यभार और आपके एयर कंडीशनिंग की गुणवत्ता पर निर्भर कर सकता है।
बिल बर्थ

2

मैं समझता हूं कि आपने सैद्धांतिक मूल्य के लिए कहा था, लेकिन जैसा कि किसी भी वास्तविक कोड द्वारा लगभग हमेशा अप्राप्य है, यहां तक ​​कि LINPACK, आप बहुत बड़े मैट्रिस के लिए केवल (अनुकूलित) DGEMM चलाना चाहते हैं। इस विधि को पसंद करने का कारण यह है कि यह कुछ विशेष प्रोसेसरों की कुछ कमियों को उजागर करता है जो उन्हें अपने सैद्धांतिक शिखर फ़्लिकर मूल्य को प्राप्त करने से रोकते हैं।

उदाहरण के लिए, NVIDIA GPU वर्तमान में एक ही पाइपलाइन पर पूर्णांक और फ्लोटिंग-पॉइंट ऑपरेशन करते हैं। इसका मतलब यह है कि आप केवल सैद्धांतिक शिखर फ्लॉप / एस प्राप्त कर सकते हैं यदि आप कोई पूर्णांक गणना नहीं करते हैं । सरणी अनुक्रमण और डेटा एक्सेस के किसी अन्य रूप के लिए कहीं-कहीं पूर्णांक अंकगणित की आवश्यकता होती है, कोई कोड NVIDIA GPU पर सैद्धांतिक शिखर फ्लॉप / s प्राप्त नहीं कर सकता है। ज्यादातर मामलों में, कोई ऊपरी सीमा के रूप में ~ 80% देखता है। सीपीयू के लिए जो पूर्णांक और फ्लोटिंग-पॉइंट ऑपरेशन को एक साथ जारी करते हैं, यह एक गैर-मुद्दा है।

कुछ GPU जैसे इंटेल नाइट्स कॉर्नर और ब्लू जीन / क्यू जैसे मल्टीकोर प्रोसेसर पर, समान पाइपलाइन मुद्दों के लिए पारंपरिक सीपीयू की तुलना में शिखर फ्लॉप / एस को प्राप्त करना कठिन है (हालांकि दोनों बड़े DGEMM में ~ 90% चोटी को कम से कम प्राप्त कर सकते हैं। )।


क्यों कोई कोड एक सैद्धांतिक GPU पर सैद्धांतिक शिखर फ्लॉप / s प्राप्त नहीं कर सकता है?
स्काईट्री

पैराग्राफ 2 देखें। हालांकि, यह सब पुराने आर्किटेक्चर के लिए प्रासंगिक था। अधिक हाल के NVIDIA आर्किटेक्चर समवर्ती और फ्लोटिंग-पॉइंट को समवर्ती रूप से निष्पादित कर सकते हैं और बड़े DGEMM में शिखर का 90% प्राप्त कर सकते हैं।
जेफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.