Intel Distribution for Python在今年二月进行了更新——英特尔发布了Update 2版本。以“加速”为核心的它,相比原生Python环境有多大提升呢?
雷锋网获知,并行计算专家、前英特尔高级工程师James Reinders对老东家的产品进行了测试。他对外宣布:在配备四核i5的iMac上实现了20倍的性能加速,至于他是怎么做到的,请继续往下看(含代码)。
ames Reinders:利用Intel Distribution for Python,我实现了 Python 的20倍加速,并且可用单个命令关闭/启用。这还不是在最优情况下,而在虚拟环境——在 VirtualBox(下文简称VBox)上运行的openSUSE Linux Tumbleweed(即“滚动版本”),使用的机器是四核iMac。
这在Windows, Linux或OS X都能实现。英特尔并没有把openSUSE加入经他们测试过的Linux配置列表中(SUSE Enterprise在表中),但我在运行中并没有遇到任何问题。
这就是我怎么做的:
下载Anaconda命令行安装程序,地址为https://www.continuum.io/downloads 。
安装:% bash Anaconda2-4.3.0-Linux-x86_64.sh
安装英特尔加速器,作为一个单独的、可开启关闭的“环境”%conda config --add channels intel % conda create --name intelpy intelpython2_full python=2
运行示例程序,看到在我的openSUSE VBox设置上有15到20倍的速度提升。
% source deactivate intelpy
% python 随时加速Python
我此前写过一篇文章,讨论“Python 加速”(“accelerated Python”)使其更适用于大数据和 HPC 应用。 在速度更快之外,我还展示了,使用Conda来开启/关闭加速是多么得容易。这非常赞,让安装它的决定变得更加安全、没有顾虑——因为该功能是一个可选项。(对新手的提醒: Anaconda 是针对 Python 算法包的集合,Conda则是package manager,即算法包管理器。我两个都用并且都很喜欢。)
我使用 “conda create”来创造被我称之为intelpy的环境。然后,我能够使用“source activate intelpy”、“source deactivate intelpy”来激活、关闭它。
Intel Distribution for Python 带来的大幅加速能力,让 “accelerated Python” 变得更实用更让人信服。
值得注意的是,“accelerated Python” 只是使用更快的Python算法库,不需要对代码做任何改动。当然,我们的Python代码必须使用了某些加速的东西,才能从中获益。
英特尔通过三大方面实现Python加速:
利用多核;
利用矢量指令(SIMD),比如 SSE, AVX, AVX2和AVX-512;
使用英特尔 Math Kernel Library (Intel MKL) 的更先进算法。
对于运行于矢量或矩阵上的程序,上述这些都会生效。对于偶尔的单独cosine,我们不应该期待大幅速度提升。同样的,对于单核CPU,我们也不应该有性能提升的幻想。当然,英特尔72核协处理器Xeon Phi会在大量多核应用的跑分中领先。在我的例子中,我的虚拟机只利用iMac i5的四个核心。
FFT在4核虚拟机上有八倍性能提升
我也试了下Fast Fourier Transforms (FFT)。使用与原始程序相同的设置,我只是按照如下方式运行FFT程序:
% source deactivate intelpy
% python 这是我的快速FFT程序:
% cat myfftprog.py
import numpy as np
import numpy.random as rn
import time
def trythis(Z):
mat = rn.rand(Z,Z) + 1j * rn.randn(Z,Z)
print "fft"
start = time.time()
# 2D transform on a complex-valued matrix:
result = np.fft.fft2(mat)
end = time.time()
print Z, end - start
return
trythis(5000);
trythis(7000);
新 Python 加速
笔者了解到,以下是Intel Distribution for Python全新Update 2版本中,得到了新的速度提升的方面:
优化NumPy的算术和transcendental表达
Transcendental expressions包含我在快速示例程序里用的cosine, sine和tangen。这些优化的核心是对NumPy的改变,使得 primitives (在 ndarray 数据上进行运算)能选择性地使用英特尔MKL Short Vector Math Library (SVML) 和MKL Vector Math Library (VML) 的能力。这使得 Python 利用处理器的最新矢量能力,包括多核优化和 AVX/AVX2/AVX-512。英特尔团队表示,他们利用 Xeon Phi,实现过 NumPy 算术和 transcendental 运算在 vector-vector 和 vector-scalar 上最高400倍的速度提升。
优化NumPy和SciPy的FFT
这些优化的核心是英特尔MKL,一系列 NumPy、SciPy 函数都能用到它对 FFT 的原生优化。这些优化包含真实、复杂的数据类型,单精度和双精度都包含 (single and double precision),从一维到多维的数据,in place 或者 out of place。英特尔团队见到过这项更新带来60倍的性能提升。这使得 Python 的性能可与原生 C/C++ 程序相媲美。
优化内存管理
Python是一门动态语言,为用户管理内存。Python 应用的性能,在很大程度上取决于内存运行的性能,这包括内存分配、再分配(de-allocation)、复制和移动。英特尔提供的加速版本Python,能在NumPy分配数组时保证最佳的alignment,所以NumPy、SciPy的运算函数,能从相应排列的 SIMD 内存访问指令获益。英特尔表示最大的提升来自于对内存复制和移动运算的优化。
更快——能用Conda方便地关闭/启用
Anaconda英特尔渠道的最新加速版本 Python,为Python程序带来显著性能优化,而无需改变代码。下载、安装也很方便。
我真的特喜欢用Conda把它开启/关闭这一功能。这方便了性能对比,并且让我感到安心——没有这个功能的话,我会对切换到超快的数学函数感到犹豫。
责任编辑:海凡
- 荒野行动狙击枪瞄准技巧 如何快速使用狙击枪瞄准敌人2017-11-10
- 英特尔和AMD携手对抗英伟达 AMD收涨近8%2017-11-07
- 火影博人传31集:博人右眼净眼再度觉醒,双刀鲆鲽击败暴走鲛肌2017-11-02
- 英特尔哭了!骁龙835 Win 10 PC准备就绪2017-10-19
- 英旧版一镑硬币还能再用一星期 过期商家可拒收2017-10-10
- 福建省开展重点旅游景区三年行动提升工程2017-08-18
- 今年1—7月 湖里区GDP增幅持续位居厦门各区第一2017-08-18
- 福州人行道将进行新一轮整治 计划10月底完成2017-08-18
- 泉州中心市区26个绿化景观提升项目全面施工2017-08-06
- 英特尔第二财季净利润为28亿美元 同比增长111%2017-07-28
- 最新科技数码 频道推荐
-
被国产手机打趴!三星手机在国内市场份额狂降2017-11-14
- 进入图片频道最新图文
- 进入视频频道最新视频
- 一周热点新闻
已有0人发表了评论