2012-06-06 7 views
5

मैं उदाहरण के द्वारा सीयूडीए पढ़ रहा हूं और मैंने पाया कि जब उन्होंने घटनाओं की शुरुआत की, तो उन्होंने बनाए गए प्रत्येक कार्यक्रम के लिए cudaEventDestroy कहा।क्या सीयूडीए कार्यक्रमों और धाराओं को हमेशा नष्ट किया जाना चाहिए?

हालांकि मैंने देखा कि कुछ बाद के उदाहरणों ने इस सफाई कार्य को उपेक्षित किया। क्या बनाई गई घटनाओं और धाराओं को नष्ट करने के लिए भूलने के किसी भी अवांछनीय दुष्प्रभाव हैं (यानी जब आप आवंटित स्मृति को मुक्त करना भूल जाते हैं तो स्मृति मेमोरी की तरह)?

उत्तर

4

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

0

आपने पुस्तक के नमूना कोड में बग की पहचान की है।

सीयूडीए कार्यक्रम हल्के वजन वाले हैं, लेकिन संसाधन रिसाव एक संसाधन रिसाव है। समय के साथ, यदि आप उनमें से पर्याप्त रिसाव करते हैं, तो आप उन्हें और नहीं बना पाएंगे।

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