2011-09-05 16 views
6

मैं प्रदर्शन के लिए ओपनसीएल का उपयोग कर जीपीयू को भौतिकी सिमुलेशन एल्गोरिदम पोर्ट करना चाहता हूं; मुझे ओपनसीएल के साथ कोई अनुभव नहीं है, और मैं चारों ओर देख रहा हूं। कम्प्यूटेशंस ज्यादातर छोटे घने मैट्रिक्स (3x3) और वेक्टर उत्पाद, क्रॉस-उत्पाद आदि होते हैं।ओपनक्ल मैट्रिक्स लाइब्रेरी

  1. क्या ऐसे बुनियादी परिचालनों के लिए कुछ "मानक"/अनुशंसित लाइब्रेरी है? मैं निश्चित रूप से मैट्रिक्स गुणा और व्युत्क्रम अपने आप को कोड करने के लिए मैं उदाहरण के लिए mmul(a,mtrans(b)) बजाय a*b.transpose() लिखने के लिए है नहीं करना चाहती (समय नहीं है, और यह inefficent होगा)

  2. OpenCL कक्षाएं नहीं है के रूप में, ऑपरेटर आदि अधिक भार, ?

  3. क्या नोटेशन को और गणित की तरह बनाने के लिए ओपनसीएल (या उस मामले के लिए पूर्व प्रोसेसर) के कुछ (योजनाबद्ध) एक्सटेंशन/विकास हैं? मुझे फोर्टन वर्षों में वापस जाने का प्रभाव है। (मैं जानता हूँ कि वहाँ है CUDA, लेकिन यह विक्रेता बाध्य है)

उत्तर

4

यदि आप इस तथ्य के बारे में जानते हैं कि आप 3-आयामी वस्तुओं तक सीमित हैं, तो आप डबल 3 प्रकार (या फ्लोट 3 का उपयोग करने पर विचार कर सकते हैं यदि आपका जीपीयू डबल परिशुद्धता का समर्थन नहीं करता है)।

अभी तक, केवल वेक्टर समर्थित हैं, इसलिए आपको मैट्रिक्स गुणा या उलटा उपयोग के किसी भी उपयोग के बारे में कुछ कोडिंग करना होगा। हालांकि, आपको निम्न अंतर्निहित geometric functions में रुचि हो सकती है। विशेष रूप से, dot उत्पादों और cross उत्पादों को परिभाषित किया गया है।

आप यह भी जानना वहाँ मैट्रिक्स का वायदा implentations के लिए reserved data types हैं कि रुचि हो सकती है: उदाहरण के डबल n एक्स मीटर के लिए देखते हैं। आपके मामले में, यदि भविष्य में उपलब्ध है, तो आप अपने matrices के लिए double3x3 प्रकारों का उपयोग करने में सक्षम होंगे।

5

आपके सवालों के जवाब के लिए:

  1. ऐसा नहीं है कि मैं
  2. के बारे में पता कर रहा हूँ हाँ, OpenCL सख्ती से C99 वाक्य रचना के लिए सीमित है , इसलिए कोई वर्ग नहीं, कोई ऑपरेटर अधिभार नहीं है, और आपके मन में संचालन के प्रकार के लिए कड़ाई से प्रक्रियात्मक कॉल है। ओपनसीएल अपने मूल वेक्टर प्रकारों पर तत्ववार संचालन का समर्थन करता है, लेकिन इससे कहीं अधिक परिष्कृत नहीं है। मैट्रिक्स गुणा, निर्धारक, स्थानांतरित, आदि सभी को स्वयं को लागू करना होगा।
  3. फिर से मुझे पता नहीं है। [एक तरफ के रूप में, मैं इस संदर्भ में फोरट्रान को नहीं हटाऊंगा, एफ 0 9 0 और बाद के संस्करणों में आंतरिक मैट्रिक्स और वेक्टर ऑपरेशंस हैं जो सी 99 या सी ++ की तुलना में लिखने के लिए बहुत आसान काम कर रहे हैं।
+0

क्षमा करें, मेरे पास फोरट्रान प्री-लिनपैक दिनों में दिमाग में था (नहीं कि मैं फिर प्रोग्रामिंग कर रहा था), यानी किसी ने इसे स्वयं लिखने के बजाय किसी अच्छे कार्यान्वयन के पहले किया था। समानता के अनुसार, मुझे लगता है कि एक कारण पायथन ऐसी लोकप्रिय भाषा है: "बैटरी शामिल"। – eudoxos