क्या किसी को पता है कि MPI को gcc
के साथ संकलित करना संभव है? मुझे gcc
, mpicc
का उपयोग करने की आवश्यकता है।जीसीआई के साथ एमपीआई संकलित कैसे करें?
उत्तर
mpicc
पहले से ही एक बैकएंड
अजीब, मेरा 'mpicc' बैकएंड के रूप में 'icc' का उपयोग कर रहा है ... –
हाँ के रूप में gcc
उपयोग कर रहा है, तो आप निश्चित रूप से mpicc
आवरण की सुविधा के बिना एक MPI प्रोग्राम को संकलित कर सकते हैं। अधिकांश कार्यान्वयन पर mpicc
एक शेल स्क्रिप्ट (या समान) है जो पर्यावरण चर सेट करता है, विभिन्न पुस्तकालयों को पाता है और लिंक करता है, सभी प्रकार की चीजें जिन्हें आप अन्यथा मेकफ़ाइल में डाल सकते हैं।
मेरा सुझाव है कि आपको mpicc
स्क्रिप्ट का एक उदाहरण मिल जाए और इसे रद्द कर दें।
mpicc
केवल कंपाइलरों के कुछ सेट के आसपास एक रैपर है। अधिकांश कार्यान्वयनों में उनके mpicc
रैपर -showme
(ओपन एमपीआई) या -show
(ओपन एमपीआई, एमपीआईसी और डेरिवेट्स) जैसे विशेष विकल्प को समझते हैं जो रैपर बैकएंड कंपाइलर पर गुजरने वाले विकल्पों की पूरी सूची देता है।
उदाहरण के लिए, ओपन एमपीआई में, रैपर सी ++ प्रोग्राम हैं जो सादे पाठ कॉन्फ़िगरेशन फ़ाइलों को पढ़ते हैं और कमांड लाइन विकल्प बनाते हैं जिन्हें आगे संकलक पर पास किया जाता है।
$ mpicc -showme
icc
-I/opt/MPI/openmpi-1.5.3/linux/intel/include
-I/opt/MPI/openmpi-1.5.3/linux/intel/include/openmpi
-fexceptions
-pthread
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-Wl,-rpath,/opt/MPI/openmpi-1.5.3/linux/intel/lib
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-L/opt/MPI/openmpi-1.5.3/linux/intel/lib
-lmpi
-ldl
-Wl,--export-dynamic
-lnsl
-lutil
ऐसा नहीं है कि विशेष मामले इंटेल सी संकलक icc
बैकएंड के रूप में प्रयोग किया जाता है (यह वास्तव में एक पंक्ति है कि मैं यहाँ विभाजित किया है पठनीयता में सुधार करने के लिए): mpicc -showme
इस तरह के विकल्पों की पूर्ण सूची से पता चलता कंपाइलर लेकिन हमारे पास वेरिएंट भी हैं जो जीसीसी का उपयोग करते हैं। तुम भी mpicc -showme:compile
साथ विकल्पों comple चरण (आमतौर पर CFLAGS
के रूप में जाना जाता है) के लिए आवश्यक की सूची प्राप्त कर सकते हैं:
$ mpicc -showme:compile
-I/opt/MPI/openmpi-1.5.3/linux/intel/include
-I/opt/MPI/openmpi-1.5.3/linux/intel/include/openmpi
-fexceptions
-pthread
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
साथ
के साथ ही विकल्प है कि आप लिंकर (LDFLAGS
के रूप में जाना जाता है) को पास किए जाने की सूची mpicc -showme:link
:
$ mpicc -showme:link
-fexceptions
-pthread
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-Wl,-rpath,/opt/MPI/openmpi-1.5.3/linux/intel/lib
-I/opt/MPI/openmpi-1.5.3/linux/intel/lib
-L/opt/MPI/openmpi-1.5.3/linux/intel/lib
-lmpi
-ldl
-Wl,--export-dynamic
-lnsl
-lutil
इनका उपयोग किया जा सकता है, उदाहरण के लिए एक Makefile
, इस तरह में:
...
CFLAGS += $(shell mpicc -showme:compile)
LDFLAGS += $(shell mpicc -showme:link)
...
जहाँ तक मुझे पता के रूप में -showme:compile
और -showme:link
खोलने के लिए MPI और अन्य कार्यान्वयन केवल विकल्पों की पूर्ण सूची जब -show
के साथ बुलाया देना विशिष्ट हैं।
मैं अब भी लगता है कि यह सीधे mpicc
उपयोग करने के लिए है क्योंकि अगर ऐसा होता है कि एमपीआई सेटअप में कुछ बदल गया है, इसे तुरंत आवरण में परिलक्षित होगा बेहतर है आप मैन्युअल रूप से अपने निर्माण स्क्रिप्ट/Makefile
परिवर्तन होगा, जबकि (जब तक आप का उपयोग विकल्पों को स्वचालित रूप से प्राप्त करने के लिए -showme:compile
और -showme:link
)। MP12 के लिए
mpicc -compile_info
।
हां, आप वास्तव में जीसीसी का उपयोग कर सकते हैं।
gcc -I/usr/lib/openmpi/include/openmpi/opal/mca/event/libevent2021/libevent -I/usr/lib/openmpi/include/openmpi/opal/mca/event/libevent2021/libevent/include -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -Wl,-rpath -Wl,/usr/lib/openmpi/lib -Wl,--enable-new-dtags -L/usr/lib/openmpi/lib -lmpi
जबकि Open MPI docs में:
ओपन एमपीआई टीम दृढ़ता से है कि आप की सिफारिश की बस लेकिन (Ubuntu पर) मेरे मामले में mpicc सिर्फ जीसीसी के एक आवरण है, यहाँ है आदेश
mpicc -showme
के उत्पादन में है अपने एमपीआई अनुप्रयोगों को संकलित करने के लिए ओपन एमपीआई के "रैपर" कंपाइलर्स का उपयोग करें। यही है, अपने प्रोग्राम को संकलित करने के लिए gcc (उदाहरण के लिए) gcc का उपयोग करने के बजाय, mpicc का उपयोग करें।हम उपरोक्त कथन दोहराते हैं: ओपन एमपीआई टीम दृढ़ता से अनुशंसा करता है कि एमपीआई अनुप्रयोगों को संकलित और लिंक करने के लिए रैपर कंपाइलर्स का उपयोग करें। यदि आप खुद को कह रहे हैं, "लेकिन मैं रैपर कंपाइलर्स का उपयोग नहीं करना चाहता!", कृपया हमें हास्य दें और उन्हें आजमाएं। देखें कि वे आपके लिए काम करते हैं या नहीं। अगर वे आपके लिए काम नहीं करते हैं तो हमें बताना सुनिश्चित करें। कई लोग अपने "रैपर कंपाइलर्स चूसते हैं!" 1 99 0 के दशक के मध्य में खराब-कार्यान्वित रैपर कंपाइलरों से बुरे व्यवहार पर मानसिकता। इन दिनों चीजें बहुत बेहतर हैं; रैपर कंपाइलर लगभग किसी भी स्थिति को संभाल सकते हैं, और ओपन एमपीआई-विशिष्ट कंपाइलर और लिंकर झंडे मैन्युअल रूप से हार्ड-कोड करने की कोशिश करने से कहीं अधिक विश्वसनीय हैं। कहा जा रहा है कि कुछ बहुत ही बहुत कम स्थितियां हैं - जहां रैपर कंपाइलर्स का उपयोग समस्याग्रस्त हो सकता है - जैसे कई परियोजनाओं के एकाधिक रैपर कंपाइलर्स घोंसले करना। इसलिए, ओपन एमपीआई एमपीआईआई अनुप्रयोगों को संकलित करने के लिए आपको कौन सी कमांड लाइन झंडे की आवश्यकता है, यह जानने के लिए एक समाधान प्रदान करता है।
यहां यह उत्तर आपके लिए उपयोगी है।
- 1. ओपन-एमपीआई/एमपीआई-रन
- 2. एमपीआई
- 3. एमपीआई न्यूनतम मूल्य के साथ प्रोसेसर प्राप्त करें
- 4. एमपीआई
- 5. होमब्री पर एमपीआई समर्थन के साथ बढ़ावा कैसे बनाएं?
- 6. मैवेन के साथ एक फ़ाइल को संकलित कैसे करें?
- 7. libjpeg-turbo के साथ OpenCV को संकलित कैसे करें?
- 8. एसबीटी के साथ बस कुछ फाइलों को संकलित कैसे करें?
- 9. 'मेक' के साथ संकलित प्रोग्राम को डीबग कैसे करें?
- 10. क्लैंग ++/libC++ के साथ बूस्ट को संकलित/लिंक कैसे करें?
- 11. विजुअल स्टूडियो x64 के साथ संकलित कैसे करें?
- 12. चींटी के साथ एनोटेशन प्रोसेसर कैसे संकलित करें?
- 13. -g डीबग ध्वज के साथ बढ़ावा कैसे संकलित करें?
- 14. माइक्रोसॉफ्ट एमपीआई
- 15. स्थिर बाइनरी कैसे संकलित करें?
- 16. एमपीआई: एक कम्युनिकेटर
- 17. ब्राह्मण के साथ पाइथन को जावास्क्रिप्ट में कैसे संकलित करें (नोडजेस के साथ चलाने के लिए)?
- 18. ओपन एमपीआई "हैलो, वर्ल्ड!"
- 19. सर्वश्रेष्ठ एमपीआई कार्यान्वयन
- 20. एनडीके उपकरण के साथ स्रोत कोड के साथ पुस्तकालय संकलित कैसे करें?
- 21. एलएएम एमपीआई और ओपनएमपीआई
- 22. संस्करण नियंत्रण के साथ वर्कफ़्लो संकलित
- 23. एमपीआई वैश्विक निष्पादन समय
- 24. एमपीआई प्रोसेसर की संख्या?
- 25. ओपनएमपी और एमपीआई
- 26. एमपीआई प्रक्रियाएं कैसे शुरू की जाती हैं?
- 27. वैश्विक चर और एमपीआई
- 28. ओपनएमपी और एमपीआई स्पष्टीकरण
- 29. एमपीआई या सॉकेट?
- 30. एमपीआई और डी: लिंकर विकल्प
यह संभव है लेकिन आप क्यों चाहते हैं? आम तौर पर, लपेटा हुआ कंपाइलर (यहां mpicc) अधिक सुविधाजनक है और इसे किसी भी तरह से अनुकूलित किया जाएगा। – Hbcdev