jos*_*ers 31 python numpy pip intel-mkl
我正在使用针对英特尔数学核心库构建的NumPy.我使用virtualenv,通常使用pip来安装包.
但是,为了让NumPy找到MKL库,必须在编译之前在NumPy源目录中创建一个site.cfg文件,然后手动构建和安装.我可以编写整个过程的脚本,但我希望有一个更简单的解决方案.
我有一个标准的site.cfg文件,可以在版本控制下用于此目的.是否有任何pip命令行选项会告诉它在构建包之前将特定文件复制到源目录?
或者,是否可以设置任何环境变量而不是在site.cfg文件中提供库路径?这是我使用的site.cfg文件.它几乎逐字逐句地从英特尔网站上获取.
[mkl]
library_dirs = /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64
include_dirs = /opt/intel/composer_xe_2013.1.117/mkl/include
mkl_libs = mkl_rt
lapack_libs =
Run Code Online (Sandbox Code Playgroud)
作为参考,我正在运行Ubuntu,Python 2.7和NumPy 1.6.
mjk*_*mjk 29
来自源代码(https://github.com/numpy/numpy/blob/master/site.cfg.example):
为了协助像easy_install这样的自动安装,还将检查用户的主目录中的文件〜/ .numpy-site.cfg.
这是一个可行的解决方案吗?您仍然需要使用全局.numpy-site.cfg预加载主目录,但之后您不必使用构建或安装.
我最终整理了一个脚本来实现自动化.在这里它是,以防它可以帮助别人.我已经在Python 2.7中对它进行了测试,但它应该在其他地方工作而不需要进行重大修改
from __future__ import unicode_literals
import io
import os.path
import re
import subprocess
import urllib2
# This downloads, builds, and installs NumPy against the MKL in the
# currently active virtualenv
file_name = 'numpy-1.6.2.tar.gz'
url = ('http://sourceforge.net/projects/numpy/files/NumPy/1.6.2/'
'numpy-1.6.2.tar.gz/download')
def main():
# download NumPy and unpack it
file_data = urllib2.urlopen(url).read()
with io.open(file_name, 'wb') as fobj:
fobj.write(file_data)
subprocess.check_call('tar -xvf {0}'.format(file_name), shell=True)
base_name = re.search(r'(.*)\.tar\.gz$', file_name).group(1)
os.chdir(base_name)
# write out a site.cfg file in the build directory
site_cfg = (
'[mkl]\n'
'library_dirs = /opt/intel/composer_xe_2013.1.117/mkl/lib/intel64\n'
'include_dirs = /opt/intel/composer_xe_2013.1.117/mkl/include\n'
'mkl_libs = mkl_rt\n'
'lapack_libs =\n')
with io.open('site.cfg', 'wt', encoding='UTF-8') as fobj:
fobj.write(site_cfg)
# build and install NumPy
subprocess.check_call('python setup.py build', shell=True)
subprocess.check_call('python setup.py install', shell=True)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
自从Intel 创建了 pips以来,安装 NumPy 以使用 Intel 的数学核心函数库的目标现在变得容易多了来安装 MKL + NumPy,
\n\npip uninstall numpy -y # if the standard numpy is present\npip install intel-numpy\nRun Code Online (Sandbox Code Playgroud)\n\n也intel-scipy,intel-scikit-learn,pydaal,tbb4py,mkl_fft,mkl_random和较低级别的软件包(如果您只需要它们)。同样,如果标准包已安装在您的 virtualenv 中,您必须首先卸载它们。
笔记:
\n\n\n\n如果已安装标准 NumPy、SciPy 和 Scikit-Learn 软件包,则必须在安装这些软件包的 Intel\xc2\xae 变体(intel-numpy 等)之前卸载这些软件包,以避免任何冲突。如前所述,pydaal 使用 intel-numpy,因此首先删除标准 Numpy 库(如果已安装)然后安装 pydaal 非常重要。
\n
| 归档时间: |
|
| 查看次数: |
9216 次 |
| 最近记录: |