मैं कैसे बता सकता हूं कि मैं कितनी वीडियो कार्ड मेमोरी का उपयोग कर रहा हूं?


15

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

मुझे पता है कि वहाँ उपयोगिताओं हैं जो मुझे स्मृति उपयोग दिखाएंगी जैसा कि मेरा कार्यक्रम चल रहा है, लेकिन मैं अपने कोड से उस जानकारी को क्वेरी करने में सक्षम होना चाहता हूं।


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

मैं स्टैकओवरफ़्लो पर भी हूँ, लेकिन मैं अभी भी इस बात का मिश्रण सीख रहा हूँ कि यहाँ क्या प्रश्न मान्य हैं।
हितेश

3
यह सवाल यहां बिल्कुल ठीक लगता है। आखिरकार, उसे संभवतः उस एब्सवर की ज़रूरत थी जो उसे चाहिए। इसे देखें: meta.gamedev.stackexchange.com/questions/3/…
Tetrad

जवाबों:


14

आप NVX_gpu_memory_info एक्सटेंशन या ATI_meminfo का उपयोग करके एक ATI कार्ड का उपयोग करके एक Nvidia कार्ड की वीडियो मेमोरी पा सकते हैं । यहाँ कोड का एक स्निपेट है जो मैंने पाया है जो आपको मिल सकता है।


हालांकि, फ्लिप नेट पर पॉल नेटल ने कहा कि कोई भी उपलब्ध वीडियो मेमोरी को ढूंढना चाहेगा :

वीडियो मेमोरी की मात्रा निर्धारित करने के लिए (और कभी-कभी असंभव) कारण यह बहुत ही कारण है कि ओपनजीएल आपको फ्रेम बफर को लॉक नहीं करने देगा और इसे सीधे एक्सेस करेगा।

और आगे बताते हैं, संक्षेप में, कि "वीडियो मेमोरी की मात्रा" वास्तव में कुछ भी मतलब नहीं हो सकता है । मैं उसके साथ तर्क करता हूं कि उदाहरण के लिए, विंडोज विस्टा / 7 मशीन में "नि: शुल्क" मेमोरी की मात्रा अप्रासंगिक है; उम्मीद है कि कोई मुफ्त मेमोरी नहीं है, क्योंकि मुफ्त मेमोरी बर्बाद स्मृति है। लेकिन हमेशा स्मृति के कुछ क्षेत्रों को कैश के लिए समर्पित किया जाता है जो विंडोज द्वारा साफ़ किए जाते हैं, एक आवेदन को उनकी आवश्यकता होनी चाहिए।


कुछ बेहतरीन संसाधन। मुझे एक दो दिनों में इसे आज़माने का मौका मिलना चाहिए।
हितेश

+1, स्निपेट्स महान हैं। हालाँकि, मैं पूरी तरह से कुछ भी नहीं मतलब के बारे में सहमत नहीं हूँ - यह हमेशा याद रखना बेहतर है कि आपके कार्यक्रम को स्पष्ट करने की तुलना में स्मृति की मात्रा की जाँच करें।
कोर्नेल किलिविक्ज़

ठीक है, लेकिन मुझे लगता है कि यह बात जरूरी नहीं थी कि आपको मेमोरी की मात्रा की जांच नहीं करनी चाहिए, लेकिन यह कि मेमोरी की मात्रा किसी भी चीज का स्पष्ट संकेतक नहीं है। जब कार्ड मेमोरी से बाहर निकल जाता है तो इसका मतलब यह हो सकता है कि यह विफल हो जाएगा, या इसका मतलब यह हो सकता है कि आपका बनावट डेटा आवश्यक रूप से स्वचालित रूप से अंदर और बाहर स्वैप किया जाएगा। 0 मेमोरी वास्तव में एक घातक आउट-ऑफ-मेमोरी त्रुटि नहीं हो सकती है।
Ricket

1
व्यक्तिगत रूप से मैं इसे लीक पर नज़र रखने और मेरी हार्डवेयर संगतता को देखने के लिए एक सरल दिशानिर्देश के रूप में उपयोग करने की योजना बना रहा हूं। "20mb" का उपयोग करना? हाँ, जो शायद आज बाजार की किसी भी चीज़ पर चलेगा। आधा दर्जन गतिशील रूप से आवंटित बनावट के साथ बहुत मंथन के साथ एक सरल खेल पर "500mb" का उपयोग करना? वूप्स कुछ मेरे कचरा संग्रह के साथ शायद गलत हो गया है।
ZorbaTHut

1
दुर्भाग्य से जीएल कल्पना कहती है कि जब ड्राइवर GL_OUT_OF_MEMORY को लौटाता है, तो यह अब एक अनिश्चित स्थिति में है, तो एक बार जब आप स्मृति से बाहर निकल जाते हैं तो आप मूल रूप से एसओएल खेल के लिए इतने बुरे नहीं होते हैं, लेकिन फ़ोटोशॉप जैसे एप्लिकेशन के लिए यह अस्वीकार्य है।
'22:
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.