help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave and Intel MKL


From: Felix Willenborg
Subject: Re: Octave and Intel MKL
Date: Sun, 17 Sep 2017 20:33:35 +0200
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0

Hey Mike,

thanks for your advice. I could compile octave 4.2.1 from source with Intel MKL (Intel Parallel Studio XE 2016 (update3.120)). With this (big) configuration call it was possible:
./configure --disable-readline --without-curl --enable-docs=no --prefix=/cluster/programs/octave/4.2.1-mkl --with-blas='-lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -liomp5' --with-lapack='-lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -liomp5' --with-fftw3='-lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -liomp5 -lm' --with-fftw3f='-lmkl_gf_ilp64 -lmkl_gnu_thread -lmkl_core -liomp5 -lm' LD_LIBRARY_PATH='/cluster/compilers/intel/parallel_studio_xe_2016_update3/compilers_and_libraries_2016.3.210/linux/mkl/lib/intel64/:/cluster/compilers/intel/parallel_studio_xe_2016_update3/compilers_and_libraries_2016.3.210/linux/mkl/../compiler/lib/intel64/:$LD_LIBRARY_PATH' CPPFLAGS='-I/cluster/compilers/intel/parallel_studio_xe_2016_update3/compilers_and_libraries_2016.3.210/linux/mkl/include/ -I/cluster/compilers/intel/parallel_studio_xe_2016_update3/compilers_and_libraries_2016.3.210/linux/mkl/include/fftw/' LDFLAGS='-L/cluster/compilers/intel/parallel_studio_xe_2016_update3/compilers_and_libraries_2016.3.210/linux/mkl/lib/intel64/ -L/cluster/compilers/intel/parallel_studio_xe_2016_update3/compilers_and_libraries_2016.3.210/linux/mkl/../compiler/lib/intel64/' CC=gcc CXX=gcc F77=gfortran CFLAGS='-O3 -fPIC -DMKL_ILP64 -DM_PI=3.1415926535897932384 -lstdc++' FFLAGS='-O3 -fPIC' F77_INTEGER_8_FLAG='-finteger-4-integer-8'
My initial problem was that I had a terminal variable in the LDFLAGS (like -L$MKLROOT/lib/intel64). In Intels manual for compiling octave with Intel MKL [2] they exported the variable for LDFLAGS whereas I locally defined it which was my mistake (dummy). Therefore I defined the whole path in my local definition. After that, I got many errors at the build step
CXXLD    src/mkoctfile
containing many many missing definitions of std::string. After doing some research I found out that ann additional -lstdc++ solved that problem but I don't get why.

In one of my earlier e-mails here I introduced a pseudo 'MFLOP/S' script [1] in order to roughly measure the efficiency. Compared to another build of mine with OpenBLAS and 64-bit indexing I got
MFLOPS: (23.733844 +- 8.549004) (MKL ILP64)
MFLOPS: (24.997268 +- 5.954096) (MKL LP64)
MFLOPS: (29.056399 +- 0.131886) (OpenBLAS)

I was wondering if that could be or if I build it wrong? I expected MKL to be the fastest of all numerical libraries out there and am surprised that OpenBLAS is much better than all others. You guys got any thought on that?

Best wishes,
Felix Willenborg

[1]: http://lists.gnu.org/archive/html/help-octave/2017-09/msg00084.html
[2]: https://software.intel.com/en-us/articles/using-intel-mkl-in-gnu-octave

Am 13.09.2017 um 18:55 schrieb Mike Miller:
On Tue, Sep 12, 2017 at 23:50:16 +0200, Felix Willenborg wrote:
I'm trying to compile octave (additionally to ATLAS) with Intel MKL and
64-bit indexing.
[…]
This is also not working when taking MKL_LP64 libraries and removing
--enable64. Somehow he can not find the needed numerical functions.
There I get the same messages with the difference that -lblas and
-llapack are working (which was expectable).
I don't have any particular experience, but I would recommend you start
with the simplest configuration, using GCC with 32-bit Fortran integers
and the MKL LP64 library. You might also want to test with the Octave
development branch, which has reworked a lot of configure and code
concerning the C/Fortran interface.

I think the following should work

    ./configure \
      --with-blas='-lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -liomp5' \
      LDFLAGS='-L/$intel/mkl/lib/intel64 -L/$intel/lib/intel64' \
      LD_LIBRARY_PATH='/$intel/mkl/lib/intel64:/$intel/lib/intel64'

If that doesn't work, then config.log should help you figure out why.

If you do get that working, then try moving on to ILP64.



_______________________________________________
Help-octave mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/help-octave

-- 
Felix Willenborg

Arbeitsgruppe Machine Learning
Department für Medizinische Physik und Akustik
Fakultät für Medizin und Gesundheitswissenschaften 
Carl von Ossietzky Universität Oldenburg

Küpkersweg 74, 26129 Oldenburg
Tel: +49 441 798 3945

https://www.uni-oldenburg.de/machine-learning/

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]