Я скомпилировал Октаву 4.2.1 из источников без ошибки. Там какой-либо путь состоит в том, чтобы заставить его использовать Intel Math Kernel Library?
Я установил его в \opt\intel. Когда я добавляю его к blas и lapack альтернативам с:
sudo update-alternatives --install /usr/lib/libblas.so.3 \
libblas.so.3 \
/opt/intel/compilers_and_libraries/linux/mkl/lib/intel64/libmkl_rt.so \
50
sudo update-alternatives --install /usr/lib/liblapack.so.3 \
liblapack.so.3 \
/opt/intel/compilers_and_libraries/linux/mkl/lib/intel64/libmkl_rt.so \
50
Октава не запускается со следующей ошибки:
Intel MKL FATAL ERROR: Cannot load libmkl_core.so.
Я также попытался скомпилировать Октаву с помощью MKL.
export JAVA_HOME="/usr/lib/jvm/default-java"
export CFLAGS="-O2 -fPIC -DMKL_LP64 -DM_PI=3.1415926535897932384"
export FFLAGS="-O2 -fPIC"
export CPPFLAGS="-I/opt/intel/mkl/include/ -I/opt/intel/mkl/include/fftw/"
export LDFLAGS="-L/opt/intel/mkl/lib/intel64 -L/opt/intel/lib/intel64"
export LD_LIBRARY_PATH="/usr/lib/gcc:/usr/lib/gcc/x86_64-linux-gnu/:/opt/intel/lib/intel64:/opt/intel/mkl/lib/intel64:$LD_LIBRARY_PATH"
./configure --prefix=/opt/octave4_2_mkl --with-blas="-lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -liomp5 -lpthread" --with-lapack="-lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -liomp5 -lpthread" --with-fftw3="-lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -liomp5 -lpthread -lm" --with-fftw3f="-lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -liomp5 -lpthread -lm"
К сожалению, хотя./настраивать не выкладывает ошибок, когда я работаю, 'делают', и 'осуществляют проверку' впоследствии, тест становится сумасшедшим и выходит с Сигналом 6.
Возможно, Вы уже поняли это, но я заставил это работать (также Октава 4.2.1), FWIW здесь являются шагами:
Установка библиотека MKL, затем настроенные альтернативы обновления:
sudo update-alternatives --install /usr/lib/libblas.so libblas.so /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
sudo update-alternatives --install /usr/lib/libblas.so.3 libblas.so.3 /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
sudo update-alternatives --install /usr/lib/liblapack.so liblapack.so /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
sudo update-alternatives --install /usr/lib/liblapack.so.3 liblapack.so.3 /opt/intel/mkl/lib/intel64/libmkl_rt.so 50
Теперь создают файл mkl.conf в/etc/ld.so.conf.d с путями как записи:
/opt/intel/lib/intel64
/opt/intel/mkl/lib/intel64
Затем выполненный в терминале
sudo ldconfig
Теперь используют альтернативы обновления, настраивают для использования mkl в качестве blas
по умолчанию, Чтобы проверить, использует ли октава mkl, запустите октаву, откройте терминал и тип
ps aux | grep octave
, который Мой вывод показывает 3 процессам, второй походит
my_user_name 6032 6.4 1.7 1454636 103952 ? Ssl 08:05 0:01 /usr/local/libexec/octave/4.2.1/exec/x86_64-pc-linux-gnu/octave-gui --force-gui
, отмечают, что PID (6032 здесь) затем в терминале работает
lsof -p 6032 | grep 'mkl' (change 6032 to your process's PID)
, Мой вывод
octave-gu 6032 my_user_name mem REG 8,2 5461454 4594702 /opt/intel/compilers_and_libraries_2017.2.174/linux/mkl/lib/intel64_lin/libmkl_rt.so
, Если бы это не использует mkl, это ничего не показало бы.
Вы не должны компилировать октаву с MKL, Октава пользуется любой blas библиотекой, связанной с/usr/lib/libblas и/usr/lib/libbapack динамично. Можно переключиться с альтернативами обновления, и октава будет использовать тот, который Вы выбираете. Я скомпилировал октаву 4.2.1, прежде чем у меня был MKL, я использовал openblas в качестве своего blas, когда я скомпилировал.
В моей машине MKL на самом деле не быстрее, чем openblas, если последний создается к оптимизированному для аппаратных средств (а не установил прямо от repo)
Не уверен, что этой страницы не существовало, когда был задан этот вопрос, но Intel предоставляет официальные инструкции по установке Octave с поддержкой MKL
https://software. intel.com/content/www/us/en/develop/articles/using-intel-mkl-in-gnu-octave.html