रिमोट ऑफ़स्क्रीन रेंडरिंग


10

मेरी शोध प्रयोगशाला ने हाल ही में एक सर्वर जोड़ा है जिसमें एक बीफ़ी NVIDIA ग्राफिक्स कार्ड है, जिसका उपयोग हम वैज्ञानिक संगणना करने के लिए करना चाहते हैं। चूंकि यह एक कार्य केंद्र नहीं है, इसलिए हमें एक ssh कनेक्शन पर, दूरस्थ रूप से अपनी नौकरियों को चलाना होगा। हमारे अनुप्रयोगों में से अधिकांश को ऑफ़स्क्रीन रेंडर करने के लिए ओपेंगल रेंडरिंग करने की आवश्यकता होती है, फिर CUDA में परिणाम पर छवि विश्लेषण करते हैं।

मेरी प्रारंभिक जांच से पता चलता है कि X11 अग्रेषण एक बुरा विचार है, क्योंकि क्लाइंट मशीन पर opengl रेंडरिंग (या बल्कि X11 सर्वर - एक भ्रामक नामकरण सम्मेलन क्या होगा!) और हमारे बड़े पैमाने पर बनावट भेजने पर नेटवर्क की अड़चनें झेलेंगे। हमें कभी भी आउटपुट प्रदर्शित करने की आवश्यकता नहीं होगी, इसलिए ऐसा लगता है कि X11 अग्रेषण आवश्यक नहीं होना चाहिए, लेकिन Opengl को कुछ मान्य करने के लिए $ DISPLAY की आवश्यकता है या हमारे एप्लिकेशन नहीं चलेंगे। मुझे यकीन है कि खेतों को प्रस्तुत करना मौजूद है जो ऐसा करते हैं, लेकिन यह कैसे पूरा होता है? मुझे लगता है कि यह संभवतया एक सरल X11 कॉन्फ़िगरेशन समस्या है, लेकिन मैं इससे अपरिचित हूं कि यह कहां से शुरू किया जाए।

हम Ubuntu सर्वर 10.04 चला रहे हैं, जिसमें कोई gdm, gnome, आदि नहीं है। हालाँकि, xserver-xorg पैकेज स्थापित है।


मैं कोशिश करूंगा <code> x11vnc </ code>, लेकिन यह काम करने की संभावना नहीं है
ह्यूबर्ट करियो

जवाबों:


6

यह प्रश्न पूछे जाने के बाद से कुछ समय हो गया है, इसलिए मैंने सोचा कि हम उस समाधान का उल्लेख करेंगे जिसका हमने अंततः उपयोग किया था।

स्थानीय X स्क्रीन को हाईजैक करना

अंत में, मैंने सर्वर के स्थानीय एक्स स्क्रीन पर रिमोट ओपेंगल प्रोग्राम चलाए। मशीन उबंटू सर्वर संस्करण चला रही थी और यह एक xserver को डिफ़ॉल्ट रूप से नहीं चला रहा था, इसलिए मुझे स्टार्टअप पर चलाने के लिए एक xserver स्थापित करना पड़ा (मैंने सिर्फ Ubuntu के ubuntu-desktop पैकेज को स्थापित किया, एक मच्छर को स्लेजहेमर से मार दिया) और फिर खुद को एक्स स्क्रीन के लिए इन कमांडों को रूट के रूप में एक्सेस करने के लिए दिया: "DISPLAY =: 0.0; xhost + local:" एक्सपोर्ट करें। तब मैं मशीन में ssh कर सकता था, "Export DISPLAY =: 0.0" पर कॉल करता और फिर सामान्य रूप से अपने opengl प्रोग्राम चलाता। रिमोट मशीन पर बैठे किसी व्यक्ति को एक विंडो पॉप-अप दिखाई देती है और मेरा प्रोग्राम चलता रहता है, लेकिन हमारे पास कोई मॉनिटर जुड़ा हुआ नहीं है इसलिए यह कोई समस्या नहीं थी।

ऑफस्क्रीन रेंडरिंग के कुछ रूप का उपयोग करना महत्वपूर्ण है, क्योंकि ऑनस्क्रीन कलर बफर से सीधे पिक्सल पढ़ने से कचरा डेटा हो सकता है यदि विंडो दूसरी विंडो द्वारा अस्पष्ट हो जाती है। चूंकि आप X स्क्रीन नहीं देख सकते हैं, इसलिए यह जानना मुश्किल है कि क्या ऐसा हुआ है। ऑफस्क्रीन रेंडरिंग (जैसे फ्रेमबफ़र ऑब्जेक्ट्स (fbo) या pbuffers) में यह समस्या नहीं है।

सर्वर के स्थानीय स्क्रीन को हाइजैक करना एक आदर्श समाधान नहीं है, इसलिए यहां कुछ विकल्प दिए गए हैं जो मुझे रास्ते में मिलते हैं:

वर्चुअल फ़्रेमबफ़र

Xvfb एक विकल्प है, लेकिन यह मेरे लिए काम नहीं करता था, क्योंकि OpenGL को हार्डवेयर त्वरण से कोई लाभ नहीं हो रहा था, और फ्रेमबफ़र ऑब्जेक्ट समर्थित नहीं थे, जो OpenGL के साथ CUDA इंटरऑपरेबिलिटी के लिए आवश्यक हैं। फिर भी, यह एक व्यावहारिक विकल्प हो सकता है जहां स्थानीय स्क्रीन को अपहृत करना स्वीकार्य नहीं है, या जहां उपयोगकर्ता को xhost विशेषाधिकार प्राप्त नहीं हो सकते हैं।

VirtualGL

VirtualGL वेबसाइट से:

VirtualGL एक ओपन सोर्स पैकेज है जो किसी भी यूनिक्स या लिनक्स रिमोट डिस्प्ले सॉफ्टवेयर को पूर्ण 3D हार्डवेयर त्वरण के साथ OpenGL एप्लिकेशन चलाने की क्षमता देता है।

यह वही है जो मैं चाहता हूं, और यह बहुत आशाजनक लगता है, लेकिन मेरे पास एक नए पुस्तकालय निर्भरता से निपटने का समय नहीं था, इसलिए मैंने इसका परीक्षण नहीं किया है। मेरा अनुमान है कि यह आदर्श समाधान है एक बार मैं इसे संकलित, स्थापित और कॉन्फ़िगर कर सकता हूं। यह वही है जो VirtualBox और कुछ VNC सर्वर हार्डवेयर त्वरित 3D का समर्थन करने के लिए उपयोग करते हैं।


0

आप मशीन पर एक vfb- वर्चुअल फ्रेम बफर चला सकते हैं, इसकी डमी X11 की तरह। हम एक ऐसे Xwindow को खोलने के लिए HAD का उपयोग करते थे, जिसे हमने कभी नहीं देखा और बस vfb को स्थापित किया और $ DISPLAY को उस पर निर्यात किया - जैसे cli HTH पर स्क्रीन की तरह


2
पारितोषिक के लिए धन्यवाद! मैंने xvfb में देखना शुरू कर दिया है, और ऐसा लगता है कि प्रतिपादन ग्राफिक्स हार्डवेयर का उपयोग नहीं करता है, बल्कि इसके बजाय आभासी मेमोरी में प्रदान करता है। क्या कोई इसकी पुष्टि / खंडन कर सकता है? अगर ऐसा है, तो मुझे लगता है कि यह समाधान अच्छा नहीं होगा, क्योंकि हम अपने ग्राफिक्स कार्ड की शक्ति का लाभ लेना चाहते हैं।
redmoskito 16
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.