एक बड़े, फोरट्रान-आधारित क्रंचिंग कोडबेस को कैसे आधुनिक बनाया जा सकता है?


21

शिक्षाविद के एक मित्र ने मुझसे सलाह मांगी (मैं C # व्यवसाय अनुप्रयोग डेवलपर हूं)।

उनके पास एक विरासत कोडबेस है जो उन्होंने मेडिकल इमेजिंग क्षेत्र में फोरट्रान में लिखा था। यह वैक्टर का उपयोग करके बड़ी संख्या में क्रंचिंग करता है। वह एक क्लस्टर (30ish कोर) का उपयोग करता है और अब इसमें 500ish GPUS के साथ एक एकल कार्य केंद्र की ओर चला गया है।

हालांकि कोडबेस के साथ आगे कहां जाना है:

  • अन्य लोग इसे अगले 10 साल के चक्र पर बनाए रख सकते हैं
  • सॉफ्टवेयर को ट्विक करने पर तेज़ हो जाओ
  • बिना recompiles के विभिन्न इन्फ्रास्ट्रक्चर पर चल सकता है

मुझसे कुछ शोध के बाद (यह एक सुपर दिलचस्प क्षेत्र है) कुछ विकल्प हैं:

  • Nvidia से पायथन और CUDA का उपयोग करें
  • एक कार्यात्मक भाषा में फिर से लिखना। उदाहरण के लिए, एफ # या हास्केल
  • क्लाउड आधारित है और Hadoop और Java जैसी किसी चीज़ का उपयोग करें
  • C जानें

इससे आपका क्या अनुभव रहा है? मेरे मित्र को अपने कोडबेस को आधुनिक बनाने के लिए क्या देखना चाहिए?

अद्यतन: धन्यवाद @Mark और हर कोई है जो जवाब दिया है। मेरे मित्र से यह प्रश्न पूछने के कारण यह है कि समीक्षा करने के लिए परियोजनाओं के जीवनचक्र में एक सही समय है। फोरट्रान में गति के लिए अनुसंधान सहायकों को लाने में समय लगता है (मुझे C # पसंद है, और विशेष रूप से टूलिंग और पुरानी भाषाओं में जाने की कल्पना नहीं कर सकते हैं!)

मुझे फोरट्रान में शुद्ध संख्या में कुरकुरे रखने का सुझाव पसंद आया, लेकिन इसे कुछ नए में लपेटना। शायद पाइथन के रूप में यह एक सामान्य प्रयोजन प्रोग्रामिंग भाषा के रूप में एकेडमिया में एक गढ़ हो रहा है, जिसे उठाना काफी आसान है।

मेडिकल इमेजिंग देखें और एक आदमी जिसने CUDA के लिए एक फोरट्रान आवरण लिखा है, क्या मैं कानूनी रूप से Nvidias 'CUFFT लाइब्रेरी (CUDA SDK से) के लिए अपने फोरट्रान 90 रैपर को प्रकाशित कर सकता हूं?


मैं सूची में OpenCL जोड़ूंगा।
जेरी कॉफिन

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

"रेकराइल के बिना विभिन्न इन्फ्रास्ट्रक्चर पर चल सकता है" के तहत विशेष रूप से आपका क्या मतलब है?
रूक

हाय @Idigas - बारीकियों के बारे में सुनिश्चित नहीं हूं। लेकिन अनिवार्य रूप से कहानी यह थी कि जब कोडबेस को अन्य समूहों / मशीनों में ले जाया जा रहा था, तो पुस्तकालयों के सभी सही संस्करणों को एक साथ संकलित करने के लिए एक दुःस्वप्न बन रहा था। मेरा मानना ​​है कि कोडबेस को F77 से F90 या जो भी लिया गया था .. मूल रूप से मैं उसे सही निर्णय लेने में मदद करने की कोशिश कर रहा हूं कि एक स्मार्ट निर्णय लें कि क्या वास्तुकला / भाषाओं को बदलना है। मैं एक ऐसी पृष्ठभूमि से आता हूं, जहां ग्राहकों को अतिरिक्त कोडिंग समय का एक दिन पसंद नहीं है, इसलिए मुझे सबसे अच्छा कोड लिखने में मदद करने के लिए कुछ भी कर सकता है सबसे तेज़ आदर्श आदर्श है :-)
डेव मेटेर

@DaveMateer - मेरा उत्तर देखें (इस बॉक्स में यहाँ फिट नहीं है)। मैं अब सोने जा रहा हूं, इसलिए भविष्य के उत्तर थोड़े धीमे हो सकते हैं :)
रूक

जवाबों:


24

इस तरह की समस्याओं के लिए आपने जिन मांगों को वास्तव में फोरट्रान को सूची में सबसे ऊपर रखा है:

a) संख्या crunching
b) paralellable
c) यह सी थी और अभी भी डीईओएस अध्ययनों के बाहर सिखाई जाने वाली वास्तविक भाषा है (उन इंजीनियरों के लिए जो पेशेवर प्रोग्रामर नहीं हैं)।
d) का एक अविश्वसनीय (!) उद्योग समर्थन है, नंबर-ऑफ-इंडस्ट्री-ग्रेड-कंपाइलर-वार, जिसमें से कोई भी विक्रेता उस शाखा को छोड़ने के कम से कम संकेत नहीं दिखाता है। इंटेल के प्रतिनिधियों में से एक ने बहुत पहले पता नहीं लगाया था कि उनके फोरट्रान उत्पादों की बिक्री अधिक है, फिर उनके विकास के साधनों में कोई अन्य।

यह एक ऐसी भाषा भी है जिसे उठाना बहुत आसान है। मैं इस बात से सहमत नहीं हूं कि अनुसंधान सहायकों को गति लाने में समय लगता है। उस पर मेरी पहली पाठ्यपुस्तक, ओह, मुझे नहीं पता, 30 (?) विरल मुद्रित पाठ के पृष्ठ थे। यह एक भाषा है जिसमें 10 कीवर्ड सीखने के बाद, कोई भी मध्यम आकार के कार्यक्रम लिख सकता है। मैं यह कहने का साहस करूंगा कि डिफ़ॉल्ट वर्ड टेक्स्ट में लिखे गए वे 30 पृष्ठ अधिकांश उपयोगकर्ताओं के लिए अधिक व्यापक "फोरट्रान मैनुअल" बनाएंगे।

यदि आप CUDA में रुचि रखते हैं, तो आप पोर्टलैंड ग्रुप के कंपाइलर की जांच कर सकते हैं , जो इसका समर्थन करता है । मैं बारीक विवरण से परिचित नहीं हूं, लेकिन लोग आम तौर पर प्रशंसा के साथ इसके बारे में बात करते हैं।

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

उद्योग मानक संख्यात्मक पुस्तकालयों को इसके लिए विकसित किया जाता है, अन्य भाषाओं जो फ़ंक्शन / रूटीन पोर्टफोलियो में कम या ज्यादा होती हैं।

यह सब कहा जा रहा है, मैं फिर भी (निर्भर करता है कि यह मूल रूप से कब लिखा गया था) यह अनुशंसा करते हैं कि क्या यह कहना है, F77 कोड या पुराने, इसे आंशिक रूप से नई बोलियों के लिए समय के माध्यम से फिर से लिखना - F90 कम से कम, यदि संभव हो तो F2003 सुविधाओं के साथ। उस विषय पर एक पेपर / थीसिस हाल ही में प्रकाशित किया गया था (मध्यम आकार की पीडीएफ फाइल आगे)। इतना ही नहीं, अगर ठीक से किया जाता है, तो कई प्लेटफार्मों में पोर्टेबिलिटी सुनिश्चित करें, लेकिन यह भविष्य के रखरखाव के लिए और भी आसान बना देगा।

ps जहाँ तक "भविष्य के रख-रखाव" की बात की जाए, तो सिर्फ एक उपहास है जिसका मैं कभी-कभी उल्लेख करना चाहता हूँ। अपनी थीसिस लिखते समय, मैंने अपने संरक्षक से कुछ कोड का पुन: उपयोग किया, जो 35 साल पहले लिखे जाने के समय से लिखा गया था। यह केवल एक त्रुटि के साथ संकलित किया गया; कॉपी पेस्ट की गलती के कारण आखिर में गायब हुआ एक बयान :)


@DaveMateer (टिप्पणी का जवाब) - मैं निम्नलिखित में एक टिप्पणी करने जा रहा हूं, जो कि थोड़ा अड़ियल हो सकता है, लेकिन कृपया इसे गलत तरीके से न लें, क्योंकि यह निष्पक्ष इरादों में है।

ऐसा लगता है कि आप इस "समस्या" से गलत तरीके से निपट रहे हैं। कुछ छोटे बिंदुओं में मेरा क्या अर्थ है (क्योंकि इसमें बहुत देर हो चुकी है, और मेरी पढ़ने योग्य बनाने की क्षमता (अकेले समझने योग्य) वाक्य मुझे 10p.m के बाद छोड़ देते हैं)

क) आपने उल्लेख किया है कि आप अतिरिक्त कोडिंग समय को कम करने की कोशिश कर रहे हैं, फिर भी आप संख्यात्मक अभिकलन के लिए विशेष रूप से भाषाओं के एक रंगीन विकल्प से किसी एक भाषा को फिर से लिखने पर विचार कर रहे हैं , यदि आप मेरी अभिव्यक्ति को क्षमा करेंगे।

  • जिनमें से कुछ के पास अन्य चीजों के अलावा बहुआयामी सरणियों के लिए समर्थन नहीं है
  • उनमें से अधिकांश भारी संख्यात्मक कार्यों के लिए अनुपयुक्त हैं (हास्केल और हडोप की मैं समानांतर प्रसंस्करण क्षमताओं के बारे में स्वीकार करता हूं, मुझे इसके बारे में कुछ नहीं पता है ... लेकिन उन हलकों में भी कभी नहीं सुना है)
  • संभवतः इसकी कोशिश की गई है, लेकिन मैंने फोरट्रान से एक फिर से लिखना नहीं सुना है, एक विवेकशील समस्याओं के लिए भाषा, एक कार्यात्मक भाषा के लिए
  • "क्लाउड" में वैज्ञानिक कंप्यूटिंग के पहलुओं पर हाल ही में comp.lang.fortran (Google समूहों के माध्यम से खोज करने का प्रयास करें) पर चर्चा हुई है (
    आप को प्रेरित नहीं करना चाहते, लेकिन निष्पक्ष होना, कोई भी वास्तव में नहीं था। यकीन है कि यह शब्द भी प्रतिनिधित्व करता है, कम अकेले एक सफल आवेदन का एक उदाहरण था। ज्यादातर लोग सहमत थे कि क्षमता मौजूद है, लेकिन अब तक वे खुश हैं जिस तरह से चीजें अब काम करती हैं।) कई तरह की समस्याएं न तो उस तरह की समानता के लिए उपयुक्त हैं और न ही।

ख) इस तरह के पुनर्लेखन की लागत क्या होगी? लोग / घंटे।

ग) पुस्तकालयों के संकलित संस्करणों को संकलित करने के लिए ... - किसी भी भाषा में एक समस्या है, जिसे टाला नहीं जा सकता है, हालांकि आप इसे देखते हैं।

डी) मैंने पायथन के बारे में सुना है (एक अच्छी भाषा वास्तव में) कुछ अनुप्रयोगों पर समानांतर अनुप्रयोगों में उपयोग किया जाता है, लेकिन उस बाजार में इसकी पैठ अभी भी बढ़ती नहीं दिख रही है, और इसकी कभी बदलती प्रकृति इसे बहुत खराब विकल्प बनाती है एक लंबी अवधि की परियोजना (पिछड़े संगतता समझें)। कुछ लोग इसे "गोंद" भाषा के रूप में बहुत पसंद करते हैं।

उह, अगर मैं कुछ और सोचता हूं, तो इसे कल जोड़ूंगा। कुछ नींद आ जाएगी ...


@ इंडियादास .. फिर से बहुत सराहना मिली। पूरी तरह से सहमत हैं कि एक बार कुछ काम कर रहा है, तो इसका मतलब है कि बहुत कुछ। हमारा उद्योग पूरी तरह से फिर से लिखने के साथ बहुत गलत है (नेटस्केप!)।
डेव मेटेर

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

2
सहमत होना होगा। यदि आप गणित को समझ रहे हैं कि आप क्या कर रहे हैं (और अधिकांश इंजीनियर करते हैं), तो इसे FORTRAN में लागू करना एक सीखने की अवस्था में खड़ी नहीं है। एक बार जब आप इसे बना लेते हैं तो आवश्यकताएं शायद ही कभी बदल जाएंगी जैसे वे व्यवसाय या सामाजिक ऐप में हो सकते हैं।
जेफ़ो

वाह, मुझे नहीं पता था कि फोरट्रान के लिए चारों ओर बहुत प्यार था। मुझे F77 में 5 साल तक विकास करना था और मैं इस बात को बर्दाश्त नहीं कर सकता।
डोडी_कोडर

2
@dodgy_coder। नब्बे के दशक में आपने फोरट्रान + .NET में विकास किया। .NET का पहला बीटा 2000 में सामने आया।

10

मुझे संदेह है कि फोरट्रान कभी भी मर जाएगा - इसके पास सॉफ्टवेयर और लिबास की इतनी बड़ी विरासत है कि लोग अभी भी इस पर काम कर रहे हैं, केवल इस स्थिति को स्थिर कर रहे हैं। इसके अलावा यह अभी भी एक बहुत अच्छी भाषा है यदि आप संख्या क्रंचिंग से अधिक कुछ नहीं करना चाहते हैं - वाक्यविन्यास बहुत ही सुंदर और तार्किक है, और कंपाइलर आसानी से अनुमान लगा सकता है कि क्या हो रहा है। इस प्रकार यह गारंटी दी जाती है कि कोई भी नई हार्डवेयर त्वरक प्रौद्योगिकी C, फोरट्रान और किसी प्रकार की OpenCL (जब यह अंततः किसी ठोस में परिवर्तित हो जाएगी) का समर्थन करेगी।

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


यह उल्लेख नहीं है कि फोरट्रान में नई परियोजनाएं भी आजकल शुरू हो रही हैं।
रूक

हां, फोरट्रान नो कॉबोल, यह न केवल इसलिए समर्थित है क्योंकि 30 साल पहले लोगों ने जो सीखा था (हालांकि आईएमओ इसका हिस्सा है)। नंबर क्रंचिंग मेरी बाइट नहीं है, लेकिन अगर बेहतर है तो मैं निश्चित रूप से यह नहीं जानता।
बेन ब्रोका

1
फोरट्रान भाषा में अभी भी नंबर क्रंचिंग और संबद्ध अनुकूलन पर दस साल की बढ़त है। इसकी जल्द ही कभी भी मौत नहीं होगी।
मार्टिन यॉर्क

1
फोरट्रान के बारे में हाल ही में "एसीएम के संचार" में लेख दिखाई दिया और यह कैसे क्रमिक आधुनिकीकरण के साथ आगे बढ़ रहा है। फोरट्रान में कोड रखना (कम से कम नंबर क्रंचिंग पार्ट) शायद एक अच्छी चाल होगी। यह नेटस्केप सिंड्रोम से बचने में भी मदद करता है (फिर से नए कीड़े = विशाल चक्र समय = हर किसी को शामिल कर दिया गया)।
जल्‍दी से जल्‍दी से जल्‍दी से जल्‍दी

1
क्या आप वास्तव में कोई है जो फोरट्रान में अपने नंबर crunching कोड को छूने में कोई दिलचस्पी नहीं है चाहते हैं? एक बड़ा मुद्दा यह सुनिश्चित कर रहा है कि फिर से लिखे जाने के बाद भी परिणाम सटीक हो।
पीटर स्मिथ

4

पायथन वास्तव में वैज्ञानिक कंप्यूटिंग समुदाय में बहुत अधिक कर्षण प्राप्त कर रहा है (कुछ हद तक पुराना दृश्य के लिए, CiSE का वॉल्यूम 9 नंबर 3 देखें )। मुझे लगता है कि पायथन / फोरट्रान हाइब्रिड जाने का एक शानदार तरीका है। उन सभी GPU का लाभ उठाने के लिए, आप PyCUDA या PyOpenCL का उपयोग कर सकते हैं ।

मैं एक गणितज्ञ हूं जो आंशिक अंतर समीकरणों के लिए संख्यात्मक सॉल्वर का विश्लेषण और लेखन करता है। मैं हाल ही में आपके मित्र के साथ ऐसी ही स्थिति में था; फोरट्रान 77 कोड विचाराधीन क्लैपपैक सॉफ्टवेयर है । हमने पायथन में शीर्ष स्तर के कोड (सभी भागों को तेज करने की आवश्यकता नहीं है) को फिर से लिखा और स्वचालित रूप से निम्न-स्तरीय भागों को लपेटने के लिए f2py का उपयोग किया।

इसका वास्तव में शक्तिशाली परिणाम यह है कि हम तब समानांतर पुस्तकालय PETSc के साथ हाइब्रिड पायथन / फोरट्रान कोड (डब किया हुआ PyClaw ) को लगभग तुच्छ रूप से जोड़ने में सक्षम थे , पहली बार 65K कोर पर अच्छा प्रदर्शन करने वाले Clackpack का एक स्केलेबल समानांतर संस्करण बनाया गया था। सभी समानांतर कोड जो हमें लिखना था, वह पायथन की 300 से कम लाइनों में निहित है । अब हम उन समस्याओं को हल कर रहे हैं जो संभवतः विरासत कोड के साथ नहीं निपट सकती हैं। महत्वपूर्ण रूप से, नए उपयोगकर्ताओं के लिए अब कोड चुनना बहुत आसान हो गया है, क्योंकि पायथन एक ऐसी अनुकूल भाषा है और लगभग हर चीज को संकलन-समय के बजाय रन-टाइम में संशोधित किया जा सकता है।

यदि आप हमारे दृष्टिकोण और परिणामों का अधिक विवरण देखना चाहते हैं, तो हमारे पास arXiv पर एक पेपर है

स्व-विज्ञापन के लिए क्षमा याचना, लेकिन ऐसा लगता था कि मेरा व्यक्तिगत अनुभव यहां प्रासंगिक होगा। यदि आप कई और विचारों को सुनना चाहते हैं, तो आप इसे नए http://scicomp.stackexchange.com पर भी पोस्ट कर सकते हैं ।


1

मैं इस समय आपके मित्र के समान स्थिति में हूं। मैं अपने 40-कुछ KLOC फोरट्रान -77 विरासत कोड को "आधुनिक" करने के लिए भी बेताब हूं। और इसके बावजूद कि फोरट्रान को अभी भी नंबर क्रंचिंग एप्लिकेशन में राजा माना जाता है, मैं यह कहना चाहूंगा कि सब खो नहीं गया है। (क्या इस प्रकार है, मेरे साथ सहन-ईश है)।

सिर्फ इसलिए कि फोरट्रान संख्यात्मक कोड के लिए सबसे अच्छी भाषा है इसका मतलब यह नहीं है कि हमें हर समय हमारे साथ एक गन्दा, जटिल कोड रखना होगा (हाँ एक फोरट्रान कोड गन्दा है, विशेष रूप से फोरट्रान -77 जो कि एक है वह भाषा जिसका सॉफ्टवेयर-इंजीनियरिंग के लिए कोई संबंध नहीं है, जब वह एक निश्चित KLOC को पार कर जाता है)। जो लोग नंबर-क्रंचिंग के लिए फोरट्रान की वकालत करते हैं, वे सामान्य अवलोकन को भूल जाते हैं कि जब आप ऐसे कोड का प्रदर्शन विश्लेषण करते हैं, तो यह कोड का केवल 5% या 10% होता है जो प्रदर्शन गहन है और शेष 90% + फोरट्रान एक बेकार ओवरहेड है, बस "सॉफ़्टवेयर इंजीनियर" के रूप में अपने जीवन को एक जीवित नरक बनाने के लिए।

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

मैं एक कदम और आगे बढ़ूँगा। यहां तक ​​कि सी (और निश्चित रूप से फोरट्रान -90 / 95/2003) बहुत कम-स्तर है यदि आप एक नंबर क्रंचिंग कोड के लिए एक अच्छा "मानवीय" इंटरफ़ेस चाहते हैं। मैं एक पायथन-फोरट्रान -77 या एक पायथन-सी हाइब्रिड पर जाने की सोच रहा हूं। एक कोड जिसमें 90% कोड पायथन (Numpy, Scipy, प्लॉटेबिलिटी, और वह सब मिठास शामिल है) और केवल प्रदर्शन 5% -10% Fortran-77 या C कोड के रूप में रहता है।


1
"एक फोरट्रान कोड गड़बड़ है"। नहीं, एक गन्दा कोडर किसी भी भाषा में गन्दा कोड लिखेगा, और इसका रूपांतरण सही है। केरनिघन और प्लॉन्जर ने दिखाया है कि कैसे सालों पहले स्वच्छ फोरट्रान लिखना है ।

0

मैं वर्तमान में एक पुराने FORTRAN95 कोडबेस को आधुनिक उद्योग के वातावरण में उपयोग करने के लिए अद्यतन करने की प्रक्रिया में हूं क्योंकि पिछले संस्करण केवल नवीनतम पर Windows2000 मशीनों पर चलेगा। फोरट्रान कोडबेस में बड़ी संख्या में सिंचाई सिमुलेशन के साथ क्रंचिंग शामिल है।

इसलिए मैं जो कर रहा हूं, वह एक और आधुनिक भाषा में फोरट्रान को फिर से लिखने के बजाय है। मैं केवल एक व्यावसायिक कंपाइलर का उपयोग कर रहा हूं, जिसे सिल्वरफ्रॉस्ट एफटीएन 95 कहा जाता है । फोरट्रान कोडबेस को .net 4.0 लाइब्रेरी में संकलित करने के लिए, जिसका उपयोग मैं WPF एप्लिकेशन के बैकएंड के रूप में कर रहा हूं। । इस तरह से मैं सिमुलेशन कोड में ज्ञात बगों को लाने का जोखिम नहीं उठाता हूं और मैं इसे .NET नेट फ्रेमवर्क में कोडबेस को स्थानांतरित करके इसे आधुनिक बना रहा हूं, इसलिए यह अधिक आधुनिक पर्यावरणविदों पर चलेगा।

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

आशा है कि मेरे व्यय में मदद मिलेगी, धन्यवाद, एलेक्स।


0

मैं 2001-2003 के एक प्रोजेक्ट पर लीड कर रहा था जिसमें फोरट्रान से C # तक 100KLOC विंडो एप्लिकेशन पोर्ट की गई थी। यह एक नंबर क्रंचिंग एप्लिकेशन था जिसका Win32 पुस्तकालयों के लिए अपना स्वयं का कस्टम GUI बाइंडिंग था। C # और WinForms के पोर्ट ने कोड के प्रबंधन को बहुत सरल बना दिया और सभी को विजुअल स्टूडियो में एक समृद्ध विकास वातावरण दिया। शुरुआती तौर पर (विशेष रूप से प्रारूप बयानों के संदर्भ में) प्रतिरोध का एक सा हिस्सा था, लेकिन अंत में यह निश्चित रूप से सार्थक था।

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

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


0

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

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