2011-11-10 11 views
6

क्या आप अपने कर्नेल के पीटीएक्स कोड को पढ़ने के लिए अपने कर्नेल को अनुकूलित करने के लिए पता लगाने की सलाह देते हैं?क्या मुझे अपने कर्नेल को अनुकूलित करने के लिए पीटीएक्स में देखना चाहिए? यदि हां, तो कैसे?

एक उदाहरण: मैंने पढ़ा है, यदि स्वचालित लूप अनलोलिंग काम करता है तो कोई भी पीटीएक्स कोड से पता लगा सकता है। यदि ऐसा नहीं है, तो कर्नेल कोड में मैन्युअल रूप से लूप को अनलॉक करना होगा।

  • क्या पीटीएक्स कोड के लिए अन्य उपयोग-मामले हैं?
  • क्या आप अपने पीटीएक्स कोड में देखते हैं?
  • मैं कहां से पता लगा सकता हूं कि मेरे कर्नेल के लिए पीटीएक्स कोड सीयूडीए जेनरेट करने में सक्षम कैसे हो सकता है? एक आभासी मशीन विधानसभा भाषा -
+2

आप बाइनरी कोड एकत्रित न कर सकते हैं। IMO आप, देखने में पड़ने से बचने के लिए चाहिए "मैंने सोचा कि यह अनुकूलन होता है कि" जाल के प्रकार और आप वास्तव में क्या कर रहे हैं जब आप एक गिरी अनुकूलित कर रहे देखने के लिए सक्षम किया जा रहा है। – harold

उत्तर

13

पहले PTX के बारे में बनाने के लिए मुद्दा यह है कि यह केवल एक मध्यवर्ती GPU पर चलते हैं कोड का प्रतिनिधित्व है। पीटीएक्स संकलित समय पर, या रनटाइम पर ड्राइवर द्वारा ptxas द्वारा मशीन कोड को लक्षित करने के लिए इकट्ठा किया जाता है। तो जब आप पीटीएक्स को देख रहे हों, तो आप देख रहे हैं कि कंपाइलर क्या उत्सर्जित करता है, लेकिन जीपीयू वास्तव में क्या चल रहा है इस पर नहीं। स्क्रैच से या तो अपने स्वयं के पीटीएक्स कोड को लिखना भी संभव है (यह सीयूडीए में समर्थित एकमात्र जेआईटी संकलन मॉडल है), या सीयूडीए सी कोड में इनलाइन-असेंबलर सेक्शन के हिस्से के रूप में (बाद में आधिकारिक तौर पर क्यूडीए 4.0 के बाद से समर्थित है, लेकिन " अनौपचारिक रूप से "उस से काफी लंबे समय तक समर्थित)। CUDA हमेशा टूलकिट के साथ पीटीएक्स भाषा के लिए एक पूर्ण गाइड के साथ भेज दिया गया है, और यह पूरी तरह से प्रलेखित है। ocelot project अपने स्वयं के PTX पार संकलक, जो CUDA कोड अन्य हार्डवेयर पर मूल रूप से चलाने के लिए अनुमति देता है लागू करने के लिए इस दस्तावेज़ का इस्तेमाल किया गया, शुरू में प्रोसेसर x86, लेकिन हाल ही में एएमडी GPUs

आप क्या GPU वास्तव में (के रूप में क्या संकलक उत्सर्जित करती है के खिलाफ) चल रहा है देखने के लिए चाहते हैं, NVIDIA अब जो कोड में वास्तविक मशीन कोड खंडों फर्मी GPUs के लिए संकलित दिखा सकते हैं cudaobjdump कहा जाता है एक द्विआधारी disassembler उपकरण की आपूर्ति। decuda नामक एक पुराना, अनौपचारिक उपकरण था जो जी 80 और जी 0 9 जीपीयू के लिए काम करता था।

कहा करने के बाद, वहाँ विशेष रूप से पर एक बहुत PTX उत्पादन, से सीखा जा रहा है कि कैसे संकलक अनुकूलन आवेदन कर रहा है और क्या निर्देश यह निश्चित सी contructs लागू करने के लिए उत्सर्जित करती है। NVIDIA CUDA टूलकिट का प्रत्येक संस्करण a guide to nvcc और documentation for the PTX language के साथ आता है। पीटीएक्स को सीयूडीए सी/सी ++ कर्नेल कोड को संकलित करने और पीटीएक्स निर्देशों को क्या समझने के लिए दोनों दस्तावेज़ों में दोनों दस्तावेजों में निहित बहुत सारी जानकारी है।

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

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