मेरी वर्तमान समझ यह है कि एक shader फ़ाइल में कुछ भी GPU पर किया जाता है, और कुछ भी मेरे (Java, मेरे मामले में) कोड CPU पर किया जाता है।
क्या यह सटीक विवरण है?
मेरी वर्तमान समझ यह है कि एक shader फ़ाइल में कुछ भी GPU पर किया जाता है, और कुछ भी मेरे (Java, मेरे मामले में) कोड CPU पर किया जाता है।
क्या यह सटीक विवरण है?
जवाबों:
यही इसका सार है।
सिद्धांत रूप में, प्लेटफॉर्म, जो भी चाहे, कर सकता है। एक उन्नत ऑपरेटिंग सिस्टम की कल्पना कर सकते हैं, संकलित कोड का सिर्फ-इन-टाइम अनुवाद, से, x86 से GPU कोड। इसी तरह, OpenGL ड्राइवर होस्ट CPU पर जो कुछ भी चाहते हैं उसे चला सकते हैं।
लेकिन वास्तव में, आपने जो वर्णन किया है, वही होता है।
आम तौर पर, हाँ। जावा का उपयोग सीपीयू पर चलने वाले प्रोग्राम लिखने के लिए किया जाता है। शेडर भाषाओं (cg, hlsl, et al) का उपयोग उन कार्यक्रमों को लिखने के लिए किया जाता है जो gpu पर चलते हैं।
नियम का एक अपवाद तीसरे पक्ष के एप का उपयोग करेगा जो अंतर को पाट सकता है।
david van brink ने आपके प्रश्न का सामान्य रूप से उत्तर दिया।
लेकिन जैसा कि वे कहते हैं, ओपनजीएल चालक सीपीयू पर सामान चला सकता है, और यह वास्तव में बहुत कुछ होता है। विशेष रूप से संगतता संदर्भों के साथ, जहां ग्राफिक कार्ड पर कुछ अजीब विरासत कार्यों को लागू नहीं किया जा सकता है। उन्हें सॉफ्टवेयर एमुलेशन की आवश्यकता होती है। उदाहरण के लिए, मैंने पहले सुना है कि स्टीप्लिंग को सीपीयू पर निष्पादित किया जाता है। आप चुन के साथ आश्चर्य की भी उम्मीद कर सकते हैं।
ये आश्चर्य 2.1 संदर्भों का उपयोग करते हुए MacOS पर और भी अधिक हो सकते हैं, क्योंकि Apple ने OpenGL के दृश्य को अपनी हार्डवेयर सीमा के पार काफी अच्छी तरह से एकीकृत किया है, और कुछ छोटे हार्डवेयर में कुछ सामान की कमी होती है जिसका अनुकरण करना पड़ता है। यह वास्तव में सीपीयू पर पूरी तरह से ENTIRE OpenGL 2.1 युक्ति को निष्पादित करने के लिए संभव हो सकता है, अगर संदर्भ निर्माण कोड एक सॉफ़्टवेयर डिवाइस को स्पष्ट रूप से निर्दिष्ट करता है।
इसके विपरीत, कोड जो वैक्सक्लक या बूस्ट कंप्यूटिंग, या माइक्रोसॉफ्ट के एएमपी या एनवीडिया थ्रस्ट जैसे कंप्यूटिंग पुस्तकालयों के माध्यम से निष्पादित किया जाता है, एपीआई सेटअप झंडे के आधार पर GPU या CPU पर निष्पादित किया जा सकता है।
और फिनिश टच के लिए, सीपीयू के अंदर आपके पास एक डीएसपी आर्किटेक्चर भी होता है, जिसके एक हिस्से में हम सिमडी कहते हैं। इंटेल का ispc कंपाइलर कोड जनरेट करने में मदद करता है जो कि "डीम्ड" है जो कि सिंपल टाइम पर ढेर सारे परफॉरमेंस डायग्नॉस्टिक्स के साथ सिमड लेन पर चलने में मदद करता है। OpenMP को इसमें जोड़ें और आप मल्टीथ्रेडेड SIMD प्राप्त कर सकते हैं, जो GPU की अवधारणाओं से संपर्क करता है। यदि आपके पास एक उच्च अंत सीपीयू और कम अंत जीपीयू है, तो यह वास्तव में अधिक प्रदर्शनकारी हो सकता है।
http://ispc.github.io/