2016-12-31 9 views
5

मैंने ओपनग्ल 4.3 कंप्यूट शेडर्स में रेएट्रैसर को कार्यान्वित करने के तरीके पर कुछ ट्यूटोरियल पढ़े, और इससे मुझे कुछ ऐसा लगता है जो मुझे थोड़ी देर के लिए परेशान कर रहा था। GPUs कितनी यादृच्छिक पहुंच को संभालता है, इस तरह कुछ लागू करने के लिए आवश्यक पढ़ता है? क्या प्रत्येक स्ट्रीम प्रोसेसर को डेटा की अपनी प्रति प्राप्त होती है? ऐसा लगता है कि सिस्टम मेमोरी एक्सेस के साथ बहुत भीड़ हो जाएगा, लेकिन यह सिर्फ मेरा खुद का, शायद गलत अंतर्ज्ञान है।जीपीयू यादृच्छिक पहुंच कैसे संभालते हैं?

उत्तर

2

स्ट्रीम मल्टीप्रोसेसरों (एसएम) में कैश हैं, लेकिन वे अपेक्षाकृत छोटे हैं और वास्तव में यादृच्छिक पहुंच में मदद नहीं करेंगे।

इसके बजाय, GPUs के पीछे एक विचार यह एक स्मृति पहुँच विलंबता मुखौटा के लिए है: कि प्रत्येक एसएम निष्पादित करने के लिए, अधिक से अधिक यह कोर होने पर एक से अधिक थ्रेड निर्दिष्ट किया जाए। प्रत्येक निःशुल्क घड़ी में यह कुछ थ्रेड शेड्यूल करता है जो स्मृति पहुंच पर अवरुद्ध नहीं होते हैं। जब थ्रेड के लिए आवश्यक डेटा एसएम कैश में नहीं होता है, तो उस डेटा तक पहुंचने तक थ्रेड स्टाल होता है और निष्पादन के लिए कोई अन्य थ्रेड चुना जाता है।

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

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

संबंधित मुद्दे