विरल मैट्रिक्स गुणा में ओवरहेड क्या है


10

क्या मैट्रिक्स गुणन (दोनों Mat * Mat, और Mat * Vec) की संख्या गैर-शून्य की संख्या के साथ या मैट्रिक्स के आकार के साथ है? या दोनों का कुछ संयोजन।

आकार के बारे में क्या।

उदाहरण के लिए, मेरे पास 100 x 100 मैट्रिक्स है जिसमें 100 मान हैं, या 1000 x 1000 मैट्रिक्स इसमें 100 मान हैं।

जब इन मैट्रिसेस को स्क्वेर करना (या समान स्पैर्सिटी के साथ समान मेट्रिसेस द्वारा गुणा करना), तो पहला (100x100) दूसरा (1000x1000) से अधिक तेज होने वाला है? क्या यह इस बात पर निर्भर करता है कि मूल्य कहां हैं?

यदि यह कार्यान्वयन पर निर्भर है, तो मुझे PETSc के उत्तर में दिलचस्पी है।

जवाबों:


11

गैर-एंटेरो प्रविष्टियों की संख्या के साथ विरल मैट्रिक्स-वेक्टर गुणन स्केल की लागत रैखिक रूप से होती है, क्योंकि प्रत्येक प्रविष्टि वेक्टर में कुछ प्रविष्टि से एक बार गुणा होती है।

स्पार्स मैट्रिक्स-मैट्रिक्स गुणन की लागत नॉनज़रोज़ की संरचना पर अत्यधिक निर्भर है। उदाहरण के लिए, एक स्क्वेर मैट्रिक्स स्क्वेर करने पर विचार करें जो कि एक तीरहेड संरचना का है:A

=(δ1β1δ2β2δn-1βn-1γ1γ2γn-1δn),

तब में नॉनज़रोज़ है, लेकिन घना है। इस घटना की एक अच्छी तरह से ज्ञात ग्राफ व्याख्या है: के ग्राफ में लंबाई 1 या 2 का प्रत्येक पथ (यानी, में एक नॉनजो प्रवेश ) के ग्राफ में एक बढ़त बन जाता है ।हे(n)222


4

सबसे पहले, यह कार्यान्वयन पर निर्भर है। यदि आप घने मैट्रिक्स के रूप में विरल मैट्रिक्स को लागू करते हैं और गैर-शून्य में भरते हैं, तो यह मैट्रिक्स के समग्र आकार के साथ स्केल होगा। यदि इसे गैर-अक्ष के रूप में संग्रहीत किया जाता है, तो यह मैट्रिक्स आकार के साथ पहुंच के समय के पैमाने के रूप में होगा।

PETSc दस्तावेज़ीकरण में , यह बताता है कि विरल मैट्रिस के लिए डिफ़ॉल्ट भंडारण संकुचित पंक्ति भंडारण है, जो पंक्तियों की संख्या और प्रति पंक्ति गैर-शून्य मानों की संख्या के साथ होता है। इसलिए मैं इस माप के वर्ग के साथ व्यापक रूप से एक मैटमैट की उम्मीद करूंगा; यानी ।हे(आर2n2)

हालाँकि, एक बात और ध्यान देने वाली है कि जो कुछ भी नहीं है, उसका कोई मतलब नहीं है; यदि आप इस प्रदर्शन की परवाह करते हैं, तो आप 1000x1000 मैट्रिक्स के लिए 100 मान क्यों जमा कर रहे हैं? इसका मतलब है कि कम से कम 90% पंक्तियों / स्तंभों में कोई भी गैर-मान नहीं होता है, और इसे पूरी तरह से मैट्रिक्स से हटाया जा सकता है। यदि गैर-शून्य मानों का पैटर्न नहीं बदलता है, तो इस और लक्ष्य मैट्रिक्स दोनों से हमेशा-सभी-शून्य पंक्तियों को हटाने पर विचार करें; यह कुछ 90% प्रयास को हटा देगा, दो मैट्रिसेस (100 2 , 1000 2 ) के प्रदर्शन को व्यापक रूप से बराबर छोड़ देगा।


खाली पंक्तियों और स्तंभों में अक्सर एक समस्या के संबंध में कार्य होता है (उदाहरण के लिए एक छवि में स्थान के लिए पंक्ति संख्या के बीच एक समान मानचित्रण रखते हुए) इन से छुटकारा पाने के लिए व्यापार बंद नहीं होगा।
मेवोप्लप

बिल्कुल सही; अपने रनटाइम प्रदर्शन को 10x के आसपास खराब करने के लिए सिर्फ एक मैपिंग बनाए रखने के लिए जिसे आप 100 इन्ट्स के एक एकल सरणी में स्टोर कर सकते हैं, एक सामान्य अपवंचन नहीं है। चूंकि प्रश्न मैट्रिक्स के तराजू के खाली आकार के रूप में प्रदर्शन के बारे में था, यह विशेष रूप से PETSc के लिए एक बहुत महत्वपूर्ण बिंदु है, जैसा कि उन्होंने पूछा था।
फिल एच

3

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

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