क्या सी # सरणी का सबसेट लेने का एक प्रभावी तरीका है और इसे कोड के दूसरे चोटी (मूल सरणी को संशोधित किए बिना) पास कर सकता है? मैं CUDA.net का उपयोग करता हूं जिसमें एक फ़ंक्शन है जो GPU को सरणी कॉपी करता है। मैं उदाहरण देना चाहता हूँ फ़ंक्शन को सरणी का 10 वां पास करें और इस प्रकार प्रत्येक 10 वीं सरणी को GPU को अलग से कॉपी करें (पाइपलाइनिंग उद्देश्यों के लिए)।सरणी सबसेट कुशलतापूर्वक प्राप्त करना
इस तरह से सरणी की प्रतिलिपि बनाना उतना ही कुशल होना चाहिए जितना इसे एक बार में कॉपी करना। यह असुरक्षित कोड के साथ किया जा सकता है और उचित स्मृति स्थान का संदर्भ दे रहा है लेकिन इसके अलावा मुझे यकीन नहीं है। CopyTo फ़ंक्शन पूरे सरणी को किसी अन्य सरणी में प्रतिलिपि बनाता है ताकि यह उपयोगी दिखाई न दे।
यही अच्छा के मूल कक्षा में एक API है, लेकिन कुशल नहीं thats, एक Array.Copy बहुत तेजी से किया जाएगा। –
किस तरह से यह कुशल नहीं है? यदि आप केवल सरणी के हिस्सों में पुन: प्रयास करना चाहते हैं, तो यह एक सरणी की प्रतिलिपि बनाने से अधिक कुशल है। –
क्षमा करें इसे सही तरीके से समझाएं। पुनरावृत्ति के लिए आप सही हो सकते हैं लेकिन 'उपज' का उपयोग करते समय बहुत सारे ऑपरेशन होते हैं। लेखक के प्रश्न लेखक हैं कि ऊपर वर्णित विधि का उपयोग करते समय, एक सरणी के एक सबसेट को जीपीयू में कॉपी करने के लिए, आपको 'ToArray()' को कॉल करने की आवश्यकता है जो कि भयानक अक्षम होगा। विधि खराब नहीं है लेकिन इस उद्देश्य के लिए अच्छा नहीं है imho। –