标签: intel-mkl

假设自动线程scipy和numpy函数没有使用多个内核

我正在运行Mac OS X 10.6.8并使用Enthought Python Distribution.我想要numpy函数来利用我的核心.我遇到了类似于这篇文章的问题:python/numpy中的多线程blas但是在完成该海报的步骤之后,我仍然遇到同样的问题.这是我的numpy.show_config():

lapack_opt_info:
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
blas_opt_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
lapack_mkl_info:
    libraries = ['mkl_lapack95_lp64', 'mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/lib']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['/Library/Frameworks/EPD64.framework/Versions/1.4.2/include']
blas_mkl_info:
    libraries = ['mkl_intel_lp64', 'mkl_intel_thread', 'mkl_core', 'mkl_mc', 'mkl_mc3', 'pthread']
    library_dirs = …
Run Code Online (Sandbox Code Playgroud)

python multithreading numpy scipy intel-mkl

7
推荐指数
1
解决办法
5695
查看次数

如何使用NumPy + MKL避免这种四行内存泄漏?

以下简单的四行代码在我的Python 2.6.6/NumPy 1.7.0/MKL 10.3.6设置中产生内存泄漏:

import numpy as np

t = np.random.rand(10,10)
while True:
  t = t / np.trace(t)
Run Code Online (Sandbox Code Playgroud)

每次操作时,使用的内存都会增加10x10矩阵的大小.但是,当我使用NumPy 1.4.1/ATLAS设置时,没有这种行为.

我已经读过关于MKL不一定自动释放内存,所以我猜这就是爆炸的原因.是否有一种简单的方法来修改NumPy(编译之前或之后),这样四线程可以正常工作?

输出np.show_config()

numpy 1.7.0

lapack_opt_info:
    libraries = ['mkl_rt', 'pthread']
    library_dirs = ['$MKLPATH/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['$MKLPATH/include']
blas_opt_info:
    libraries = ['mkl_rt', 'pthread']
    library_dirs = ['$MKLPATH/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['$MKLPATH/include']
lapack_mkl_info:
    libraries = ['mkl_rt', 'pthread']
    library_dirs = ['$MKLPATH/lib/intel64']
    define_macros = [('SCIPY_MKL_H', None)]
    include_dirs = ['$MKLPATH/include']
blas_mkl_info:
    libraries = ['mkl_rt', 'pthread']
    library_dirs = ['$MKLPATH/lib/intel64']
    define_macros = [('SCIPY_MKL_H', …
Run Code Online (Sandbox Code Playgroud)

python memory-leaks numpy intel-mkl

7
推荐指数
1
解决办法
551
查看次数

告诉GCC*不*链接libgomp所以它链接libiomp5而不是

我需要弄清楚我可以提供给gcc的编译器/链接器指令,以便在指定-fopenmp时它不会自动链接libgomp.

原因是我正试图建立英特尔的MKL BLAS.MKL需要添加单独的英特尔库来处理多线程(例如,libmkl_intel_thread或libmkl_gnu_thread).但是,用于链接MKL和libgomp的库并不适用于包括我在内的每个操作系统.这迫使我链接libmkl_intel_thread,而libmkl_intel_thread又必须链接libiomp5.

虽然我能够构建我的包,但是一些二进制文件链接到libgomp和libiomp5.我不积极,这是造成问题,但也出现了一些事故,联动组合是可疑的,即使它不会导致崩溃的肯定是一个可怕的低效率.

我正在尝试使用gcc 4.9.1.

不幸的是,避免-fopenmp不是一种选择.原因是这是用于编译由几个子包组成的相当大的包,其Makefile不是最好的形状,并且可以在以后编译来自其他源(插件)的其他包.强制通用编译器/链接器指令并不困难.但是,启用--enable-openmp会激活-fopenmp和定义用于触发与多线程相关的代码的定义.试图将三者(--enable-openmp,-fopenmp和链接到--enable-openmp的代码)分开是不可行的.

我查看了手册页,我没有看到任何允许选择openmp库的gcc指令.英特尔的论坛有一个非常古老的讨论,他们建议在-fopenmp之后立即指定一个静态库,然后是--as-needed.这似乎非常摇摇晃晃,并且还有很多潜在的干扰插件包.llvm-openmp似乎在某一点上考虑了-fopenmp = libiomp5指令,但它似乎已经在3.5版本中被删除了,我试图使用gcc.

谢谢.

gcc openmp intel-mkl libgomp

7
推荐指数
2
解决办法
5332
查看次数

在 Windows 上使用 MKL 编译 NumPy - DLL 加载失败

我一直在尝试使用 MSVC 编译器和英特尔 MKL 从 Windows 10 上的源代码编译 NumPy。我正在使用 Microsoft Visual Studio 2019 (16.8.4) 和 Intel MKL 2017.8.275 运行 Windows 10.0.18363。

我设法使用最新的 Python 和 NumPy 以最少的设置重现了这个问题。

  1. 下载最新的 Python (3.9.1) 和最新的 NumPy (1.20.1) 源。

  2. 打开 VS 命令提示符,解压 Python 源代码,构建 PCbuild\build.bat

  3. 运行mklvars.bat intel64以获得正确的环境变量集。

  4. 将英特尔编译器(ifort 所需)添加到 PATH:

    set PATH=C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\bin\intel64;%PATH%
    
    Run Code Online (Sandbox Code Playgroud)
  5. 创建一个虚拟环境,从 Python 构建中复制一些文件并激活虚拟环境:

    copy Python\PCbuild\amd64\python39.dll venv\Scripts
    copy Python\PC\pyconfig.h venv\Include
    
    Run Code Online (Sandbox Code Playgroud)
  6. 从源代码构建 NumPy 并安装: pip install . -v

  7. 尝试导入 NumPy: python -c "import numpy"

错误信息

Traceback (most recent call last):
  File "C:\cygwin\home\user\numpy_clean_env\venv\lib\site-packages\numpy\core\__init__.py", …
Run Code Online (Sandbox Code Playgroud)

python dll numpy visual-c++ intel-mkl

7
推荐指数
1
解决办法
288
查看次数

OpenMP和MKL线程

我在Fortran中有一个代码,它使用DGESVDMKL并在8核上运行英特尔编译器.代码通过OpenMP加速.另外我知道OpenMP和MKL有自己的设置来设置线程数(omp_num_threadsmkl_num_threads).我想知道最佳线程数.我应该OMP_NUM_THREADS=1在调用LAPACK例程之前设置吗?OpenMP线程的数量是否会影响MKL线程数?

fortran openmp intel-mkl

6
推荐指数
1
解决办法
3087
查看次数

如何在Anaconda下使用非mkl NumPy?

Anaconda Python 发行版使用针对 Intel-MKL 库而不是“标准”NumPy 编译的 NumPy(和相关包)。如何在特定的 conda 环境中使用带有“标准”NumPy 的 Anaconda?不幸的是,目前还不能使用另一个 Python 发行版。如果相关:我使用的是 Windows 和 Python 3.6。

python numpy intel-mkl anaconda conda

6
推荐指数
1
解决办法
4278
查看次数

英特尔 MKL 致命错误:无法加载 mkl_intel_thread.dll

以前我问过一个类似的问题:cx_Freeze无法找到mkl:MKL FATAL ERROR:无法加载mkl_intel_thread.dll

但现在我有一个微妙的区别。我想在不安装 anaconda 的情况下运行程序,只是在cmd.exe终端内,但似乎我做错了什么或者这是不可能的。

python setup.py bdist_msi使用 using生成我的应用程序后cx-freeze,我可以在 anaconda 环境中安装然后运行它,但是如果我只是打开一个cmd.exe终端并运行它,我会得到

INTEL MKL ERROR: The specified module could not be found. mkl_intel_thread.dll.
Intel MKL FATAL ERROR: Cannot load mkl_intel_thread.dll.
Run Code Online (Sandbox Code Playgroud)

但是,运行时

where  mkl_intel_thread.dll
Run Code Online (Sandbox Code Playgroud)

dll找到了,所以我认为这意味着它已在系统中注册(我更习惯使用Linux,所以可能是我错了)。

我怎么能解决这个问题?

python dll intel-mkl cx-freeze

6
推荐指数
1
解决办法
1万
查看次数

Conda 使用 MKL 安装 r-essentials

在我的 RHEL 服务器上,我没有管理员权限,但我可以创建 Conda 环境。我想使用英特尔 MKL(英特尔® 数学核心函数库)创建一个运行 R 的 Conda 环境。

我使用R_defaults.yml创建环境,运行$> conda env create --file R_defaults.yml

name: R_defaults
channels:
  - defaults
  - conda-forge
dependencies:
  - pkgs/r::r-essentials=3.6.0=r36_0
Run Code Online (Sandbox Code Playgroud)

激活环境,启动 R 和 sessionInfo() 我发现没有使用 MKL:

R version 3.6.1 (2019-07-05)
Platform: x86_64-conda_cos6-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server 7.7 (Maipo)

Matrix products: default
BLAS/LAPACK: /home/geiringe/miniconda3/envs/R_r/lib/R/lib/libRblas.so
Run Code Online (Sandbox Code Playgroud)

Microsoft R Open ( https://mran.microsoft.com/download ) 可以与 MKL 一起安装。

Anaconda 似乎改变了对 Microsoft R Open 的看法。2018 年 6 月,据说它成为 Anaconda 发行版的默认 R(https://www.anaconda.com/introducing-microsoft-r-open-as-default-r-for-anaconda-distribution/ …

r intel-mkl conda microsoft-r

6
推荐指数
1
解决办法
1171
查看次数

使用 Conda 和 matplotlib 时出现英特尔 MKL 错误:macOS 上“未加载库:@rpath/libiomp5.dylib”

我正在为项目使用 conda 环境,当我安装 matplotlib 时,尝试运行 python 时出现以下错误:

(conda environment path)/bin/python (Project path)/src/__init__.py
INTEL MKL ERROR: dlopen((conda environment path)/lib/libmkl_intel_thread.dylib, 9): Library not loaded: @rpath/libiomp5.dylib
  Referenced from: (conda environment path)/lib/libmkl_intel_thread.dylib
  Reason: image not found.
Intel MKL FATAL ERROR: Cannot load libmkl_intel_thread.dylib.
Run Code Online (Sandbox Code Playgroud)

我到处寻找解决方案,似乎绝大多数类似问题都出现在 Windows 上,而 macOS 上没有公认的解决方案。看起来这似乎是我的DYLD_LIBRARY_PATH环境变量的问题,该变量当前为空。如果是这种情况,我不知道如何填充它。

python matplotlib intel-mkl conda

6
推荐指数
1
解决办法
3744
查看次数

如何在 numpy Python 中启用和禁用 Intel MKL?

我想测试和比较使用英特尔 MKL 和不使用英特尔 MKL 的 Numpy 矩阵乘法和特征分解性能。

我已经使用pip install mkl(Windows 10(64位),Python 3.8)安装了MKL。

然后我使用这里的示例进行 matmul 和特征分解。

我现在如何启用和禁用 MKL 以便检查使用 MKL 和不使用 MKL 时的 numpy 性能?

参考代码:

import numpy as np
from time import time

def matrix_mul(size, n=100):
    # reference: https://markus-beuckelmann.de/blog/boosting-numpy-blas.html
    np.random.seed(112)
    a, b = np.random.random((size, size)), np.random.random((size, size))
    t = time()
    for _ in range(n):
        np.dot(a, b)
    delta = time() - t
    print('Dotted two matrices of size %dx%d in %0.4f ms.' % (size, size, delta / n …
Run Code Online (Sandbox Code Playgroud)

python intel-mkl

6
推荐指数
1
解决办法
1万
查看次数