2008-09-24 10 views
5

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

उत्तर

3

नहीं बिल्कुल यकीन है कि क्या सवाल है, लेकिन आप Fortress

6

की जाँच करने के लिए आप एक मौलिक रूप से दोषपूर्ण सवाल पूछ रहे हैं चाहते हो सकता है। प्रबंधित भाषाओं का पूरा बिंदु यह है कि आप स्मृति को संभाल नहीं पाते हैं। यह कचरा कलेक्टर द्वारा संभाला जाता है, जबकि आप कुछ कार्यों को बेहतर ढंग से अपने काम को कुशल तरीके से करने की अनुमति दे सकते हैं, यह आपकी नौकरी करने का काम नहीं है।

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

+0

कचरा एकत्रित भाषाएं अक्सर आपको मेमोरी लेआउट पर नियंत्रण देती हैं, उदाहरण के लिए .NET में structs। –

5

एफ # इस दर्शकों पर कुछ हद तक लक्षित लगता है। वास्तव में F# for scientists नामक एक पुस्तक है।

इसके अलावा यह question लैम्बडा द अल्टीमेट में पूछा गया था।

1

मुझे लगता है कि कार्यात्मक भाषाएं इस प्रकार के कार्य के लिए सबसे उपयुक्त होंगी।

0

एक प्रबंधित भाषा के साथ आपको उस नियंत्रण को आसानी से नहीं मिलता है। इन भाषाओं में पूरा बिंदु मॉलोक, कचरा, और इसी तरह से संभालना है। प्रत्येक प्रबंधित भाषा अलग-अलग संभाल लेगी।

स्मृति से बाहर चलने वाले पर्ल के साथ एक घातक त्रुटि माना जाता है। आप $^एम के साथ कुछ छोटे उपाय के माध्यम से दिन बचा सकते हैं, लेकिन यह तभी होता है जब आपका कंपाइलर उस सुविधा के साथ संकलित किया गया हो, और आप इसके लिए कोड प्रावधान जोड़ते हैं।

5

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

आगे, यह प्रोग्राम कोड उत्पन्न करेगा (एक अलग प्लगइन की आवश्यकता हो सकती है?) ताकि एक बार जब आप एल्गोरिदम पर पहुंच जाएं तो आप पैकेज करना चाहते हैं, तो आप इसे अपने एम स्क्रिप्ट में जो काम मूल रूप से करते थे, उसे करने के लिए सी कोड उत्पन्न कर सकते हैं या सिमुलिंक मॉडल।

-Adam

2

मुझे लगता है मैं कह कर सवाल व्याख्या करेंगे, .नेट स्मृति प्रबंधक जहां पारंपरिक रूप से हाथ देखते दिनचर्या स्मृति के प्रदर्शन में सुधार के लिए इस्तेमाल किया गया है वैज्ञानिक कंप्यूटिंग के लिए स्मृति प्रबंधन का काम से निपटने में सक्षम है विशेष रूप से बहुत बड़ी (GByte) matrices के लिए?

इस लेख के लेखक निश्चित रूप से मानना ​​है कि यह है कि: Harness the Features of C# to Power Your Scientific Computing Projects

के रूप में अन्य लोगों ने बताया है, प्रबंधित कोड का एक प्रमुख मुद्दा यह है कि आप स्मृति प्रबंधन कार्य अपने आप से निपटने के लिए की जरूरत नहीं है है। यह एक बड़ा फायदा है क्योंकि यह आपको एल्गोरिदम पर ध्यान केंद्रित करने की अनुमति देता है।

0

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

तो मैं .NET के साथ जाऊंगा (जब तक यह आपको आवश्यक पुस्तकालयों के साथ प्रदान करता है)। स्मृति का प्रबंधन एक दर्द है, और आपको इसे अच्छा करने के लिए बहुत कुछ करना है। .NET के भीतर, जो भी भाषा आप सबसे अधिक आरामदायक हैं, चुनें, जब तक यह जे # या वीबी.नेट नहीं है और सी # है।

+2

वाह, मुझे नहीं पता * क्या * बिल्ली मैं उस पहले पैराग्राफ में बात कर रहा था। मुझे नशे में होना चाहिए था। मुझे अभी भी लगता है कि सी # वैज्ञानिक कंप्यूटिंग सॉफ्टवेयर के लिए एक उत्कृष्ट विकल्प है, लेकिन गीज़। – MusiGenesis

10

Python हाल ही में वैज्ञानिक कंप्यूटिंग में काफी बड़ा हो गया है। यह एक प्रबंधित भाषा है, इसलिए आपको अपनी याददाश्त को मुक्त करने की याद नहीं है। साथ ही, इसमें वैज्ञानिक और संख्यात्मक कंप्यूटिंग के लिए संकुल हैं (NumPy, SciPy), जो आपको संकलित भाषाओं के समान प्रदर्शन देता है। इसके अलावा, पायथन को सी कोड के साथ आसानी से एकीकृत किया जा सकता है।

पायथन एक बहुत ही अभिव्यक्तिपूर्ण भाषा है, जो कई पारंपरिक भाषाओं की तुलना में लिखना और पढ़ना आसान बनाता है। यह कुछ तरीकों से MATLAB जैसा दिखता है, जिससे वैज्ञानिकों के लिए सी ++ या फोरट्रान की तुलना में इसका उपयोग करना आसान हो जाता है।

University of Oslo ने हाल ही में पाइथन को सूचना विज्ञान विभाग (जो अभी भी जावा सीखते हैं) के बाहर सभी विज्ञान छात्रों के लिए डिफ़ॉल्ट भाषा के रूप में पढ़ाना शुरू कर दिया है।

Simula Research Laboratory, जो कि वैज्ञानिक कंप्यूटिंग, आंशिक अंतर समीकरण आदि में भारी है, बड़े पैमाने पर अजगर का उपयोग करता है।

+3

पाइथन निष्पादक भाषाओं में लिखे गए मौजूदा कोड को कॉल करने के लिए पर्याप्त हो सकता है लेकिन यह स्पष्ट रूप से निष्पादक कोड लिखने के लिए अपर्याप्त है, जो इस प्रश्न का विषय था। –

+3

न्यूमपी और साइपी के साथ वास्तव में क्या चल रहा है। वे सी में लागू होते हैं, जो पाइथन मॉड्यूल में लिपटे होते हैं, और लगभग बराबर सी कोड के रूप में कुशल होते हैं। तो मैं तर्क दूंगा कि मेरा उत्तर अभी भी प्रासंगिक है, और सभी अपर्याप्त नहीं है। – knatten

+4

मुझे लगता है कि ओपी खुद को नया प्रदर्शन कोड लिखना चाहता है और सिर्फ किसी और के कोड को पायथन से नहीं बुलाता है। –

1

ओबेरॉन माइक्रोसिस्टम्स द्वारा विकसित ब्लैकबॉक्स घटक बिल्डर, प्रोग्रामिंग भाषा "घटक पास्कल" के लिए घटक-आधारित विकास वातावरण है।

इसकी स्थिरता, प्रदर्शन और सादगी के कारण, ब्लैकबॉक्स विज्ञान और इंजीनियरिंग अनुप्रयोगों के लिए पूरी तरह उपयुक्त है।

http://www.oberon.ch/blackbox.html

(प्रकटीकरण: मैं ओबेरोन माइक्रोसिस्टम्स के लिए काम करते हैं)

सादर,

1

tamberg सबसे अच्छा विकल्प NumPy/SciPy/IPython साथ अजगर है। इसमें उत्कृष्ट प्रदर्शन है क्योंकि कोर गणित अत्यधिक अनुकूलित सी और फोरट्रान में लिखे गए पुस्तकालयों में हो रहा है। चूंकि आप पाइथन का उपयोग करके इसके साथ बातचीत करते हैं, इसलिए आपके परिप्रेक्ष्य से सब कुछ बेहद संक्षिप्त, पठनीय कोड और कचरा संग्रह के साथ साफ और प्रबंधित होता है।

1

संक्षिप्त उत्तर यह है कि आप एक उपयुक्त भाषा (जैसे OCaml या F#) चुनकर प्रबंधित भाषाओं में लिखे गए कार्यक्रमों की स्मृति और प्रदर्शन को नियंत्रित कर सकते हैं और सीख सकते हैं कि उस भाषा में अनुकूलित कैसे करें। लंबे उत्तर में आपके द्वारा उपयोग की जाने वाली विशिष्ट भाषा पर एक पुस्तक की आवश्यकता होती है, जैसे OCaml for Scientists या Visual F# 2010 for Technical Computing

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

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