Re: [Rd] Problem building R with Intel MKL v10 BLAS

2008-02-04 Thread M Redmond
Michael Braun  MIT.EDU> writes:

> 
> NO
> 
> Hi.  I'm not sure if this is an R-help or R-devel problem, so I'm 
> starting here in the hope that someone can help (and willing to go to 
> the other list if it's more appropriate).  I think I am following all of 
> the instructions in the various manuals, but clearly I am missing something.
> 
> I have an Intel EM64T Dell with 2 dual-core Xeon processors running Red 
> Hat EL5.  I would like to build R 2.6.1 with lots of debugging and 
> profiling options, and link it to the processor-specific Intel MKL blas. 
> The problem is that after I compile R, and do R CMD config BLAS_LIBS, 
> the response is
> -L/usr/local/lib64/R/lib -lRblas.
> 
> This tells me that R is not linked to the Intel BLAS at all.
> 
> My config.site file for R is:
> 
> #! /bin/sh
> 
> R_PAPERSIZE=letter
> CFLAGS="-g -O2 -p -pg"
> CPPFLAGS="-I/opt/intel/mkl/10.0.1.014/include -I/usr/include 
> -I/usr/local/include"
> LIBnn=lib64
> BLAS_LIBS="-L/opt/intel/mkl/10.0.1.014/lib/em64t -Wl,--start-group 
> -lmkl_gf_lp64.so -lmkl_gnu_thread.so -lmkl_core.so -l -l -l -Wl, 
> --end-group -lguide -lpthread -lm"
> 
> I have set the CONFIG_SITE environment variable to the location of the 
> config.site.file.
> I am doing everything as superuser.
> 
> The command I am using for configure is
> 
> ./configure --disable-R-profiling --with-blas=no
> 
> following the instructions in the R-admin file regarding enabling 
> C-level profiling and linking to the external BLAS libraries referenced 
> in the config.site file.
> 
> The BLAS_LIBS files are different than in the R-admin manual because of 
> changes in the Intel MKL for version 10.  These libraries, in this 
> order, were taken from the Intel MKL for Linux User's Guide, chapter 5.
> 
> So, still no luck linking to the optimized BLAS.  I'd appreciate any 
> suggestions.
> 
> Thanks,
> 
> Michael
> 
---
I now recall a similar problem with my install of MKL V10. Here is the info:

I got the 10.X, layered library version of MKL 10.X working on R-2.6.1a. I 
set the full path information for the R configuration blas and lapack
option:

--with-blas="-L/.../intel/mkl/10.0.011/lib/em64t -lRblas -lmkl_sequential
-lmkl_lapack -lmkl_core -lpthread"
--with-lapack="-L/.../intel/mkl/10.0.011/lib/em64t -lRlapack -lmkl_sequential
-lmkl_lapack -lmkl_core -lpthread"

In this case, libRblas.so and libRlapack.so are both linked to 
libmkl_gf_lp64.so in the em64t directory. There must be some internal error
in the R configuration and make processing, because it would not pick up the
primary path specification for the mkl libraries location. Instead, I was 
able to define:

***critical step to get around a possible R bug***
sh-3.00$ export LD_RUN_PATH=/.../intel/mkl/10.0.011/lib/em64t

After that, I was able to perform the R configure with no errors. Then the
make also worked with no errors. The BLAS_LIBS and LAPACK_LIBS variables
were properly defined, and the path to the MKL libraries was properly
defined in ldpaths:

sh-3.00$ /.../R-2.6.1a/bin/R CMD config BLAS_LIBS
-L/.../intel/mkl/10.0.011/lib/em64t -lRblas -lmkl_sequential -lmkl_lapack
-lmkl_core -lpthread
sh-3.00$ /.../R-2.6.1a/bin/R CMD config LAPACK_LIBS
-L/.../R-2.6.1a/intel/mkl/10.0.011/lib/em64t -lRlapack -lmkl_sequential
-lmkl_lapack -lmkl_core -lpthread
sh-3.00$

power02(43)% more ldpaths
...
${R_LD_LIBRARY_PATH=${R_HOME}/lib:/s/gcc-4.2.1/lib64:
/.../intel/mkl/10.0.011/lib/em64t:/usr/X11R6/lib64:
/.../tcl-8.4.2/i386_rh72/lib:/.../XFree86-4.2.1/i386_rh72/lib}

(... are the various local paths to the objects of interest)

Hope that helps (maybe more than my other post)
MJR

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Problem building R with Intel MKL v10 BLAS

2008-02-04 Thread M Redmond
Ei-ji Nakama  ki.rim.or.jp> writes:

> 
> Hi.
> 
> 2008/1/25, Michael Braun  mit.edu>:
> > NO
> >
> > Hi.  I'm not sure if this is an R-help or R-devel problem, so I'm
> > starting here in the hope that someone can help (and willing to go to
> > the other list if it's more appropriate).  I think I am following all of
> > the instructions in the various manuals, but clearly I am missing something.
> >
> > I have an Intel EM64T Dell with 2 dual-core Xeon processors running Red
> > Hat EL5.  I would like to build R 2.6.1 with lots of debugging and
> > profiling options, and link it to the processor-specific Intel MKL blas.
> > The problem is that after I compile R, and do R CMD config BLAS_LIBS,
> > the response is
> > -L/usr/local/lib64/R/lib -lRblas.
> >
> > This tells me that R is not linked to the Intel BLAS at all.
> >
> > My config.site file for R is:
> >
> > #! /bin/sh
> >
> > R_PAPERSIZE=letter
> > CFLAGS="-g -O2 -p -pg"
> > CPPFLAGS="-I/opt/intel/mkl/10.0.1.014/include -I/usr/include
> > -I/usr/local/include"
> > LIBnn=lib64
> > BLAS_LIBS="-L/opt/intel/mkl/10.0.1.014/lib/em64t -Wl,--start-group
> > -lmkl_gf_lp64.so -lmkl_gnu_thread.so -lmkl_core.so -l -l -l -Wl,
> > --end-group -lguide -lpthread -lm"
> 
> I have an AMD 64x2 Debian(etch)
> $ gcc-4.2 -v
> Using built-in specs.
> Target: x86_64-linux-gnu
> Configured with: ../gcc-4.2.2/configure -v
> --enable-languages=c,c++,fortran,objc,obj-c++,treelang
> --prefix=/usr/local/gcc-4.2.2 --enable-shared --disable-multilib
> --with-system-zlib --without-included-gettext --enable-threads=posix
> --enable-nls --program-suffix=-4.2 --enable-__cxa_atexit
> --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr
> --enable-checking=release x86_64-linux-gnu
> Thread model: posix
> gcc version 4.2.2
> 
> MKL_LIB_PATH=/opt/intel/mkl/10.0.1.014/lib/em64t
> MKL="   -L${MKL_LIB_PATH}   \
> -Wl,--start-group   \
> ${MKL_LIB_PATH}/libmkl_gf_lp64.a\
> ${MKL_LIB_PATH}/libmkl_gnu_thread.a \
> ${MKL_LIB_PATH}/libmkl_core.a   \
> -Wl,--end-group \
> -liomp5 -lguide -lpthread -lgomp"
> 
> ./configure CC=gcc-4.2\
> CXX=g++-4.2\
> F77=gfortran-4.2\
> FC=gfortran-4.2\
> --with-lapack="$MKL" --with-blas="$MKL"
> 
> mkl_core seemed to want to cause libiomp5. dgemm gave a funny result
> in matrix of 1000x1000 if I did not link with real libiomp5.
> 
---
According to Intel, the V10 MKL is modular and therefore requires that all the
needed modules be on the library path in the correct order. This differs from V9
in that the single BLAS and LAPACK libraries could be directly substituted
(linked from) libRblas.so and libRlapack.so. To build, I needed to add the paths
into the  config.sh and make sure all the tests worked during R build. These are
the config.sh entries. I think the result is similar to what is noted above,
though I use the intel thread rather than the gnu thread. I tried both, and
don't recall that it made a difference:

--with-blas="-L/.../intel/mkl/10.0.1.014/lib/em64t -lRblas -lmkl_intel_thread
-lguide -lmkl_lapack -lmkl_core -lpthread" \
--with-lapack="-L/.../intel/mkl/10.0.1.014/lib/em64t -lRlapack
-lmkl_intel_thread -lguide -lmkl_lapack -lmkl_core -lpthread" \

where ... is the absolute path to your Intel MKL installation.

Hope that helps...

MJR

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel