[R-sig-hpc] Rmpi loads 2 versions of the same library
Ei-ji Nakama
nakama at ki.rim.or.jp
Fri Mar 14 03:51:46 CET 2014
hi,
2014-03-14 4:16 GMT+09:00 Ross Boylan <ross at biostat.ucsf.edu>:
> I also don't know why libmpi.so.0 is preferred to libmpi.so.1 in the
> explicit load above.
I also had the sense of incompatibility of this problem.
Did anyone try in other platforms?(exclude mac and linux)
The following corrections might be preferable for the time being.
--- Rmpi.orig/src/Rmpi.c 2013-03-27 02:21:49.000000000 +0900
+++ Rmpi/src/Rmpi.c 2014-03-14 11:36:43.000000000 +0900
@@ -18,6 +18,7 @@
#include "Rmpi.h"
#ifdef OPENMPI
+#define __USE_GNU
#include <dlfcn.h>
#endif
@@ -69,13 +70,19 @@
#ifndef MAC
#ifdef OPENMPI
- if (!dlopen("libmpi.so.0", RTLD_GLOBAL | RTLD_LAZY)
- && !dlopen("libmpi.so", RTLD_GLOBAL | RTLD_LAZY)){
- //&& !dlopen("libmpi.dylib", RTLD_GLOBAL | RTLD_LAZY)
- //&& !dlopen("libmpi.1.dylib", RTLD_GLOBAL | RTLD_LAZY)) {
- Rprintf("%s\n",dlerror());
- return AsInt(0);
- }
+ { /* ifndef from MAC to __linux__ ? if only problem on linux */
+ Dl_info info_MPI_Init;
+ int rc = dladdr((void *)MPI_Init, &info_MPI_Init);
+ if(rc){
+ if (!dlopen(info_MPI_Init.dli_fname, RTLD_GLOBAL | RTLD_LAZY)){
+ Rprintf("%s\n",dlerror());
+ return AsInt(0);
+ }
+ }else{
+ Rprintf("%s\n",dlerror());
+ return AsInt(0);
+ }
+ }
#endif
#endif
>
> Using LD_DEBUG shows
> 24312: file=libmpi.so.1 [0]; needed by /home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so [0]
> 24312: find library=libmpi.so.1 [0]; searching
> 24312: search path=/usr/lib64/R/lib:/home/ross/install/lib (LD_LIBRARY_PATH)
> 24312: trying file=/usr/lib64/R/lib/libmpi.so.1
> 24312: trying file=/home/ross/install/lib/libmpi.so.1
>
> and, later,
> 24312: file=libmpi.so.0 [0]; needed by /home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so [0]
> 24312: find library=libmpi.so.0 [0]; searching
> 24312: search path=/usr/lib64/R/lib:/home/ross/install/lib (LD_LIBRARY_PATH)
> 24312: trying file=/usr/lib64/R/lib/libmpi.so.0
> 24312: trying file=/home/ross/install/lib/libmpi.so.0
> 24312: search cache=/etc/ld.so.cache
> 24312: trying file=/usr/lib/libmpi.so.0
>
> Does anyone know what's going on?
>
> Ross Boylan
>
> P.S. This might be relevant:
> 24300: calling init: /home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so
> 24300:
> 24300: opening file=/home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so [0]; direct_opencount=1
> 24300:
> 24300: /home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so: error: symbol lookup error: undefined symbol: R_init_Rmpi (fatal)
> 24300: /home/ross/Rlib-3.0.1/Rmpi/libs/Rmpi.so: error: symbol lookup error: undefined symbol: R_init_Rmpi (fatal)
>
> _______________________________________________
> R-sig-hpc mailing list
> R-sig-hpc at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-hpc
--
Best Regards,
--
EI-JI Nakama <nakama (a) ki.rim.or.jp>
"\u4e2d\u9593\u6804\u6cbb" <nakama (a) ki.rim.or.jp>
More information about the R-sig-hpc
mailing list