"मेमोरी कोलेसिंग" क्या है?


16

मुझे पता चला कि ग्राफिक प्रोसेसिंग यूनिट में मेमोरी कोलेसिंगिंग नामक कुछ है। इस पर पढ़ने पर मैं इस विषय पर स्पष्ट नहीं था। क्या यह मेमोरी स्तर समानांतरवाद से संबंधित कोई तरीका है।

मैंने Google में खोज की है, लेकिन संतोषजनक उत्तर प्राप्त नहीं कर पाया।

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


मेमोरी-लेवल पैरेललिज्म (MLP) एक बार में कई मेमोरी ट्रांजेक्शन करने की क्षमता है। कई आर्किटेक्चर में, यह एक ही बार में पढ़ने और लिखने दोनों के संचालन की क्षमता के रूप में प्रकट होता है, हालांकि यह आमतौर पर एक बार में कई रीड्स करने में सक्षम होने के रूप में भी मौजूद होता है। संभावित संघर्षों (एक ही स्थान पर दो अलग-अलग मूल्यों को लिखने की कोशिश) के जोखिम के कारण, एक साथ कई लेखन कार्य करना दुर्लभ है। ध्यान दें कि यह वेक्टर मेमोरी ऑपरेशन के समान नहीं है, जैसे कि एक ही 32-बिट रीड में 4 अलग-अलग लेकिन सन्निहित 8-बिट मान पढ़ना।
साई किरन दादी

जवाबों:


11

" कोलेसिंग " को मेमोरी एक्सेस पैटर्न को समेटने के लिए भी संदर्भित किया जा सकता है । इस उपयोग में, कोलेसिंग का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि थ्रेड्स एक साथ चलते हैं, स्मृति को पास तक पहुंचने का प्रयास करें। यह आमतौर पर है क्योंकि:

  • मेमोरी आमतौर पर रैम से बड़े ब्लॉकों में पुनर्प्राप्त की जाती है।
  • कुछ प्रसंस्करण इकाइयाँ भविष्य की मेमोरी एक्सेस और कैश को आगे की भविष्यवाणी करने की कोशिश करेंगी, जबकि स्मृति के पुराने हिस्सों को अभी भी संसाधित कर रही हैं।
  • मेमोरी को क्रमिक रूप से बड़े-लेकिन धीमे कैश के एक पदानुक्रम में कैश किया जाता है।

इसलिए, ऐसे प्रोग्राम बनाना जो पूर्वानुमान योग्य मेमोरी पैटर्न का उपयोग कर सकते हैं, महत्वपूर्ण है। एक थ्रेडेड प्रोग्राम के साथ यह और भी महत्वपूर्ण है, ताकि मेमोरी अनुरोध सभी पर कूद न जाएं; अन्यथा प्रोसेसिंग यूनिट स्मृति अनुरोधों के पूरा होने की प्रतीक्षा कर रही होगी।

समानांतर प्रोग्रामिंग के परिचय से प्रेरित चित्र : पाठ 2 जीपीयू हार्डवेयर और समानांतर संचार पैटर्न :

नीचे: चार धागे, समान मेमोरी एक्सेस के साथ। काले धराशायी आयत एक एकल 4-शब्द मेमोरी अनुरोध का प्रतिनिधित्व करता है।

यहाँ छवि विवरण दर्ज करें

मेमोरी एक्सेस करीब हैं, और इसे एक ही गो / ब्लॉक (या अनुरोधों की कम से कम संख्या) में पुनर्प्राप्त किया जा सकता है।

हालांकि, अगर हम " स्ट्राइड " बढ़ाते हैं थ्रेड्स के बीच पहुंच " को , तो इसके लिए कई और मेमोरी एक्सेस की आवश्यकता होगी। नीचे: दो के एक स्ट्राइड के साथ चार और धागे।

4 मेमोरी को थ्रेड्स, और 2 के स्ट्राइड के साथ 4 थ्रेड्स

यहां आप देख सकते हैं कि इन 4 थ्रेड्स के लिए 2 मेमोरी ब्लॉक अनुरोधों की आवश्यकता होती है। छोटे स्ट्राइड बेहतर है। व्यापक व्यापक, अधिक अनुरोध संभावित रूप से आवश्यक हैं।

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

TikZ स्रोत:


2
मल्टीपल थ्रेड्स एक ही डेटा आइटम (न केवल एक तत्व एक ही बड़े चंक के भीतर) तक पहुंच सकते हैं, कुछ हद तक सिमड आर्किटेक्चर में एसपीएलएटी संचालन के समान (लेकिन अधिक सामान्य)। विलंबता-सहिष्णु थ्रूपुट प्रोसेसर के रूप में, GPUs पहुँच विलंबता को बढ़ा सकता है जब इस तरह के प्रभावी बैंडविड्थ में वृद्धि होती है।
पॉल ए। क्लेटन

दिया गया लिंक टूट गया है।
डैनियल Soutar

3

मुझे लगता है कि मुझे नेट के चारों ओर "coalescing" शब्द के दो उपयोग दिखाई देते हैं, दोनों को स्मृति के साथ करना है। एक मुक्त स्मृति आवंटन को सह रहा है , जो कि प्रश्न में जुड़े विकिपीडिया पृष्ठ से संदर्भित है।


मुक्त स्मृति आबंटन में समन्वय करना

मेमोरी आवंटित करते समय, कभी-कभी मेमोरी मैनेजर में एक स्थिति हो सकती है जहां दो आसन्न मेमोरी ब्लॉक होते हैं जो मुक्त हो जाते हैं। इनको मिलाने से वे एक एकल मुक्त मेमोरी ब्लॉक बन जाएंगे - इसे "कोलेसिंग" कहा जाता है। उदाहरण:

4 आवंटित ब्लॉकों से शुरू:

4 आवंटित ब्लॉक

बाद में, उनमें से एक को मुक्त कर दिया गया है:

अब 1 मुक्त ब्लॉक

और बाद में एक और मुक्त किया जाता है:

अब 2 आसन्न मुक्त ब्लॉक

अब, दो आसन्न मुक्त ब्लॉक क्यों हैं? उन्हें ले जाने:

मुक्त किए गए ब्लॉक को मिलाते हुए, अब 2 आवंटित ब्लॉक, 1 मुक्त किया गया

जैसे ही संभव होता है, या, उदाहरण के लिए, कचरा संग्रहकर्ता में, जब कलेक्टर चलता है, तो तालमेल हो सकता है।

TikZ स्रोत:


मुझे लगता है कि यह उत्तर मुझे पसंद नहीं है। मेमोरी coalescing स्मृति के सन्निहित ब्लॉक पढ़ रहा है जैसा कि आपने अन्य उत्तर में प्रदान किया है। यदि संभव हो तो कृपया इस उत्तर और प्रश्न के लिंक को हटा दें जिसे आपने संपादित किया है
साई किरन भव्य

@saikirangrandhi मैं संदर्भ के लिए उत्तर रखूंगा। जैसा कि आप चाहते हैं आप अपने प्रश्न को संपादित को संशोधित / पूर्ववत कर सकते हैं; आप सवाल के नीचे "संपादित करें" दबा सकते हैं।
रियलज स्लाव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.