2012-11-26 12 views
5

मैं एक एलएएम एमपीआई क्लस्टर मशीन पर Rmpi पैकेज स्थापित करने की कोशिश कर रहा हूं। पहले मैं कुछ सामान संकलित और परीक्षण कर रहा था (mpi4py और छोटे सी ++ प्रोग्राम) इसलिए मुझे यकीन है कि एमपीआई स्वयं ही काम करता है। हालांकि पुस्तकालयों को जोड़ने पर Rmpi पैकेज स्थापित करना विफल रहता है।एलएएम/एमपीआई क्लस्टर पर आरएमपीआई स्थापित करना

मेरा मुख्य संदिग्ध मेकफ़ाइल में mpicc के बजाय gcc पर कॉल है (मैं इसे बदलने के लिए कॉन्फ़िगरेशन में लाइन ढूंढने की कोशिश कर रहा हूं लेकिन अब तक इसका पता नहीं लगा सका)।

क्या किसी को एलएएम पर आरएमपीआई स्थापित करने का अनुभव है, और आपने इसका प्रबंधन कैसे किया?

वास्तुकला

  • लैम एमपीआई (या शायद पीबीएस एमपीआई अगर इस तरह मौजूद हैं, मैं कैसे की जाँच करते हैं?)। यकीन के लिए एक बात है, मैं mpicpp फ़ाइल जो मुझे नहीं लगता कि सभी MPI कार्यान्वयन के लिए आम है है
  • आर 2.15.2
  • Rmpi_0.6-1
  • CentOS रिलीज 5.5 (अंतिम), x86_64

कमान आर से कहा जाता

install.packages("Rmpi") 

लॉग

trying URL 'http://cran.at.r-project.org/src/contrib/Rmpi_0.6-1.tar.gz' 
Content type 'application/x-gzip' length 92977 bytes (90 Kb) 
opened URL 
================================================== 
downloaded 90 Kb 

* installing *source* package âRmpiâ ... 
** package âRmpiâ successfully unpacked and MD5 sums checked 
checking for gcc... gcc -std=gnu99 
checking whether the C compiler works... yes 
checking for C compiler default output file name... a.out 
checking for suffix of executables... 
checking whether we are cross compiling... no 
checking for suffix of object files... o 
checking whether we are using the GNU C compiler... yes 
checking whether gcc -std=gnu99 accepts -g... yes 
checking for gcc -std=gnu99 option to accept ISO C89... none needed 
I am here /usr and it is OpenMPI 
Trying to find mpi.h ... 
Found in /usr/include 
Trying to find libmpi.so or libmpich.a ... 
Found libmpi in /usr/lib 
checking for openpty in -lutil... yes 
checking for main in -lpthread... yes 
configure: creating ./config.status 
config.status: creating src/Makevars 
** libs 
gcc -std=gnu99 -I/g/software/linux/pack/r-2.15.2/centos-5/lib64/R/include -DNDEBUG -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I/usr/include -DMPI2 -DOPENMPI -I/usr/local/include -fpic -g -O2 -c RegQuery.c -o RegQuery.o 
gcc -std=gnu99 -I/g/software/linux/pack/r-2.15.2/centos-5/lib64/R/include -DNDEBUG -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I/usr/include -DMPI2 -DOPENMPI -I/usr/local/include -fpic -g -O2 -c Rmpi.c -o Rmpi.o 
gcc -std=gnu99 -I/g/software/linux/pack/r-2.15.2/centos-5/lib64/R/include -DNDEBUG -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I/usr/include -DMPI2 -DOPENMPI -I/usr/local/include -fpic -g -O2 -c conversion.c -o conversion.o 
gcc -std=gnu99 -I/g/software/linux/pack/r-2.15.2/centos-5/lib64/R/include -DNDEBUG -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -I/usr/include -DMPI2 -DOPENMPI -I/usr/local/include -fpic -g -O2 -c internal.c -o internal.o 
gcc -std=gnu99 -shared -L/usr/local/lib64 -o Rmpi.so RegQuery.o Rmpi.o conversion.o internal.o -L/usr/lib -lmpi -lutil -lpthread -L/g/software/linux/pack/r-2.15.2/centos-5/lib64/R/lib -lR 
/usr/bin/ld: skipping incompatible /usr/lib/libutil.so when searching for -lutil 
/usr/bin/ld: skipping incompatible /usr/lib/libutil.a when searching for -lutil 
/usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread 
/usr/bin/ld: skipping incompatible /usr/lib/libpthread.a when searching for -lpthread 
/usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc 
/usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc 
installing to /home/andrejev/R/x86_64-unknown-linux-gnu-library/2.15/Rmpi/libs 
** R 
** demo 
** inst 
** preparing package for lazy loading 
** help 
*** installing help indices 
** building package indices 
** testing if installed package can be loaded 
Error : .onLoad failed in loadNamespace() for 'Rmpi', details: 
    call: dyn.load(file, DLLpath = DLLpath, ...) 
    error: unable to load shared object '/home/andrejev/R/x86_64-unknown-linux-gnu-library/2.15/Rmpi/libs/Rmpi.so': 
    /usr/lib/libmpi.so.0: undefined symbol: _kio 
Error: loading failed 
Execution halted 
ERROR: loading failed 
* removing â/home/andrejev/R/x86_64-unknown-linux-gnu-library/2.15/Rmpiâ 

The downloaded source packages are in 
     â/tmp/Rtmp5qzeqp/downloaded_packagesâ 
Warning message: 
In install.packages("Rmpi") : 
    installation of package âRmpiâ had non-zero exit status 
+0

क्या आप वास्तव में अभी भी एलएएम/एमपीआई चला रहे हैं ?! यह बात ब्रह्मांड के रूप में पुरानी है :) मैं कहूंगा कि आप ओपन एमपीआई का उपयोग कर रहे हैं (एलएएम/एमपीआई ओपन एमपीआई साल पहले विलय कर दिया गया था)। पीबीएस आपके क्लस्टर बैच सिस्टम है, इसका एमपीआई के साथ कुछ लेना देना नहीं है। –

उत्तर

6

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

हमारे लिए पहला कदम, Dirk का उल्लेख किया गया था, ओपनएमपीआई चल रहा था। एक बार जब कि सेटअप है, तो आप यह सुनिश्चित करने की आवश्यकता होगी अपने LD_LIBRARY_PATH ठीक से सेट किया गया है:

export LD_LIBRARY_PATH=/opt/openmpiv2/lib/:$LD_LIBRARY_PATH 

आदेश है कि अंत RMPI हमारे लिए स्थापित किया गया (उपरोक्त आदेश चल रहा है और आर शुरू करने के बाद) था:

install.packages("Rmpi", configure.args = c("--with-Rmpi-include=/opt/openmpiv2/include/", "--with-Rmpi-libpath=/opt/openmpiv2/lib/", "--with-Rmpi-type=OPENMPI", "--with-mpi=/opt/openmpiv2/")) 

जिसने पैकेज को सफलतापूर्वक हमारे लिए स्थापित किया है। फिर हम जैसे आदेशों का उपयोग करते नौकरियों चला सकते हैं:

qsub -I -l nodes=2:ppn=12 
/opt/openmpiv2/bin/mpirun --hostfile $PBS_NODEFILE -n 1 R --slave -f rmpitest.R 

इन आदेशों यहाँ हमारे सेटअप करने के लिए इतना विशिष्ट है कि वे उपयोगी नहीं हो सकता है, लेकिन उम्मीद है कि कुछ आप कुछ समय बचा सकते हैं हो सकता है!

@Sergej नीचे प्रस्ताव के रूप में, एक अधिक सामान्य समाधान हो सकता है:

install.packages(
    "Rmpi", 
    configure.args = c(
    "--with-Rmpi-include=/usr/include/", # This is where LAM's mpi.h is located 
    "--with-Rmpi-libpath=/usr/lib/",  # This is where liblam.so is located (actually as I type it mine was located in /usr/lib64/liblam.so.0, so maybe this is not needed at all) 
    "--with-Rmpi-type=LAM"    # This says that the type is LAM (there is also OPENMPI and MPICH) 
)) 

हमारे स्थापना: RHEL 5, RMPI 0.5-9, openmpi 1.4.3, आर 2.15।।0

+0

धन्यवाद। मैं इसे आजमाऊंगा –

+0

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

+0

निश्चित बात! खुशी हुई यह मदद की। मेरे मामले में –

2

कई साल पहले, मैं एलएएम का उपयोग करता था लेकिन फिर ओपनएमपीआई पर स्विच करता था। आरएमपीआई के लेखक हाओ यू, ऐसा करने का सुझाव देते हैं।

आर-एसआईजी-एचपीसी सूची ऐसे प्रश्नों के लिए एक सभ्य जगह है।

+0

यह मेरी पहुंच से बहुत दूर है :) –

+0

एलएएम ओपन एमपीआई में विलय कर दिया गया था। एलएएम में कोई सक्रिय विकास नहीं है, केवल रखरखाव बग फिक्स। –

+0

यह कहानी का केवल एक हिस्सा है --- अंतिम एलएएम रिलीज भी आरएमपीआई के साथ निर्माण/काम करने में असफल रहा। तो हाँ, ओपनएमपीआई यह है और एलएएम साइट भी ऐसा कहती है। याद दिलाने के लिए शुक्रिया। ओह, और अगर मैं आर, आरएमपीआई, ... डेबियन के लिए रखरखाव कर सकता हूं: अन्य लिनक्स स्वादों पर, यह सब सिर्फ (एपीटी-गेट) बॉक्स से बाहर काम करता है। –

1

जेफ एलन ने सुझाव दिया जैसा कि मैंने आर के पास गया और मैं भी

# Because it was non-standard R location so it din't find shared libraries 
export LD_LIBRARY_PATH=/g/software/linux/pack/r-2.15.0/lib64/R/lib 

# Rmpi also could not find libutil so I had to add path to it as well 
export LD_PRELOAD=/usr/lib64/libutil.so 

संपादित

चलाने चलाने

install.packages(
    "Rmpi", 
    configure.args = c(
    "--with-Rmpi-include=/usr/include/", # This is where LAM's mpi.h is located 
    "--with-Rmpi-libpath=/usr/lib64/",  # This is where liblam.so is located 
    "--with-Rmpi-type=LAM"    # This says that the type is LAM (there is also OPENMPI and MPICH) 
)) 

हालांकि मैं जब मैं चलाने यह संकलन करने में कामयाब एक से अधिक नोड पर आरएमपीआई विफल रहता है। तो मुझे लगता है कि मुझे ओपनएमपीआई संक्रमण के लिए धक्का देना शुरू करना होगा:/

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