वैज्ञानिक कोड प्रदर्शन की अंतर्निहित संरचना क्या है?


11

विभिन्न हार्डवेयर और सॉफ्टवेयर कॉन्फ़िगरेशन वाले दो कंप्यूटरों पर विचार करें। प्रत्येक प्लेटफ़ॉर्म पर सटीक समान सीरियल नवियर-स्टोक्स कोड चलाते समय, क्रमशः कंप्यूटर 1 और 2 के लिए एक पुनरावृत्ति निष्पादित करने के लिए x और y समय लगता है। इस स्थिति में, , कंप्यूटर 1 और कंप्यूटर 2 के बीच चलने का समय अंतर है।Δ=एक्स-y

की परिमाण को प्रभावित करने वाला क्या हो सकता है ? एक स्पष्ट उम्मीदवार सीपीयू है, मेरा मुख्य सवाल यह है कि क्या अन्य कारक हैं जो CPU के हार्डवेयर अंतर के समान आदेश पर पर प्रभाव डाल सकते हैं ?ΔΔ


4
बेशक आपका सिर्फ एक नमूना है। आपको यह भी जांचना चाहिए कि समस्या के आकार और संरचना पर how निर्भर करता है। दूसरा मैं कोड को प्रोफाइल करने का सुझाव दूंगा, अलग-अलग योगदानों के योग में और को विभाजित करने की कोशिश कर रहा हूं , और hw और sw कॉन्फ़िगरेशन के संबंध में कोड के विभिन्न भागों के प्रदर्शन का विश्लेषण कर रहा हूं । ΔΔएक्सy
स्टेफानो एम

4
CACHE लाइन मिस करता है । यह पहली बात है। मेमोरी बहुत सारे एल्गोरिदम के लिए अड़चन कारक है।
हिरण हंटर

जवाबों:


13

यह सूची पूरी तरह से निकट नहीं है, लेकिन उम्मीद है कि इसका आकार संभावित कारकों के पैमाने के रूप में संकेत देगा। मैं मान रहा हूं कि आप अपनी पसंद के मंच पर स्रोत से कोड संकलित कर रहे हैं।

सॉफ्टवेयर

  • मानक लाइब्रेरी प्रदर्शन
  • लिन। Alg। लाइब्रेरी प्रदर्शन (यदि सॉफ़्टवेयर बाहरी पुस्तकालयों से लिंक होता है)
  • संकलक विकल्प
  • संकलक अनुकूलन
  • संकलक झंडे
  • पृष्ठभूमि प्रक्रियाएं (यदि OS भिन्न हैं तो काफी भिन्न हो सकती हैं)

हार्डवेयर

सी पी यू

  • घड़ी की गति
  • आर्किटेक्चर (एक ही निर्देश विभिन्न आर्किटेक्चर पर अलग-अलग चक्रों की संख्या ले सकता है)
  • कैश आकार
  • कैश लेटेंसी
  • SIMD (एकल निर्देश, एकाधिक डेटा) क्षमता

याद

  • चैनल की संख्या
  • गति

HDD

  • गति लिखें / लिखें (केवल परिणाम लिखने के लिए ही महत्वपूर्ण है, इसलिए यह इस बात पर निर्भर करता है कि आप एनएस सॉल्वर के लिए फाइल करने के लिए कितनी बार आउटपुट लिख रहे हैं, लेकिन अन्य कार्यक्रमों के लिए महत्वपूर्ण हो सकता है जो इमेज प्रोसेसिंग जैसी चीजें करते हैं)

यह सब छोटी-छोटी चालों को नजरअंदाज कर रहा है और विभिन्न निर्माताओं ने अपने चिप्स को बाजार में बढ़त देने के लिए शामिल किया है। हालांकि एक बड़ा यह है कि कई विरल रेखीय बीजगणित पुस्तकालय स्मृति बद्ध हैं। एक विरल मैट्रिक्स को करने से कई वास्तविक फ्लॉप के बिना बहुत सारा डेटा घूम जाता है।


मैं CPU में, कोर की संख्या और इसकी SIMD क्षमताओं दोनों को जोड़ूंगा।
पेड्रो

@ पेड्रो ने धारावाहिक सॉल्वर के सवाल के बाद से कोर छोड़ दिया, लेकिन मैं सिमडी जोड़ूंगा। धन्यवाद।
गोड्रिक सेर

1
@GodricSeer मैंने एक मशीन पर संकलित किया और फिर इसे चलाया। फिर, उसी संकलित निष्पादन योग्य का उपयोग करके मैंने इसे दूसरी मशीन पर चलाया। आपके स्पष्टीकरण से ऐसा लगता है कि दूसरे कंप्यूटर पर स्रोत से पुनर्मिलन करना बेहतर होगा। क्या यह मामला है?
Isopycnal Oscillation

1
@IsopycnalOscillation जब एक विशिष्ट मशीन के लिए / पर संकलन करते हैं, तो आप gcc / gfortran विकल्प -march=native, या icc / ifort विकल्प का उपयोग कर सकते हैं -xHOSTजो अंतर्निहित आर्किटेक्चर के लिए विशिष्ट अनुकूलन लागू करेगा।
पेड्रो

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

2

एक्स/yएक्स-y

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

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

यह लिंक मेरे द्वारा उपयोग किए गए अपरंपरागत तरीके के बारे में विस्तार से बताता है।

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