2011-05-17 12 views
23

मैं ब्राउज़र के लिए एक प्रोजेक्ट शुरू कर रहा हूं जिसके लिए कुछ जटिल डेटा प्रोसेसिंग की आवश्यकता है। GPU के साथ त्वरित होने पर मैं जिस एल्गोरिदम का उपयोग कर रहा हूं वह 50-100x तेज है।ब्राउज़र में GPU त्वरित गणित

मैं ब्राउज़र के साथ जावास्क्रिप्ट, फ्लैश या अन्य तकनीकों का उपयोग कर सकता हूं। क्या कोई तरीका है कि मैं अपने गणित की प्रसंस्करण में तेजी लाने के लिए जीपीयू तक पहुंच सकता हूं?

+1

वेबजीएल? वह जीपीयू तेज है। – Raynos

+1

ऐसा लगता है जैसे फ्लैश जीपीयू त्वरण को नियंत्रित किया जाता है _by flash_ - आप इसे मनमाने ढंग से गणना अनुरोध नहीं भेज सकते हैं। :(http://www.kaourantin.net/2008/05/what-does-gpu-acceleration-mean.html – peteorpeter

+0

पायथन के बारे में कैसे? पाइथन वेबपृष्ठ में चलने के लिए यह करने योग्य है। आप एक पायथन-जीपीयू लाइब्रेरी आयात कर सकते हैं जैसे कि कॉपरहेड या पीईसीयूडीए और उस लाइब्रेरी में अपने एल्गोरिदम लागू करें। – solvingPuzzles

उत्तर

25

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

कहा जा रहा है कि, एक वेबजीएल शेडर आधारित जीपीजीपीयू दृष्टिकोण के अलावा, वेबसीएल गणना के लिए आपकी सबसे अच्छी शर्त हो सकती है। वेबसीएल संक्षेप में ओपनसीएल में जावास्क्रिप्ट बाइंडिंग का एक सेट है। ऐसे में, विकास ओपनसीएल के साथ निकटता से जुड़ा होने की संभावना है।

है, के रूप में कहा, WebCL के लिए समर्थन इस पल के रूप में अभी तक नहीं है और न ही मानक व्यापक है, वर्तमान में निम्न संसाधनों उपलब्ध हैं:

  • Khronos समूह आधिकारिक वेबसाइट here है।
  • नोकिया रिसर्च their dedicated site पर अपने प्रयोगों की रिपोर्ट करता है, जिसमें फ़ायरफ़ॉक्स के लिए वेबसीएल एक्सटेंशन (केवल इस समय संस्करण 18) शामिल है। इस एक्सटेंशन पर काम करने वाले डेवलपर के पास ट्विटर पर https://twitter.com/NokiaWebCL है।
  • सफारी ब्राउज़र के साथ परीक्षण किए गए वेबकिट के लिए सैमसंग के प्रयोग available here हैं।
  • मोटोरोला में ओपनसीएल available here का नोडजेएस-आधारित कार्यान्वयन है।
  • मोज़िला स्वयं सक्रिय हो गया प्रतीत होता है अपने WebCL developments के साथ, हालांकि यह सटीक वर्तमान स्थिति मेरे लिए अज्ञात है।

मैंने हाल ही में अपने साथ खेलना शुरू कर दिया है, लेकिन अभी तक "बहुत मजेदार" से परे कोई सिफारिश नहीं कर सकते हैं।

+1

वेबसीएल के लिए +1। यही वही है जो आप चाहते हैं, जीपीयू त्वरण के लिए एक ठोस जेएस एपीआई। – Raynos

+1

+1 बहुत अच्छा, बस वह क्या ढूंढ रहा था; मेरा जवाब हटा दिया, हालांकि यह फ़ायरफ़ॉक्स एक्सटेंशन का उपयोग करता है जो मैंने सुझाया है। – Chad

+1

वेबसीएल का समर्थन अब कैसा दिखता है? – Stefnotch

0

कि आप क्या करना चाहते हैं पर निर्भर करता है, लेकिन मुझे यकीन है कि यह सर्वर के GPU पर गणना वापस ब्राउज़र ग्राहक को चलाने के लिए और उन्हें पाने के लिए बहुत आसान हो सकता है

0

यह कोई है इस पुल को देखने के लिए दिलचस्प हो जाएगा हूँ फ्लैश और जावास्क्रिप्ट के साथ बंद। यह पूरी तरह से निर्भर करता है कि आपको कितनी बार गणना करना होगा।

आप केवल गणना में से एक यात्रा प्रदर्शन करने के लिए (अनिवार्य रूप से, एक "प्रस्तुत करना" पास या एक ड्रॉ कॉल) की जरूरत है, आप सेटअप अपने VertexShader3D और FragmentShader3D में सक्षम हो सकता है कि आपने Flash में किसी भी Stage3D परियोजना के लिए आमतौर पर करते हैं, और फिर उस प्रस्तुत करना का BitmapData में ही परिणाम:

//You probably want this to be the same dimensions as your context3D dimensions: 
_context3D.drawToBitmapData(yourBitmapDataDestination); 

तो फिर तुम जावास्क्रिप्ट को जानकारी दे सकते हैं। मुझे यकीन नहीं है कि बिटमैपडाटा सीधे पारित किया जा सकता है, लेकिन मैं काफी सकारात्मक हूं आपको पहले डेटा को क्रमबद्ध करना होगा (एक ऐरे, या स्ट्रिंग इत्यादि के रूप में)। आपको फ्लैश और जावास्क्रिप्ट के बीच संचार करने के लिए ExternalInterface कक्षा का उपयोग करना होगा।

एक बार जब आप जावास्क्रिप्ट में अपनी क्रंच संख्या प्राप्त कर लेते हैं, तो आपको उन मूल्यों के साथ जो भी करना है, वह करें!

फ्लैश, जीपीयू और जावास्क्रिप्ट के बीच की जानकारी का यह आदान-प्रदान अनुकूल नहीं हो सकता है यदि आप "प्रति फ्रेम" (जैसे गेम-लूप, फ्रेम)।

नोट: अपूर्ण उत्तर के लिए खेद है, लेकिन यदि आप अभी भी फ्लू पर GPU तक पहुंच के बिंदु के रूप में विचार कर रहे थे तो मैं आपको संभवतः एक संभावित समाधान में मार्गदर्शन करना चाहता था।

1

के बाद से इस वर्ष सवाल एक शीर्ष खोज इस विषय पर मेरे लिए मारा था, मैंने सोचा कि मैं कुछ और अन्वेषण मुझे gpu.js, जो उपयोगिता कार्यों में WebGL लपेटता के लिए नेतृत्व किया है कि उल्लेख होगा।

संपादित करें ... और वहां से गिटहब मुद्दों आदि के माध्यम से छिपाने से मुझे weblas भी पहुंचा। मेरे पास इन दोनों की तुलना अभी तक नहीं है, इस जवाब को सामुदायिक विकी में परिवर्तित कर दिया गया है, यदि इनमें से किसी एक में अनुभव वाला कोई व्यक्ति इसे देखता है और इसमें कुछ जोड़ना है।