2009-08-04 10 views
7

मैं एक C# मल्टी-थ्रेडेड मोंटे कार्लो सिमुलेशन, आवेदन पहले से ही संरचित है ऐसी है कि वह कार्य है कि स्वतंत्र रूप से निष्पादित में से विभाजित किया जा सकता है, एक TaskController कार्य निष्पादित करता है , मध्यवर्ती परिणाम एकत्रित करता है, अभिसरण (प्रारंभिक समाप्ति मानदंड) के लिए जांच करता है, फिर अंतिम परिणाम देता है, यह वर्तमान में थ्रेडपूल का उपयोग करके लागू किया जाता है।शुद्ध वितरित ग्रिड कंप्यूटिंग प्रवास, पुस्तकालयों पर सिफारिशों, वास्तुकला

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

शुरू करने के लिए मुझे लगता है कि एक मास्टर एक्सई (कंसोल ऐप) और समर्पित सर्वर के रूप में अन्य सर्वरों पर कई दास हैं (क्या ये exes? या windows सेवाएं होनी चाहिए?), अंततः मैं यह सेट सैकड़ों पर चलाने के लिए रख सकता था निष्क्रिय समय (या जब एक स्क्रीनसेवर सक्रिय होता है) के दौरान कंपनी के भीतर वर्कस्टेशंस (साथ ही सर्वर) के।

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

क्या मास्टर (कार्य नियंत्रक) सभी दास श्रमिकों के पते (आईपी) को जानना चाहिए और उन्हें काम करने के लिए कहें (यदि वे उपलब्ध हैं) या दास श्रमिकों को केवल मास्टर पता पता होना चाहिए और जब वे हों तो अनुरोध करें ऐसा करने की स्थिति में, या संचार दोनों तरीकों से बहना चाहिए? यह 24 घंटे की घड़ी पर चलाएगा जिसमें विभिन्न व्यापार क्षेत्रों का समर्थन करने के लिए प्रति दिन 9 रनों काट दिया जाएगा।

मैं के लिए सिफारिशों की तलाश में हूं .नेट ग्रिड/वितरित पुस्तकालय जो इस प्रयास में मदद और कुछ वास्तुकला सलाह दे सकता है।

अद्यतन

निम्न में से किसी का उपयोग कर किसी का अनुभव है?

http://www.digipede.net/ (commercial) 
http://www.gridbus.org/~alchemi/ 
http://ngrid.sourceforge.net/ 
http://www.osl.iu.edu/research/mpi.net/ 

या इस्तेमाल JavaSpaces, .net या पाया बराबर .net प्रौद्योगिकियों

http://java.sun.com/developer/technicalArticles/tools/JavaSpaces/ 
http://www.jini.org 

धन्यवाद

उत्तर

3

से Jini मैं इस के लिए एक space-based architecture उपयोग करने की संभावना की जांच करेगा।

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

इसका लाभ यह है कि यह तराजू बहुत आसानी से (अधिक उपभोक्ताओं को जोड़कर)।उपभोक्ताओं को यह निर्धारित करना होगा कि वे कब काम कर सकते हैं, और बस अंतरिक्ष के बारे में जानकारी के साथ कॉन्फ़िगर करने की आवश्यकता है (इसे कैसे ढूंढें)। निर्माता पूरी तरह से उपभोक्ताओं के सेट से decoupled है।

क्योंकि एक उपभोक्ता एक लेनदेन के तहत संसाधित होता है, यदि कोई उपभोक्ता पूरा करने में विफल रहता है, तो कार्य अंतरिक्ष में वापस आता है और किसी अन्य उपभोक्ता द्वारा प्रसंस्करण के लिए उपलब्ध होता है।

आप इंटरमीडिएट परिणामों को आसानी से संभाल सकते हैं। निर्माता अंतरिक्ष से परिणाम लेता है और परिणामस्वरूप उपलब्ध होने के रूप में मध्यवर्ती प्राप्त कर सकता है। आप आसानी से नौकरियां रद्द कर सकते हैं। बस उन्हें अंतरिक्ष से हटा दें।

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

मुझे यकीन नहीं है कि नेट के लिए कौन से ढांचे उपलब्ध हैं, दुर्भाग्यवश (मैं जावा दुनिया से हूं और Javaspaces का उपयोग करूंगा - ये गतिशील खोज का उपयोग करेंगे, और कोई कॉन्फ़िगरेशन के आगे की आवश्यकता नहीं है)। लेकिन कुछ Googling लायक है। शायद (यदि यह पर्याप्त शक्तिशाली है), तो आप एक जेवास्पेस इंफ्रास्ट्रक्चर में इंटरफेस करने के लिए सी # निर्माता/उपभोक्ता लिख ​​सकते हैं।

+0

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

+0

आपको बस एक मानक जावा वीएम की आवश्यकता है, और आप http://wrapper.tanukisoftware.org/doc/english/download.jsp (मुफ्त या व्यावसायिक संस्करण) का उपयोग कर एक सेवा के रूप में लपेट सकते हैं। मुझे दुर्भाग्यवश ,नेट के बारे में पता नहीं है, लेकिन आप रिक्त स्थान से बात करते हुए जावा प्रक्रिया से प्रेरित होने के लिए आसानी से अपना .NET एमसी प्रत्यारोपण प्राप्त कर सकते हैं। जावस्पेस में आपकी वस्तुएं भाषा अज्ञेयवादी हो सकती हैं - उदा। एक्सएमएल - .NET दुनिया के लिए एक सरल पास-थ्रू की सुविधा प्रदान करने के लिए। –

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