2011-11-21 10 views
31

फोरट्रान संदर्भ कार्यान्वयन प्रलेखन राज्यों:बीएलएएस डीजीएमएम में एलडीए तर्क का उद्देश्य?

* LDA - INTEGER. 
*   On entry, LDA specifies the first dimension of A as declared 
*   in the calling (sub) program. When TRANSA = 'N' or 'n' then 
*   LDA must be at least max(1, m), otherwise LDA must be at 
*   least max(1, k). 
*   Unchanged on exit. 

हालांकि, यह देखते हुए मीटर और कश्मीर नहीं मैं झील प्राधिकरण प्राप्त करने के लिए सक्षम होना चाहिए? एलडीए को एन (या के) से बड़ा होने की अनुमति कब दी जाती है?

उत्तर

19

भेद ए और बी और भौतिक आकार के पहले आयामों के तार्किक आकार के बीच भेद है। पहला वह सरणी है जिसका आप उपयोग कर रहे हैं, दूसरा घोषणा में मूल्य है, या उपयोग की गई स्मृति की भौतिक राशि है। चूंकि फोरट्रान एक स्तंभ प्रमुख भाषा है, इसलिए अंतिम को छोड़कर सभी इंडेक्स के घोषित आकार को सरणी तत्व के स्थान की गणना करने के लिए जाना जाना चाहिए। "ए (एलडीए, ), बी (एलडीबी,), सी (एलडीसी, *)" के फोरट्रान 77 स्टाइल घोषणाओं पर ध्यान दें। सरणी का घोषित आकार उस भाग से बड़ा हो सकता है जिसका आप उपयोग कर रहे हैं; बेशक यह छोटा नहीं हो सकता है।

32

बीएलएएस में एलडीए पैरामीटर प्रभावी रूप से मैट्रिक्स का मार्ग है क्योंकि इसे रैखिक स्मृति में रखा गया है। यह एलडीए मान रखने के लिए पूरी तरह से मान्य है जो मैट्रिक्स के अग्रणी आयाम से बड़ा है जिसका संचालन किया जा रहा है। विशिष्ट मामलों जहां यह एक बड़ा एलडीए मान का उपयोग करने के लिए उपयोगी या आवश्यक होता है, जब आप एक बड़े घने मैट्रिक्स से उप मैट्रिक्स पर परिचालन कर रहे होते हैं, और जब हार्डवेयर या एल्गोरिदम प्रदर्शन लाभ प्रदान करते हैं तो भंडारण को कुछ इष्टतम आकार के गुणकों के चारों ओर पैड किया जाता है (उदाहरण के लिए कैश लाइन या जीपीयू मेमोरी लेनदेन का आकार, या मल्टीप्रोसेसर कार्यान्वयन में भार संतुलन)।

4

एलडीए वाई-स्ट्रैड है, जिसका मतलब है कि एक पंक्ति-प्रमुख लेआउट में तत्व ए [वाई, एक्स] के लिए आपका पता एक्स + एलडीए * वाई के रूप में गणना किया गया है। एक्स-डेटा एलडीए = xSize की आसन्न रेखाओं के बीच अंतराल के बिना "पैक" मेमोरी लेआउट के लिए।