我试图将 MKL 添加到我的 docker 容器(基于 debian)阅读英特尔文档:我失败了。
但是,有一个 docker 图像 OneAPI docker image 附带 numpy(1.21 是一个月前的高度)和 mkl 作为默认 BLAS。
这是 numpy 在我的机器上返回的内容(带有 i7-i10875H 的笔记本电脑)
>>> import numpy as np
>>> np.__config__.show()
blas_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/oneapi/intelpython/latest/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/oneapi/intelpython/latest/include']
blas_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/oneapi/intelpython/latest/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/oneapi/intelpython/latest/include']
lapack_mkl_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/oneapi/intelpython/latest/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/oneapi/intelpython/latest/include']
lapack_opt_info:
libraries = ['mkl_rt', 'pthread']
library_dirs = ['/opt/intel/oneapi/intelpython/latest/lib']
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = ['/opt/intel/oneapi/intelpython/latest/include']
Supported SIMD extensions in this NumPy install:
baseline = SSE,SSE2,SSE3,SSSE3,SSE41,POPCNT,SSE42
found =
not found = AVX512_ICL
但是,我尝试使用 anaconda 和一个基本的 docker 镜像,令我惊讶的是,anaconda 虚拟环境使用了 CBLAS,而我的 docker 镜像使用了 Openblas BLAS。
我没有执行基准测试,但由于 mkl 实现使用除 AVX512_ICL 之外的所有指令集架构,我希望它会更快。
蟒蛇
我也很惊讶在我的 anaconda 环境中测试它,令我惊讶的是,blas 不是 mkl。
$ conda create -n test numpy --yes
[...]
$ conda activate test
>>> import numpy as np
>>> np.__config__.show()
blas_info:
libraries = ['cblas', 'blas', 'cblas', 'blas']
library_dirs = ['/home/adrienpacifico/anaconda3/envs/test/lib']
include_dirs = ['/home/adrienpacifico/anaconda3/envs/test/include']
language = c
define_macros = [('HAVE_CBLAS', None)]
blas_opt_info:
define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
libraries = ['cblas', 'blas', 'cblas', 'blas']
library_dirs = ['/home/adrienpacifico/anaconda3/envs/test/lib']
include_dirs = ['/home/adrienpacifico/anaconda3/envs/test/include']
language = c
lapack_info:
libraries = ['lapack', 'blas', 'lapack', 'blas']
library_dirs = ['/home/adrienpacifico/anaconda3/envs/test/lib']
language = f77
lapack_opt_info:
libraries = ['lapack', 'blas', 'lapack', 'blas', 'cblas', 'blas', 'cblas', 'blas']
library_dirs = ['/home/adrienpacifico/anaconda3/envs/test/lib']
language = c
define_macros = [('NO_ATLAS_INFO', 1), ('HAVE_CBLAS', None)]
include_dirs = ['/home/adrienpacifico/anaconda3/envs/test/include']
Supported SIMD extensions in this NumPy install:
baseline = SSE,SSE2,SSE3
found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2
not found = AVX512F,AVX512CD,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL
我的base 环境使用openblas。
我的基于python镜像的docker镜像--> Openblas
Dockerfile:
FROM python:3.10
ENV SHELL=/bin/bash
RUN apt-get update && \
apt-get install build-essential
RUN apt-get install -y sudo libaio1 wget unzip htop
RUN pip install numpy
openblas64__info:
libraries = ['openblas64_', 'openblas64_']
library_dirs = ['/usr/local/lib']
language = c
define_macros = [('HAVE_CBLAS', None), ('BLAS_SYMBOL_SUFFIX', '64_'), ('HAVE_BLAS_ILP64', None)]
runtime_library_dirs = ['/usr/local/lib']
blas_ilp64_opt_info:
libraries = ['openblas64_', 'openblas64_']
library_dirs = ['/usr/local/lib']
language = c
define_macros = [('HAVE_CBLAS', None), ('BLAS_SYMBOL_SUFFIX', '64_'), ('HAVE_BLAS_ILP64', None)]
runtime_library_dirs = ['/usr/local/lib']
openblas64__lapack_info:
libraries = ['openblas64_', 'openblas64_']
library_dirs = ['/usr/local/lib']
language = c
define_macros = [('HAVE_CBLAS', None), ('BLAS_SYMBOL_SUFFIX', '64_'), ('HAVE_BLAS_ILP64', None), ('HAVE_LAPACKE', None)]
runtime_library_dirs = ['/usr/local/lib']
lapack_ilp64_opt_info:
libraries = ['openblas64_', 'openblas64_']
library_dirs = ['/usr/local/lib']
language = c
define_macros = [('HAVE_CBLAS', None), ('BLAS_SYMBOL_SUFFIX', '64_'), ('HAVE_BLAS_ILP64', None), ('HAVE_LAPACKE', None)]
runtime_library_dirs = ['/usr/local/lib']
Supported SIMD extensions in this NumPy install:
baseline = SSE,SSE2,SSE3
found = SSSE3,SSE41,POPCNT,SSE42,AVX,F16C,FMA3,AVX2
not found = AVX512F,AVX512CD,AVX512_KNL,AVX512_KNM,AVX512_SKX,AVX512_CLX,AVX512_CNL,AVX512_ICL