मैं उम्बास :: संपीड़ित मैट्रिक्स का उपयोग कर रहा हूं ताकि UMFPACK, एक स्पैस रैखिक सॉल्वर के साथ काम किया जा सके। चूंकि मैं सिमुलेशन कर रहा हूं, इसलिए प्रत्येक बार रैखिक प्रणाली का निर्माण थोड़ा अलग तरीके से किया जाता है जिसमें गुणांक मैट्रिक्स और कुछ स्पैर मैट्रिक्स गुणाओं को बढ़ाना/घटाना शामिल हो सकता है। रैखिक प्रणाली का स्तर लगभग 25k है।क्या बूस्ट में compress_matrix को गतिशील रूप से बदलने का कोई प्रभावी तरीका है?
यहां तक कि UMFPACK के साथ काम करने के लिए बढ़ावा देने के लिए बाध्यकारी पैच भी है, मुझे समय-समय पर मैट्रिक्स को बदलने की ज़रूरत है, कभी-कभी यहां तक कि गैर-शून्य मानों की संख्या का पता लगाना भी समय लेने वाला होगा (आदर्श रूप में, मेरे पास है जब मैं मैट्रिक्स प्रारंभ करता हूं तो गैर-शून्य मानों की संख्या देने के लिए)। साथ ही, मैं कॉलम/पंक्तियों को गतिशील रूप से जोड़ने के लिए ublas :: श्रेणी का उपयोग करता हूं।
तो मेरा सवाल है: क्या ऐसा करने का कोई प्रभावी तरीका है? अभी यह मेरे लिए बहुत धीमा है। आयाम के साथ एक मैट्रिक्स को ट्रांसफर करना जैसे कि 15k की लागत लगभग 6s है और लगभग 12k पंक्तियों को जोड़ना तेज़ है (क्योंकि मुझे लगता है कि यह एक पंक्ति-प्रमुख मैट्रिक्स है), लेकिन मैट्रिक्स में समान संख्या में कॉलम जोड़ना 20s तक हो सकता है (मुझे लगता है कि इसके लिए उपर्युक्त कारण, इसलिए मैंने कॉलम-प्रमुख मैट्रिक्स का भी उपयोग किया, कुल समय आवश्यक होगा)।
किंडा यहां बेताब हो रही है। कोई सुझाव स्वागत है।
चीयर्स।
चूंकि मेरे पास लगभग 30 विचार थे लेकिन कोई जवाब नहीं था, मुझे लगता है कि शायद मेरा प्रश्न बहुत स्पष्ट नहीं है। तो यहां कुछ विवरण दिए गए हैं। – He01
चूंकि मैं सिमुलेशन कर रहा हूं, हर बार चरण के लिए, मैंने एक रैखिक प्रणाली इकट्ठा की है और इसे हल किया है जो मूल रूप से केवल एक्स = बी है। हालांकि, गुणांक मैट्रिक्स ए आमतौर पर तीन matrices द्वारा रचित है। एक वजन मैट्रिक्स, क्रमशः मुलायम बाधाओं और कठोर बाधाओं के लिए दो गुणांक matrices जो precomputed नहीं किया जा सकता है। (अगली टिप्पणी देखें) – He01
रैखिक प्रणाली को हल करने के कारण कम से कम वर्ग अर्थ में एक वर्गबद्ध कार्य को कम करने का परिणाम है, मुझे एक मैट्रिक्स-मैट्रिक्स गुणा करना है ताकि मैट्रिक्स टी और मैट्रिक्स-वेक्टर गुणा को एकीकृत करने के लिए बी बनाने के लिए किया जा सके। नरम बाधा रैखिक प्रणाली मैट्रिक्स। तो मुझे ए को बनाने के लिए नीचे की कठोर बाधा मैट्रिक्स को नीचे और टी के दाएं को जोड़ना होगा। आखिरकार, ए और बी के बाद, मैं उन्हें यूएमएफपैक में इनपुट कर सकता हूं। (अगली टिप्पणी देखें) – He01