कुशल त्रिदोषन मैट्रिक्स एल्गोरिथ्म कार्यान्वयन


12

मैं अंतर्निहित संख्यात्मक योजना का उपयोग करके एक शारीरिक समस्या को हल कर रहा हूं। यह मुझे त्रिदलीय मैट्रिक्स के साथ एक रैखिक समीकरण को हल करने की ओर ले जाता है। मैंने इस एल्गोरिथम को विकिपीडिया से कोडित किया है । मुझे आश्चर्य है कि अगर एक कुशल पुस्तकालय है जो इस तरह के समीकरण को अनुकूलित तरीके से हल करने की अनुमति देता है। एक महत्वपूर्ण नोट यह है कि मैट्रिक्स केवल तभी बदलता है जब सिस्टम पैरामीटर बदल रहे हैं, इसलिए मुझे एक अच्छा पेपरफॉर्मेंस बोनस के लिए कुछ एल्गोरिदम चरणों को पहले से निर्धारित करने का अवसर मिला। मैं C ++ का उपयोग कर रहा हूं।


एक प्रणाली कितनी बड़ी है, क्या उसे समानांतर होने की आवश्यकता है?
एटरेल

1
आकार आवश्यक सटीकता पर निर्भर करता है (सौ मूल्यों के दसियों से)। अब मैं एक-कोर कंप्यूटर पर कोडिंग कर रहा हूं, लेकिन विश्वविद्यालय के सुपर कंप्यूटर तक पहुंचना संभव है, जिसमें कई सीपीयू उपलब्ध हैं, इसलिए समानता का समर्थन अच्छा होगा।
gmk

जवाबों:


15

आपको शायद LAPACK कार्यान्वयन के साथ शुरू करना चाहिए? Gtsv, जैसे, dgtsv । यदि आप एक वितरित-स्मृति संस्करण चाहते हैं, तो आप ScaLAPACK के p? Gtsv से शुरू करना चाह सकते हैं।

EDIT: चूँकि आपका मैट्रिक्स बहुत बार नहीं बदलता है, इसलिए आप अनावश्यक रूप से LAPACK रूटीन को तोड़कर ट्रिडियॉंगल मैट्रिक्स को फैक्टर करने से बच सकते हैं? Gtsv को फैक्ट्रीज़ेशन स्टेप में; gttrf और सॉल्यूशन स्टेज? Gttrs। इसी तरह स्कैप्लैक में नामित रूटीन मौजूद हैं जो समान उद्देश्य की सेवा करते हैं।


धन्यवाद, ऐसा लगता है कि मुझे क्या चाहिए। मैं अपने कोड से इस रूटीन को चलाने की कोशिश करूंगा।
gmk

1
चूंकि आप इसे C ++ से बुला रहे हैं, इसलिए बाहरी "C" {} ब्लॉक के अंदर प्रोटोटाइप की घोषणा करना सुनिश्चित करें। आपके सिस्टम के आधार पर, आपको एक अंडरस्कोर को रूटीन नाम से जोड़ने की आवश्यकता हो सकती है।
जैक पॉल्सन

2

वितरित समानांतर प्रणालियों के लिए : मैंने ScaLAPACK की कोशिश नहीं की है, जिसमें एक समानांतर ट्रिडिओगनल सॉल्वर है, जिसके लिए ऑनलाइन उदाहरण उपलब्ध हैं । मैंने कुछ सफलता के साथ एक LANL प्रकाशन में डेविड मौलटन द्वारा प्रस्तावित विधि की कोशिश की है । इस कोडिंग को आप जितना करना चाहते हैं, उससे अधिक हो सकता है, लेकिन LAPACK का उपयोग करके, यह आगे स्ट्रेट है।


1

मुझे यहां 975 पृष्ठ पर एक दिलचस्प पुनरावर्ती एल्गोरिदम मिला । यह आशाजनक लग रहा है, मुझे आश्चर्य है कि इसके बारे में और अधिक अनुभवी लोग क्या कहते हैं।


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