2009-11-23 18 views
5

मै मैटलैब 200 बी में लिखे गए कोड के साथ एक चिकित्सकीय शोधकर्ता जो स्वयं-रेफरेंसियल लूप (प्रोग्रामिंग लिंगो के बारे में निश्चित नहीं है) के कारण बहुत धीरे-धीरे चलता है, यानी, पहले पुनरावृत्ति के परिणाम का उपयोग किया जाता है दूसरा पुनरावृत्ति, इत्यादि। (मैंने इसे एक किराए पर रखा है। मैंने प्रोफाइलर चलाया है।)MATLAB कोड को फोरट्रान में परिवर्तित करना

मैं कोड के धीमे हिस्सों को एक मैक्स फ़ंक्शन में कनवर्ट करना चाहता हूं। मैंने 1 9 70 के दशक के शुरू में फोरट्रान सीखा लेकिन तब से इसका इस्तेमाल नहीं किया है। जिस कोड को मैं कनवर्ट करने की ज़रूरत है वह कुछ भी फैंसी नहीं करता है, यह सिर्फ एक लंबी संख्यात्मक गणना है।

मेरा सवाल है: इस उद्देश्य के लिए फोरट्रान का सबसे आसान संस्करण रिलीज संस्करण क्या होगा, और इसके लिए इंटेल मैक पर कौन सा कंपाइलर सबसे अच्छा काम करता है? मुझे उदाहरण के लिए फोर्ट्रान 9 0 में MATLAB में सिंटैक्स की तुलना में जानकारी मिली, और रूपांतरण ऐसा नहीं लगता है कि यह मेरे लिए बहुत कठिन होगा। हालांकि, फिर से, मैं कोई प्रोग्रामर नहीं हूं।

मैं ओएस 10.6 के साथ मैकबुक प्रो का उपयोग कर रहा हूं।

किसी भी मदद की सराहना करते हैं, धन्यवाद।

+0

कितना विडंबनापूर्ण है। माटलैब को "बेहतर" फोरट्रान के रूप में विकसित किया गया था। – Marc

+5

क्या कोड पोस्ट करने के लिए पर्याप्त छोटा है? मेक्स का सहारा लेने से पहले अभी भी अन्य अनुकूलन हो सकते हैं। जैसे प्रीलोकेशन और फंक्शन कॉल से सावधान रहना नए मैटलैब्स को जगह-जगह सरणी संशोधन करने की अनुमति दे सकता है, जो पुनरावर्तक गणनाओं के लिए एक बड़ी जीत है। –

+1

आशा करता है कि इस गर्म चर्चा से उसे डराया नहीं जाएगा :) – Amro

उत्तर

8

मैं आधुनिक फोरट्रान का उपयोग करने की सिफारिश करता हूं, कम से कम 90/95 क्योंकि वाक्यविन्यास बहुत अधिक क्षमाशील है और लगभग सभी कंपाइलर अब इसका समर्थन करते हैं।

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

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

+0

कोई टिप्पणी के साथ Downvote? मुझे लगता है कि मैंने सवाल का जवाब दिया ... – robince

+0

+1 डाउनवोट का मुकाबला करने के लिए। मुझे लगता है कि सलाह अच्छी है (जो कुछ मैं कहने वाला था), केवल कुछ लोगों को कुछ भाषाओं को पसंद नहीं है, इसलिए डाउनवोट (अनुमान)। – Rook

0

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

मैं जो कह रहा हूं, आप फोर्टन जाने से पहले, सर्वोत्तम अभ्यास ढूंढें और इसे कार्यान्वित करें। इससे आपको वहां एक स्पीड-अप पर्याप्त हो सकता है।

इसके अलावा, क्या आप पूरी तरह से निश्चित हैं कि आपने एक लूप को मंदी को अलग कर दिया है? क्या आप प्रोफाइलर का उपयोग कर रहे हैं? आप शायद अनुभव किया है, क्योंकि आप अनुभवी ध्वनि। मैंने सोचा कि मैं इसका जिक्र करूँगा।

शुभकामनाएं, एरियल

संबंधित मुद्दे