2013-10-12 3 views
6

मैं एमपीआई सीख रहा हूं। पहले ट्यूटोरियल मैं पीछा किया hereएमपीआई: एमपीआईसी 2 विंडोज़ के साथ लैन में इंस्टॉलेशन और प्रोग्रामिंग

कोड है कि मैं MSVC 2010 विंडोज 7 पर सफलतापूर्वक चला है:

#include "mpi.h" 
#include "iostream.h" 

int main(int argc,char *argv []) 
{ 
    int numtasks, rank, rc; 
    rc = MPI_Init(&argc,&argv); 
    if (rc != MPI_SUCCESS) { 
     printf ("Error starting MPI program. Terminating.\n"); 
     MPI_Abort(MPI_COMM_WORLD, rc); 
    } 
    MPI_Comm_size(MPI_COMM_WORLD,&numtasks); 
    MPI_Comm_rank(MPI_COMM_WORLD,&rank); 
    printf ("Number of tasks= %d My rank= %d\n", numtasks,rank); 
    MPI_Finalize(); 
} 

मैं सफलतापूर्वक मेरी पेंटियम -4 मशीन पर इस कोड को चला रहा हूँ (न हैरान हूँ हो अभी भी एक पेंटियम -4 है)।

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

मेरा प्रश्न है कि नेटवर्क में एमपीआई प्रोग्रामिंग कैसे शुरू करें? मैं प्रत्येक मशीन में सभी उपकरण/सॉफ्टवेयर क्या चलाना चाहिए।

यदि आप मुझे ट्यूटोरियल में पॉइंटर दे सकते हैं तो मैं वास्तव में सराहना करता हूं।

MPI Implemnetation: MPICH2 
O.S:each machine is having Windows 7, 32 bit CPU: Intel's Pentium 4 and Dual core 
Network: Ethernet 
IDE:MSVC2010 

अद्यतन:

मैं अपने संदेह जेईवी के जवाब के साथ मंजूरी दे दी के कुछ मिला है। मेरे नवीनतम प्रश्न हैं:

क्या मैं प्रत्येक मशीन में एमपीआईसी 2 स्थापित करता हूं।

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable> 

मैं कैसे पता होगा कि अपने आवेदन हर मशीन पर चल रहा है: cfg फ़ाइल में प्रत्येक पंक्ति में प्रत्येक मशीन के नाम लिखने के बाद, मैं कुछ और करने के लिए या सिर्फ आदेश दे दिया है? ऐप चलाने के दौरान मुझे प्रत्येक मशीन पर कुछ विशेष विन्यास आदि करने की ज़रूरत है?

उत्तर

3

mpiexec करने के लिए फ़ाइल एक hostfile से जुड़ा मशीनों जोड़ें और पारित:

<path-to-mpich2>/bin/mpiexec.exe -machinefile hosts.cfg -n nPEs <your-executable> 

चेक वर्गों 5.4 और 9 MPICH user's guide से।

अद्यतन:

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

+0

क्या यह विंडोज़ में लिनक्स या सेमीडी के लिए है? होस्टफाइल और hosts.cfg क्या है? क्या कोई नमूना। सीएफजी फ़ाइल है? – gpuguy

+0

कमांड को विंडोज़ पर 'mpiexec.exe' कहा जाता है, लिनक्स पर कमांड' mpiexec' होगा। एसएमपीडी (चेक गाइड गाइड) का उपयोग करना विंडोज और लिनक्स दोनों पर काम करना चाहिए बशर्ते मशीनों में एमपीआईसी संस्करण समान हों। mpiexec सिर्फ एक रैपर स्क्रिप्ट है। क्या आपने ईथरनेट के माध्यम से दूसरे नोड को जोड़ने का प्रयास किया है और आप इसे दूरस्थ रूप से लॉगिन कर सकते हैं? – jev

+0

हां, मैं लॉगिन कर सकता हूं लेकिन इस तरह: नेटवर्क => ईथरनेट में जुड़े दूसरे पीसी के डबल क्लिक आइकन। => उपयोगकर्ता आईडी और पासवर्ड दर्ज करें। और अब मैं इस दूसरे पीसी में हूं। मेरा सवाल था मशीनफाइल और hosts.cfg क्या है? क्या मैं इन दो फाइलों में कुछ लिखता हूं? – gpuguy

2

ज्यादा कठिन परिश्रम के बाद मैं सहायता टीम और तेह जवाब जो मुझे मिल गया है से संपर्क करने में सक्षम था:

दुर्भाग्य MPICH टीम अब अपने Windows संस्करण का समर्थन करता है

हालांकि, वहाँ है अभी भी कुछ उम्मीद MS-एमपीआई के रूप में छोड़ दिया अभी भी प्रयोग किया जा सकता है:

http://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_Why_can.27t_I_build_MPICH_on_Windows_anymore.3F

दुर्भाग्यवश, डेवलपर संसाधनों और ब्याज की कमी के कारण, विंडोज़ पर समर्थित एमपीआईसी का अंतिम संस्करण एमपीआईसी 2 1.4.1p था। इस संस्करण के लिए न्यूनतम समर्थन बचा है, लेकिन आप इसे डाउनलोड पेज पर देख सकते हैं: http://www.mpich.org/downloads/ वैकल्पिक रूप से, माइक्रोसॉफ्ट एमपीआईसी का व्युत्पन्न बनाए रखता है जिसे आपको आवश्यक सुविधाओं को प्रदान करना चाहिए। आपको उपरोक्त डाउनलोड पेज पर उस पर एक लिंक भी मिलता है। यह संस्करण आपके सिस्टम पर काम करने की अधिक संभावना है और भविष्य में अपडेट होना जारी रहेगा। हम सभी विंडोज उपयोगकर्ताओं को एमएस-एमपीआई का उपयोग करने के लिए माइग्रेट करने की सलाह देते हैं।

+0

अपडेट किया है, मैं लिनक्स/यूनिक्स पर स्विच करूंगा, यूएसबीआई एमपीआई बहुत अधिक कॉन्फ़िगरेशन परेशानी के बिना बॉक्स से बाहर काम करता है (उदाहरण के लिए [ओपनएमपीआई] (http://www.open-mpi.org/)) – jev

+0

@jev मैंने भी यही किया। लेकिन [कुछ मुद्दों का सामना करना पड़ रहा है] (http://stackoverflow.com/questions/19565795/unable-to-execute-mpich2-on-multiple-machines-on-ubuntu-12-04-hydu-sock-connect) उबंटू में 12.04 – gpuguy

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