Linking against MKL but still slow?
Dear list, so far I used Enthoughts Python Distribution which contains a compiled version of numpy linked against MKL. Now, I want to implement my own extensions to numpy, so I need my build numpy on my own. So, I installed Intel Parallel studio including MKL and the C / Fortran compilers. I linked against the same libraries as Enthought: In [2]: np.show_config() lapack_opt_info: libraries = ['mkl_lapack95_lp64', 'iomp5', 'mkl_def', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'pthread'] library_dirs = ['/opt/intel/lib/intel64', '/opt/intel/mkl/lib/intel64'] define_macros = [('SCIPY_MKL_H', None)] include_dirs = ['/opt/intel/include/'] blas_opt_info: libraries = ['iomp5', 'mkl_def', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'pthread'] library_dirs = ['/opt/intel/lib/intel64', '/opt/intel/mkl/lib/intel64'] define_macros = [('SCIPY_MKL_H', None)] include_dirs = ['/opt/intel/include/'] lapack_mkl_info: libraries = ['mkl_lapack95_lp64', 'iomp5', 'mkl_def', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'pthread'] library_dirs = ['/opt/intel/lib/intel64', '/opt/intel/mkl/lib/intel64'] define_macros = [('SCIPY_MKL_H', None)] include_dirs = ['/opt/intel/include/'] blas_mkl_info: libraries = ['iomp5', 'mkl_def', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'pthread'] library_dirs = ['/opt/intel/lib/intel64', '/opt/intel/mkl/lib/intel64'] define_macros = [('SCIPY_MKL_H', None)] include_dirs = ['/opt/intel/include/'] mkl_info: libraries = ['iomp5', 'mkl_def', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'pthread'] library_dirs = ['/opt/intel/lib/intel64', '/opt/intel/mkl/lib/intel64'] define_macros = [('SCIPY_MKL_H', None)] include_dirs = ['/opt/intel/include/'] and used the intel compilers to build numpy. Since I have an i7 processor I compiled including AVX instructions. Yet, EPD is double as fast as my own build executing the simple benchmark from: http://dpinte.wordpress.com/2010/01/15/numpy-performance-improvement-with-th... I expected at least comparable performance. How is such a decrease possible? Did I miss a significant part to make numpy really fast? Thanks Christoph
Hi Christoph, On Mon, Mar 26, 2012 at 10:06 AM, Christoph Dann <ch.ro.dann@googlemail.com>wrote:
Dear list,
so far I used Enthoughts Python Distribution which contains a compiled version of numpy linked against MKL. Now, I want to implement my own extensions to numpy, so I need my build numpy on my own. So, I installed Intel Parallel studio including MKL and the C / Fortran compilers.
What do you mean by own extensions to NumPy ? If you mean building extensions against the C API of NumPy, then you don't need to build your own NumPy. Building NumPy with Intel Compilers and MKL is a non-trivial process, so I would rather avoid it. If you still want to build it by yourself, could you give us the full output of your build ? David
What do you mean by own extensions to NumPy ? If you mean building extensions against the C API of NumPy, then you don't need to build your own NumPy. Building NumPy with Intel Compilers and MKL is a non-trivial process, so I would rather avoid it. I want to have exact control which version of numpy I use. In
If you still want to build it by yourself, could you give us the full output of your build ? My site.cfg looks like: [mkl]
Thanks for your response, David. particular, I want to use the current development version. library_dirs = /opt/intel/lib/intel64:/opt/intel/mkl/lib/intel64 include_dirs = /opt/intel/include/ mkl_libs = mkl_def, mkl_intel_lp64, mkl_intel_thread, mkl_core, iomp5 lapack_libs = mkl_lapack95_lp64 and I build numpy by python setup.py config --compiler=intelem --fcompiler=intelem build_clib --compiler=intelem --fcompiler=intelem build_ext --compiler=intelem --fcompiler=intelem install > log.txt https://gist.github.com/2213552 is the content of log.txt. There were no outputs on stderr. I asume that the warnings can be ignored. However, there is a frequent error: _configtest.c(5): error: the size of an array must be greater than zero static int test_array [1 - 2 * !(((long) (sizeof (npy_check_sizeof_type))) == 12)]; ^ compilation aborted for _configtest.c (code 2) How can I get rid of it? Thanks, Christoph
participants (2)
-
Christoph Dann -
David Cournapeau