首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在码头添加Intel MKL和MKL

在码头添加Intel MKL和MKL
EN

Stack Overflow用户
提问于 2022-03-28 14:39:10
回答 2查看 545关注 0票数 1

我有与Docker一起部署的ML代码(例如Numpy、Scipy、LightGBM、PyTorch)。我用Python和诗歌,用pip安装软件包。

我应该怎么做才能使用MKL和MKL?我知道最标准的方法是使用Anaconda,但我不能(大型企业,没有商业Anaconda许可证)。

pip install mkl足够了吗?

如何安装MKL,以便PyTorch使用它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-28 15:25:48

pip安装mkl是否足够?

不,它不会,请参阅numpy安装文档中的部分

pip安装的NumPy在PyPI上的车轮是用OpenBLAS构建的。OpenBLAS库包含在方向盘中。这使得轮子更大,如果用户也安装(例如) SciPy,他们现在将在磁盘上安装两个OpenBLAS副本。

因此,您需要从源构建numpy。

我知道最标准的方法是使用Anaconda,但我不能(大型企业,没有商业Anaconda许可证)。

你有没有考虑过使用迷你锻造和迷你车?IANAL,但我非常肯定,您只是不能在大规模的商业产品中使用ana-/miniconda发行版和anaconda通道,但是可以使用conda锻造仍然可以免费使用。。你应该能够建立所有的要求,你提到的从康达锻造。至少您可能会有一个更容易的时间从源代码编译py手电筒。

票数 1
EN

Stack Overflow用户

发布于 2022-07-05 16:28:43

我试图将MKL添加到我的码头容器(基于debian),阅读英特尔文档:我失败了。

然而,有一个码头形象OneAPI对接图像,随numpy (1.21,这是8个月前)和mkl作为默认的BLAS。下面是numpy在我的机器上返回的内容(一台带有i7-i10875H的笔记本电脑)

代码语言:javascript
复制
>>> 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和基本的坞映像,令我惊讶的是,anaconda虚拟env使用了CBLAS,我的坞映像使用了Openblas BLAS。

我没有执行基准测试,但是由于mkl实现使用了除AVX512_ICL之外的所有指令集体系结构,所以我希望它会更快。

蟒蛇

我还惊讶地在我的anaconda环境中测试了这一点,令我惊讶的是,的blas不是mkl

代码语言:javascript
复制
$ 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图像的我的停靠者图像-> Openblas

Dockerfile:

代码语言:javascript
复制
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
代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71649223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档