$ cat test.py#!/home/yancy/miniconda3/envs/perinfoMKL1/bin/python# -*- coding: utf-8 -*-
import numpy as npimport time
start_time = time.time()a = 10 ** 4A = np.random.random((a, a))B = np.random.random((a, a))C = A.dot(B)print("Time: ", time.time() - start_time)
(perinfoMKL1)$ tail numpy/site.cfg#[fftw]#libraries = fftw3## For djbfft, numpy.distutils will look for either djbfft.a or libdjbfft.a . #[djbfft]#include_dirs = /usr/local/djbfft/include#library_dirs = /usr/local/djbfft/lib[mkl]library_dirs = /tmp/mkl-nfs/libmkl_libs = mkl_rt
# No error, execute successfully(perinfoMKL1) $ ./test.py Time: 35.454288959503174
(perinfoMKL1)$ grep "libmkl_rt.so" log.27250 27250: file=libmkl_rt.so [0]; needed by /home/yancy/miniconda3/envs/perinfoMKL1/lib/python3.6/site-packages/numpy-1.13.0.dev0+4408f74-py3.6-linux-x86_64.egg/numpy/core/multiarray.cpython-36m-x86_64-linux-gnu.so [0] 27250: find library=libmkl_rt.so [0]; searching 27250: trying file=/home/yancy/miniconda3/envs/perinfoMKL1/lib/tls/x86_64/libmkl_rt.so 27250: trying file=/home/yancy/miniconda3/envs/perinfoMKL1/lib/tls/libmkl_rt.so 27250: trying file=/home/yancy/miniconda3/envs/perinfoMKL1/lib/x86_64/libmkl_rt.so 27250: trying file=/home/yancy/miniconda3/envs/perinfoMKL1/lib/libmkl_rt.so 27250: trying file=/home/yancy/miniconda3/envs/perinfoMKL1/bin/../lib/libmkl_rt.so 27250: trying file=/tmp/mkl-nfs/lib/libmkl_rt.so 27250: file=libmkl_rt.so [0]; generating link map 27250: calling init: /tmp/mkl-nfs/lib/libmkl_rt.so 27250: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] 27250: file=/tmp/mkl-nfs/lib/libiomp5.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] 27250: file=/tmp/mkl-nfs/lib/libmkl_intel_thread.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] 27250: file=/tmp/mkl-nfs/lib/libmkl_intel_lp64.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] 27250: calling fini: /tmp/mkl-nfs/lib/libmkl_rt.so [0](perinfoMKL1)]$ grep "libmkl_avx2.so" log.27250 27250: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_core.so [0] 27250: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; generating link map 27250: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 27250: calling init: /tmp/mkl-nfs/lib/libmkl_avx2.so 27250: opening file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; direct_opencount=1 27250: file=/tmp/mkl-nfs/lib/libmkl_intel_thread.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 27250: calling fini: /tmp/mkl-nfs/lib/libmkl_avx2.so [0]
(perinfoMKL2) $ tail numpy/site.cfg#[fftw]#libraries = fftw3## For djbfft, numpy.distutils will look for either djbfft.a or libdjbfft.a . #[djbfft]#include_dirs = /usr/local/djbfft/include#library_dirs = /usr/local/djbfft/lib[mkl]library_dirs = /tmp/mkl-nfs/libmkl_libs = mkl_intel_lp64, mkl_intel_thread, mkl_core, iomp5, mkl_rt(perinfoMKL2)$ ./test.py Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.
# Error occur, LD_LIBRARY_PATH I setted.(perinfoMKL2)$ ./test.py Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.(perinfoMKL2)$ grep "libmkl_rt.so" test.log.26855 26855: file=libmkl_rt.so [0]; needed by /home/yancy/miniconda3/envs/perinfoMKL2/lib/python3.6/site-packages/numpy-1.13.0.dev0+4408f74-py3.6-linux-x86_64.egg/numpy/core/multiarray.cpython-36m-x86_64-linux-gnu.so [0] 26855: find library=libmkl_rt.so [0]; searching 26855: trying file=/home/yancy/miniconda3/envs/perinfoMKL2/lib/libmkl_rt.so 26855: trying file=/home/yancy/miniconda3/envs/perinfoMKL2/bin/../lib/libmkl_rt.so 26855: trying file=/tmp/mkl-nfs/lib/libmkl_rt.so 26855: file=libmkl_rt.so [0]; generating link map 26855: file=/tmp/mkl-nfs/lib/libmkl_intel_lp64.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_rt.so [0] (relocation dependency) 26855: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_rt.so [0] (relocation dependency) 26855: calling init: /tmp/mkl-nfs/lib/libmkl_rt.so 26855: calling fini: /tmp/mkl-nfs/lib/libmkl_rt.so [0](perinfoMKL2) $ grep "libmkl_avx2.so" test.log.26855 26855: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_core.so [0] 26855: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; generating link map 26855: /tmp/mkl-nfs/lib/libmkl_avx2.so: error: symbol lookup error: undefined symbol: mkl_dft_fft_fix_twiddle_table_32f (fatal) 26855: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; destroying link map 26855: file=/home/yancy/miniconda3/envs/perinfoMKL2/bin/libmkl_avx2.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_core.so [0] 26855: file=libmkl_avx2.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_core.so [0] 26855: find library=libmkl_avx2.so [0]; searching 26855: trying file=/home/yancy/miniconda3/envs/perinfoMKL2/lib/libmkl_avx2.so 26855: trying file=/home/yancy/miniconda3/envs/perinfoMKL2/bin/../lib/libmkl_avx2.so 26855: trying file=/tmp/mkl-nfs/lib/libmkl_avx2.so 26855: file=libmkl_avx2.so [0]; generating link map 26855: /tmp/mkl-nfs/lib/libmkl_avx2.so: error: symbol lookup error: undefined symbol: mkl_dft_fft_fix_twiddle_table_32f (fatal) 26855: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; destroying link map
(perinfoMKL3)$ tail numpy/site.cfg#[fftw]#libraries = fftw3## For djbfft, numpy.distutils will look for either djbfft.a or libdjbfft.a . #[djbfft]#include_dirs = /usr/local/djbfft/include#library_dirs = /usr/local/djbfft/lib[mkl]library_dirs = /tmp/mkl-nfs/libmkl_libs = mkl_intel_lp64, mkl_intel_thread, mkl_core, iomp5, mkl_rt, mkl_avx2
# No error when I add mkl_avx2(perinfoMKL3)$ ./test.py Time: 33.996660232543945
(perinfoMKL3) $ grep "libmkl_rt.so" log.27384 27384: file=libmkl_rt.so [0]; needed by /home/yancy/miniconda3/envs/perinfoMKL3/lib/python3.6/site-packages/numpy-1.13.0.dev0+4408f74-py3.6-linux-x86_64.egg/numpy/core/multiarray.cpython-36m-x86_64-linux-gnu.so [0] 27384: find library=libmkl_rt.so [0]; searching 27384: trying file=/home/yancy/miniconda3/envs/perinfoMKL3/lib/libmkl_rt.so 27384: trying file=/home/yancy/miniconda3/envs/perinfoMKL3/bin/../lib/libmkl_rt.so 27384: trying file=/tmp/mkl-nfs/lib/libmkl_rt.so 27384: file=libmkl_rt.so [0]; generating link map 27384: file=/tmp/mkl-nfs/lib/libmkl_intel_lp64.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_rt.so [0] (relocation dependency) 27384: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_rt.so [0] (relocation dependency) 27384: calling init: /tmp/mkl-nfs/lib/libmkl_rt.so 27384: calling fini: /tmp/mkl-nfs/lib/libmkl_rt.so [0] 27384: file=libmkl_avx2.so [0]; needed by /home/yancy/miniconda3/envs/perinfoMKL3/lib/python3.6/site-packages/numpy-1.13.0.dev0+4408f74-py3.6-linux-x86_64.egg/numpy/core/multiarray.cpython-36m-x86_64-linux-gnu.so [0] 27384: find library=libmkl_avx2.so [0]; searching 27384: trying file=/home/yancy/miniconda3/envs/perinfoMKL3/lib/libmkl_avx2.so 27384: trying file=/home/yancy/miniconda3/envs/perinfoMKL3/bin/../lib/libmkl_avx2.so 27384: trying file=/tmp/mkl-nfs/lib/libmkl_avx2.so 27384: file=libmkl_avx2.so [0]; generating link map 27384: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 27384: file=/tmp/mkl-nfs/lib/libmkl_intel_lp64.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 27384: file=/tmp/mkl-nfs/lib/libmkl_intel_thread.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 27384: calling init: /tmp/mkl-nfs/lib/libmkl_avx2.so 27384: opening file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; direct_opencount=1 27384: calling fini: /tmp/mkl-nfs/lib/libmkl_avx2.so [0]
$ tail numpy/site.cfg#[fftw]#libraries = fftw3## For djbfft, numpy.distutils will look for either djbfft.a or libdjbfft.a . #[djbfft]#include_dirs = /usr/local/djbfft/include#library_dirs = /usr/local/djbfft/lib[mkl]library_dirs = /tmp/mkl-nfs/lib
mkl_libs = mkl_rt
$ LD_DEBUG=files ./test.py 2> files.log$ grep "libmkl_rt.so" files.log 24311: file=libmkl_rt.so [0]; needed by /home/yancy/.conda/envs/perinfoMKL/lib/python3.6/site-packages/numpy-1.13.0.dev0+1a9f43f-py3.6-linux-x86_64.egg/numpy/core/multiarray.cpython-36m-x86_64-linux-gnu.so [0] 24311: file=libmkl_rt.so [0]; generating link map 24311: calling init: /tmp/mkl-nfs/lib/libmkl_rt.so 24311: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] <========== 24311: file=/tmp/mkl-nfs/lib/libiomp5.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] <========== 24311: file=/tmp/mkl-nfs/lib/libmkl_intel_thread.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] <========== 24311: file=/tmp/mkl-nfs/lib/libmkl_intel_lp64.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_rt.so [0] <========== 24311: calling fini: /tmp/mkl-nfs/lib/libmkl_rt.so [0]$ grep "libmkl_avx2.so" files.log 24311: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; dynamically loaded by /tmp/mkl-nfs/lib/libmkl_core.so [0] 24311: file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; generating link map 24311: file=/tmp/mkl-nfs/lib/libmkl_intel_thread.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 24311: file=/tmp/mkl-nfs/lib/libmkl_core.so [0]; needed by /tmp/mkl-nfs/lib/libmkl_avx2.so [0] (relocation dependency) 24311: calling init: /tmp/mkl-nfs/lib/libmkl_avx2.so 24311: opening file=/tmp/mkl-nfs/lib/libmkl_avx2.so [0]; direct_opencount=1 24311: calling fini: /tmp/mkl-nfs/lib/libmkl_avx2.so [0]