सीयूडीए रनटाइम आपके CUDA कर्नेल को निष्पादन योग्य में संकलित और लिंक करना संभव बनाता है। इसका मतलब है कि आपको अपने आवेदन के साथ क्यूबिन फाइलों को वितरित करने की ज़रूरत नहीं है, या ड्राइवर एपीआई के माध्यम से उन्हें लोड करने का सौदा नहीं है। जैसा कि आपने ध्यान दिया है, आमतौर पर उपयोग करना आसान है।
इसके विपरीत, ड्राइवर एपीआई प्रोग्राम के लिए कठिन है लेकिन सीयूडीए का उपयोग कैसे किया जाता है, इस पर अधिक नियंत्रण प्रदान करता है। प्रोग्रामर को प्रारंभिकरण, मॉड्यूल लोडिंग इत्यादि से सीधे निपटना होगा
स्पष्ट रूप से अधिक विस्तृत डिवाइस जानकारी को रनटाइम एपीआई के माध्यम से ड्राइवर एपीआई के माध्यम से पूछताछ की जा सकती है। उदाहरण के लिए, डिवाइस पर उपलब्ध मुफ्त मेमोरी केवल ड्राइवर एपीआई के माध्यम से पूछताछ की जा सकती है।
CUDA प्रोग्रामर की गाइड से:
यह दो एपीआई से बना है:
- एक निम्न स्तर एपीआई CUDA ड्राइवर एपीआई कहा जाता है,
- एक उच्च स्तर एपीआई कहा जाता है CUDA रनटाइम एपीआई जिसे सीयूडीए ड्राइवर एपीआई के शीर्ष पर लागू किया गया है।
ये एपीआई पारस्परिक रूप से अनन्य हैं: किसी एप्लिकेशन को या तो एक या अन्य का उपयोग करना चाहिए।
सीयूडीए रनटाइम प्रारंभिक प्रारंभिकरण, संदर्भ प्रबंधन और मॉड्यूल प्रबंधन प्रदान करके डिवाइस कोड प्रबंधन को आसान बनाता है। सी होस्ट कोड एनवीसीसी द्वारा जेनरेट किया गया है CUDA रनटाइम पर आधारित है (धारा 4.2.5 देखें), इसलिए इस कोड से लिंक करने वाले अनुप्रयोगों को CUDA रनटाइम API का उपयोग करना चाहिए।
इसके विपरीत, CUDA ड्राइवर एपीआई अधिक कोड की आवश्यकता है, कार्यक्रम और डिबग करने के लिए कठिन है, लेकिन नियंत्रण का एक बेहतर स्तर प्रदान करता है और बाद से यह केवल cubin वस्तुओं (धारा 4.2.5 देखें) के साथ सौदा भाषा-स्वतंत्र है । विशेष रूप से, को CUDA ड्राइवर API का उपयोग करके कर्नेल को कॉन्फ़िगर और लॉन्च करना अधिक कठिन है, क्योंकि निष्पादन कॉन्फ़िगरेशन और कर्नेल पैरामीटर को खंड 4.2.3 में वर्णित निष्पादन कॉन्फ़िगरेशन सिंटैक्स के बजाय स्पष्ट फ़ंक्शन कॉल के साथ निर्दिष्ट किया जाना चाहिए। साथ ही, डिवाइस इम्यूलेशन (अनुभाग 4.5.2.9 देखें) CUDA ड्राइवर API के साथ काम नहीं करता है।
एपीआई के बीच कोई उल्लेखनीय प्रदर्शन अंतर नहीं है। आपके कर्नल स्मृति का उपयोग कैसे करते हैं और जीपीयू (युद्ध और ब्लॉक में) पर उन्हें कैसे रखा जाता है, इसका अधिक स्पष्ट प्रभाव होगा।
एक ड्राइवर एपीआई का लाभ अन्य भाषाओं में कर्नेल लिखने के लिए समर्थन जोड़ने संकलक डेवलपर्स के लिए हो सकता है कि सी –