PETSc के समानांतर एक साधारण Ax = b सिस्टम को हल करना


10

मैं PETSc पैकेज में नया हूं।

मेरे पास मैट्रिक्स-मार्केट प्रारूप में ~ 4000x4000 मैट्रिक्स ए है और मैं कई प्रोसेसर का उपयोग करके इसे हल करने के लिए PETSc प्राप्त करना चाहता हूं।

मैं एक प्रोसेसर पर सिस्टम को हल करना जानता हूं, लेकिन मुझे नहीं पता कि विभिन्न प्रोसेसर के बीच मैट्रिक्स और वैक्टर को कैसे वितरित किया जाए।

क्या ऐसा करने के लिए निर्देशों का एक सरल सेट है?

जवाबों:


14

मैट्रिक्स मार्केट समानांतर में पढ़ने के लिए एक भयानक प्रारूप है, इसलिए बेहतर समानांतर प्रारूप के लिए प्रीप्रोसेस करना बेहतर है। आपका मैट्रिक्स आकार बेहद छोटा है इसलिए प्रदर्शन कोई समस्या नहीं है, लेकिन सबसे आसान और सबसे सामान्य बात है कि पेट्सन बाइनरी प्रारूप में मैट्रिक्स मार्केट फ़ाइल लिखने के लिए पायथन या मैटलैब / ऑक्टेव का उपयोग करें, जिसे समानांतर उपयोग करके कुशलतापूर्वक पढ़ा जा सकता है MatLoad()। उदाहरण के लिए, आप प्रीप्रोसेसिंग के लिए इस पायथन कोड का उपयोग कर सकते हैं ( $PETSC_DIR/bin/pythonscriptsअपने में जोड़ें PYTHONPATH)

import scipy.io, PetscBinaryIO
A = scipy.io.mmread('thematrix.mtx')
PetscBinaryIO.PetscBinaryIO().writeMatSciPy(open('petscmatrix','w'), A)

आप इस समय फ़ाइल में वेक्टर भी लिख सकते हैं। यदि आप केवल सिस्टम को पढ़ना और हल करना चाहते हैं, तो आप src/ksp/ksp/examples/tutorials/ex10.c( -f petscmatrixआपके द्वारा लिखी गई बाइनरी फ़ाइल पढ़ने के विकल्प के साथ) का उपयोग कर सकते हैं ।

एक वास्तविक एप्लिकेशन में, आपको एक वर्कफ़्लो से बचना चाहिए जिसमें किसी भी प्रारूप में डिस्क पर फाइलें लिखना शामिल है। समस्या के डोमेन-विघटित प्रतिनिधित्व का उपयोग करके मैट्रिक्स को समानांतर में इकट्ठा करना बहुत बेहतर है। पेट्सक में अधिकांश उदाहरण इस तरह लिखे गए हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.