क्या कोई ऐसा उपकरण है जो फोर्ट्रान (या सी) कोड को पार्स करके फ़ॉर्टन (या सी) फ़ंक्शन के अंतराल एक्सटेंशन उत्पन्न कर सकता है?


13

मेरे पीएचडी थीसिस में केस स्टडीज की आवश्यकता है कि मेरे पास CHEMKIN-II में फोरट्रान सबरूटीन्स के अंतराल एक्सटेंशन हैं (लिंक के लिए माफी; यह सबसे अच्छा है जिसे मैं सैंडिया नेशनल लेबोरेटरी द्वारा वितरित किए गए पैकेज के लिए खोज सकता हूं)। CHEMKIN-II एक रसायन विज्ञान पैकेज है जिसका उपयोग दहन रसायन विज्ञान में किया जाता है; चूंकि यह दहन में उपयोग किया जाने वाला मानक पैकेज है, इसलिए मैं वहां से अलग पैकेज का उपयोग नहीं कर सकता (या बल्कि वास्तव में पसंद नहीं करूंगा)।

आवश्यक अंतराल एक्सटेंशन प्राप्त करने के लिए, मैं इन-हाउस नामक एक उपकरण विकसित कर रहा हूं जिसे DAEPACK कहा जाता है। पुराने बायनेरिज़ जो मैंने CHEMKIN-II सबरूटीन्स के आवश्यक अंतराल एक्सटेंशन को उत्पन्न करने में सक्षम होने के लिए उपयोग किया है जो मुझे एक 32-बिट OS पर (कुछ समय पहले 2.95 gcc के लिए libstdc के संस्करण के साथ), लेकिन तब से बाहर गिर गया है तारीख के लिए, और उपयोग करने के लिए एक जबरदस्त प्रक्रिया होगी (क्योंकि मुझे मेरे द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर के हर दूसरे टुकड़े के 32-बिट संस्करण खोजने होंगे)। इस पैकेज का स्रोत कोड भी मालिकाना है, लेकिन चूंकि यह मूल रूप से MIT में विकसित किया गया था, और मैं MIT में काम करता हूं, इसलिए मैं DAEPACK के लिए स्रोत कोड प्राप्त करने में सक्षम था (बहुत प्रयास के बाद)। मेरे पास मौजूद स्रोत कोड का उपयोग करते हुए, मैं लिनक्स के 64-बिट संस्करणों और libstdc के संस्करणों के साथ संगत DAEPACK के एक संस्करण को संकलित करने में सक्षम था। Gxx 4.xx हालांकि, यह स्रोत कोड, जिस पर मुझे संदेह है, पुराना है, एक निष्पादन योग्य में संकलित करता है जो मेरी थीसिस को पूरा करने के लिए अंतराल विस्तार कोड को सफलतापूर्वक उत्पन्न नहीं करता है। मैंने स्रोत कोड को ठीक करने में उसकी सहायता प्राप्त करने के प्रयास में डेवलपर से संपर्क किया है, लेकिन डेवलपर के साथ पिछले संपर्क से, मुझे पता है कि स्रोत कोड को ठीक करने में उसे समय लगेगा, यदि वह ऐसा करता है।

यहां बड़ी समस्या है: मेरे पास स्नातक होने तक 6 महीने बाकी हैं क्योंकि मैं फंडिंग से बाहर हूं। मैं अपने पीएचडी थीसिस को सफलतापूर्वक पूरा करने के लिए डेवलपर पर इतना जल्दी भरोसा नहीं कर सकता कि मैं अपने पीएचडी थीसिस को सफलतापूर्वक पूरा कर सकूं, जहां आप लोग आते हैं।

मुझे एक पैकेज की आवश्यकता है जो निम्नलिखित कार्य करे:

  • अंतराल एक्सटेंशन, टेलर मॉडल (अंतराल अंकगणित का उपयोग करके), और लगभग मनमाना फोरट्रान 77 कोड के डेरिवेटिव उत्पन्न करता है; मुझे लगता है कि केवल संरचनाएं जिन्हें DAEPACK द्वारा पार्स नहीं किया गया है, DOलूप और IFस्टेटमेंट हैं। चूंकि मुझे टेलर मॉडल की आवश्यकता है, इसलिए कोड में स्वचालित भेदभाव (AD) क्षमता भी होनी चाहिए।
  • फोरट्रान 77 कोड के स्रोत-से-स्रोत अनुवाद द्वारा इन अंतराल एक्सटेंशन और टेलर मॉडल उत्पन्न करता है (यानी, यह अंतर कोड एक्सटेंशन और टेलर मॉडल की गणना करने वाले स्रोत कोड को उत्पन्न करने के लिए एक संकलक की तरह स्रोत कोड को पार्स करता है)।

एक चुटकी में, मैं सॉफ्टवेयर का उपयोग कर सकता हूं जो उपरोक्त दो चीजें फोरट्रान 77 कोड के बजाय सी कोड में करता है, और फिर सब कुछ गुजरता है f2c। मैं वास्तव में इसे इस तरह से नहीं करना पसंद करूंगा, क्योंकि मुझे नहीं पता कि सब कुछ गुजर रहा है या नहीं f2c, यहां तक ​​कि काम भी नहीं करेगा, लेकिन मैं बहुत हताश हूं।

क्या आप लोग एक हताश पीएचडी छात्र की मदद कर सकते हैं?


कुछ संभावित सुझावों का अनुमान लगाने के लिए, यहां ऐसे दृष्टिकोण हैं जो मेरे लिए काम नहीं करेंगे, समय की कमी को देखते हुए:

  • काम करने के लिए DAEPACK प्राप्त करने के लिए कठिन प्रयास करना; मेरा विश्वास करो, मैंने कोशिश की है। और मैं डेवलपर को बार-बार टोक रहा हूं।
  • वे उपकरण जो ऑब्जेक्ट-ओरिएंटेड (या ऑब्जेक्ट-ओरिएंटेड-जैसे) दृष्टिकोणों का उपयोग करके अंतराल एक्सटेंशन या टेलर मॉडल की गणना करते हैं। मेरे पास नए प्रकारों के साथ CHEMKIN-II (या किसी अन्य इसी तरह की बड़ी लाइब्रेरी) को फिर से बनाने का समय नहीं है; यह कितना बड़ा है।
  • फोरट्रान 77/90 या C. के अलावा किसी भी भाषा का उपयोग करना CHEMKIN-II कोड फोरट्रान में है। मैं इसे C का उपयोग करके परिवर्तित कर सकता हूं f2c, या यदि आवश्यकता हो, तो CHEMKIN-II के सैंडिया-आधारित क्लोन का उपयोग करें जिसे TChem कहा जाता है। मेरे पुराने परिणाम CHEMKIN-II का उपयोग करते हैं; मेरे नए परिणामों को मेरे पुराने परिणामों को फिर से भरना चाहिए, और मुझे पहले से ही पता है कि कैंटरा केस-स्टडी और यूनिट परीक्षण के आधार पर CHEMKIN-II क्या दोहराएगा। इसके अलावा, स्नातक छात्र जो मुझसे पहले आया था, विशेष रूप से अच्छी तरह से काम करने के लिए अंतराल अंकगणित प्राप्त करने के लिए CHEMKIN-II स्रोत कोड में कुछ काला जादू किया। मेरे लिए किसी अन्य पैकेज में इसे दोहराना मुश्किल होगा।

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

6
अपने मौजूदा परिणामों को लेते हुए, उन्हें अपने थीसिस विषय की व्याख्या में ढालें, एक अच्छा लेखन कार्य करें, और अपनी रक्षा समिति को शानदार स्नैक्स खरीदें।
मैट नेप्ले

f:RRF:(R,R0+)((R,R0+)F(a,b)=f([ab,a+b])
डेथब्रेथ

1
अंतराल अंकगणित के बुनियादी साक्षात्कार विकिपीडिया पर (जिसमें अंतराल विस्तार की अवधारणा शामिल है) और इस पृष्ठ पर उल्लिखित संदर्भों में पाया जा सकता है । टेलर मॉडल है कि मैं मिल सकता है के लिए सबसे अच्छा परिचय है यहाँ । टेलर मॉडल के कार्यान्वयन में आमतौर पर स्वचालित भेदभाव का उपयोग किया जाता है; मैंने कभी किसी को इसके बजाय संख्यात्मक अंदाज़े का इस्तेमाल करते हुए नहीं देखा या देखा नहीं है।
ज्योफ ऑक्सबेरी

2
@ मीशा ब्रुकमैन: ओह, मैंने उस सब पर ध्यान दिया।
ज्योफ ऑक्सबेरी

जवाबों:


2

यह मानते हुए कि मुद्दा यह है कि DAEPACK32-बिट मोड में काम करता है, लेकिन 64-बिट मोड नहीं है, यहां इसे संबोधित करने के लिए कुछ दृष्टिकोण दिए गए हैं।

DAEPACK64-बिट OS पर 32-बिट मोड में संकलित करें

एक और प्रश्न में यह कैसे करें देखें । इसके साथ काम करना जारी रखने का यह एक आसान तरीका हो सकता है।

यदि समस्या यह है कि उत्पन्न कोड में 64-बिट मोड में समस्याएँ हैं, तो समान 32-बिट फ़्लैग के साथ या 32-बिट वातावरण में 64-बिट OS के साथ जनरेट किए गए कोड को संकलित करके उपयुक्त लाइब्रेरी दी जा सकती है, लेकिन इसके विपरीत नहीं )।

एक संपूर्ण DAEPACKपर्यावरण को फिर से बनाएँ

  1. वर्चुअल मशीन का उपयोग करके एक पूर्ण 32-बिट वातावरण बनाएं, जैसे, वर्चुअलबॉक्स , जैसे कि इसमें DAEPACKखुश चल रहा है, चाहे वह पुराने बायनेरिज़ से हो, या इस वातावरण में recompiled हो। आप एक ओपन-सोर्स ओएस और संकलक के रूप में पुराने रूप में रिलीज कर सकते हैं क्योंकि आपको सॉफ़्टवेयर का एक कार्यशील संस्करण प्राप्त करने की आवश्यकता है।

  2. आउटपुट से लें DAEPACKऔर उन्हें होस्ट मशीन या एक अलग वर्चुअल मशीन में स्थानांतरित करें जहां पर्यावरण अन्य सॉफ़्टवेयर के लिए उपयुक्त है और काम करना जारी रखे। उदाहरण के लिए, यह हाल ही में 64-बिट OS हो सकता है और वहां काम करना जारी रख सकता है।

    वर्चुअलबॉक्स में साझा किए गए फ़ोल्डर्स फ़ीचर का उपयोग करना आपके लिए यह आसान बनाना चाहिए।

दूसरों को ठीक करने में सहायता के लिए सूचीबद्ध करें DAEPACK

मैंने देखा कि आपने कहा था कि न तो आपके पास और न ही सॉफ़्टवेयर लेखक के पास इसे ठीक करने का समय है, लेकिन किसी ने भी नहीं कहा कि आप किसी और की मदद नहीं ले सकते! इन विकल्पों पर विचार करें:

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

  • का एक खुला स्रोत रिहाई के लिए लॉबी DAEPACK। ऐसा लगता है कि इसकी लाइसेंसिंग की स्थिति स्पष्ट नहीं है , लेकिन ध्यान दें कि एमआईटी के पास एक ओपन-सोर्स लाइसेंस है जो कि अच्छी तरह से जाना जाता है; एक खुले लाइसेंस के तहत इसे जारी करने से समस्या पर अधिक आँखें प्राप्त करने और 32-बिट बनाम 64-बिट समस्याओं को ठीक करने में मदद मिल सकती है।

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

सौभाग्य!


इस उत्तर को लिखने में कुछ समय बिताने के बाद, मुझे बस यह एहसास हुआ कि आपने अपना प्रश्न 6 महीने की समय सीमा के साथ 2012 में लिखा था, इसलिए यह चर्चा लुट गई। उसके लिए माफ़ करना! मैं अभी भी उत्सुक हूं कि आपने इस मामले में क्या किया।
मिशा ब्रुकमैन

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

@GeoffOxberry यह सुनकर खेद है, लेकिन यह (दुर्भाग्य से) तथाकथित "अनुसंधान-गुणवत्ता" सॉफ़्टवेयर में बहुत अधिक प्रचलित है। फिर भी आपकी डिग्री को पूरा करने और पूरा करने पर बधाई!
मिशा ब्रुकमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.