gpt4 book ai didi

python - 需要提升权限的 Ubuntu 中的 MKL 多线程

转载 作者:行者123 更新时间:2023-12-04 19:01:10 32 4
gpt4 key购买 nike

我已经在 Ubuntu (16.04.4) 下安装了 Intel 的 Python 发行版 (3.6.3)。如果我以 root 身份运行这个 python,下面的代码显示我的 MKL_NUM_THREADS环境变量受到尊重:

import numpy
import ctypes
mkl_rt = ctypes.CDLL('libmkl_rt.so')
mkl_rt.mkl_get_max_threads() # returns MKL_NUM_THREADS
A = numpy.random.rand(10000, 10000)
A2 = A.dot(A) # uses MKL_NUM_THREADS threads

但是,如果我以普通用户身份运行此 python, mkl_get_max_threads返回 1,矩阵乘法只使用一个 CPU 线程。

作为一种解决方法,我尝试了以下方法:
num_threads = MKL_NUM_THREADS - 1
mkl_rt.mkl_set_num_threads(ctypes.byref(ctypes.c_int(num_threads)))

无论我是否以 root 身份运行 python, mkl_set_num_threads通话无效: mkl_get_max_threads仍然返回与调用前相同的值,并且 numpy 使用的 CPU 内核数没有改变。

我怎样才能让英特尔 MKL 使用 MKL_NUM_THREADS作为普通用户?

最佳答案

我们在虚拟机和主机上进行了同样的尝试,我们得到了以下观察结果:

  • 在虚拟框中执行的代码 image of code executed in virtual box
  • 虚拟机CPU信息 Image of Virtual box CPU info
  • 在主机中执行的代码 Image of code executed in Host machine
  • 主机CPU信息Image of Host machine CPU info

  • 有关从多线程应用程序调用英特尔 MKL 例程的推荐设置的更多引用,您可以引用以下链接:

    https://software.intel.com/en-us/articles/recommended-settings-for-calling-intel-mkl-routines-from-multi-threaded-applications

    关于python - 需要提升权限的 Ubuntu 中的 MKL 多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49157336/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com