Intel Distribution for Python在今年二月進(jìn)行了更新——英特爾發(fā)布了Update 2版本。以“加速”為核心的它,相比原生Python環(huán)境有多大提升呢?
雷鋒網(wǎng)獲知,并行計(jì)算專家、前英特爾高級(jí)工程師James Reinders對(duì)老東家的產(chǎn)品進(jìn)行了測(cè)試。他對(duì)外宣布:在配備四核i5的iMac上實(shí)現(xiàn)了20倍的性能加速,至于他是怎么做到的,請(qǐng)繼續(xù)往下看(含代碼)。
ames Reinders:利用Intel Distribution for Python,我實(shí)現(xiàn)了 Python 的20倍加速,并且可用單個(gè)命令關(guān)閉/啟用。這還不是在最優(yōu)情況下,而在虛擬環(huán)境——在 VirtualBox(下文簡(jiǎn)稱VBox)上運(yùn)行的openSUSE Linux Tumbleweed(即“滾動(dòng)版本”),使用的機(jī)器是四核iMac。
這在Windows, Linux或OS X都能實(shí)現(xiàn)。英特爾并沒(méi)有把openSUSE加入經(jīng)他們測(cè)試過(guò)的Linux配置列表中(SUSE Enterprise在表中),但我在運(yùn)行中并沒(méi)有遇到任何問(wèn)題。
這就是我怎么做的:
下載Anaconda命令行安裝程序,地址為https://www.continuum.io/downloads 。
安裝:% bash Anaconda2-4.3.0-Linux-x86_64.sh
安裝英特爾加速器,作為一個(gè)單獨(dú)的、可開啟關(guān)閉的“環(huán)境”%conda config --add channels intel % conda create --name intelpy intelpython2_full python=2
運(yùn)行示例程序,看到在我的openSUSE VBox設(shè)置上有15到20倍的速度提升。
% source deactivate intelpy
% python 隨時(shí)加速Python
我此前寫過(guò)一篇文章,討論“Python 加速”(“accelerated Python”)使其更適用于大數(shù)據(jù)和 HPC 應(yīng)用。 在速度更快之外,我還展示了,使用Conda來(lái)開啟/關(guān)閉加速是多么得容易。這非常贊,讓安裝它的決定變得更加安全、沒(méi)有顧慮——因?yàn)樵摴δ苁且粋€(gè)可選項(xiàng)。(對(duì)新手的提醒: Anaconda 是針對(duì) Python 算法包的集合,Conda則是package manager,即算法包管理器。我兩個(gè)都用并且都很喜歡。)
我使用 “conda create”來(lái)創(chuàng)造被我稱之為intelpy的環(huán)境。然后,我能夠使用“source activate intelpy”、“source deactivate intelpy”來(lái)激活、關(guān)閉它。
Intel Distribution for Python 帶來(lái)的大幅加速能力,讓 “accelerated Python” 變得更實(shí)用更讓人信服。
值得注意的是,“accelerated Python” 只是使用更快的Python算法庫(kù),不需要對(duì)代碼做任何改動(dòng)。當(dāng)然,我們的Python代碼必須使用了某些加速的東西,才能從中獲益。
英特爾通過(guò)三大方面實(shí)現(xiàn)Python加速:
利用多核;
利用矢量指令(SIMD),比如 SSE, AVX, AVX2和AVX-512;
使用英特爾 Math Kernel Library (Intel MKL) 的更先進(jìn)算法。
對(duì)于運(yùn)行于矢量或矩陣上的程序,上述這些都會(huì)生效。對(duì)于偶爾的單獨(dú)cosine,我們不應(yīng)該期待大幅速度提升。同樣的,對(duì)于單核CPU,我們也不應(yīng)該有性能提升的幻想。當(dāng)然,英特爾72核協(xié)處理器Xeon Phi會(huì)在大量多核應(yīng)用的跑分中領(lǐng)先。在我的例子中,我的虛擬機(jī)只利用iMac i5的四個(gè)核心。
FFT在4核虛擬機(jī)上有八倍性能提升
我也試了下Fast Fourier Transforms (FFT)。使用與原始程序相同的設(shè)置,我只是按照如下方式運(yùn)行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版本中,得到了新的速度提升的方面:
優(yōu)化NumPy的算術(shù)和transcendental表達(dá)
Transcendental expressions包含我在快速示例程序里用的cosine, sine和tangen。這些優(yōu)化的核心是對(duì)NumPy的改變,使得 primitives (在 ndarray 數(shù)據(jù)上進(jìn)行運(yùn)算)能選擇性地使用英特爾MKL Short Vector Math Library (SVML) 和MKL Vector Math Library (VML) 的能力。這使得 Python 利用處理器的最新矢量能力,包括多核優(yōu)化和 AVX/AVX2/AVX-512。英特爾團(tuán)隊(duì)表示,他們利用 Xeon Phi,實(shí)現(xiàn)過(guò) NumPy 算術(shù)和 transcendental 運(yùn)算在 vector-vector 和 vector-scalar 上最高400倍的速度提升。
優(yōu)化NumPy和SciPy的FFT
這些優(yōu)化的核心是英特爾MKL,一系列 NumPy、SciPy 函數(shù)都能用到它對(duì) FFT 的原生優(yōu)化。這些優(yōu)化包含真實(shí)、復(fù)雜的數(shù)據(jù)類型,單精度和雙精度都包含 (single and double precision),從一維到多維的數(shù)據(jù),in place 或者 out of place。英特爾團(tuán)隊(duì)見到過(guò)這項(xiàng)更新帶來(lái)60倍的性能提升。這使得 Python 的性能可與原生 C/C++ 程序相媲美。
優(yōu)化內(nèi)存管理
Python是一門動(dòng)態(tài)語(yǔ)言,為用戶管理內(nèi)存。Python 應(yīng)用的性能,在很大程度上取決于內(nèi)存運(yùn)行的性能,這包括內(nèi)存分配、再分配(de-allocation)、復(fù)制和移動(dòng)。英特爾提供的加速版本Python,能在NumPy分配數(shù)組時(shí)保證最佳的alignment,所以NumPy、SciPy的運(yùn)算函數(shù),能從相應(yīng)排列的 SIMD 內(nèi)存訪問(wèn)指令獲益。英特爾表示最大的提升來(lái)自于對(duì)內(nèi)存復(fù)制和移動(dòng)運(yùn)算的優(yōu)化。
更快——能用Conda方便地關(guān)閉/啟用
Anaconda英特爾渠道的最新加速版本 Python,為Python程序帶來(lái)顯著性能優(yōu)化,而無(wú)需改變代碼。下載、安裝也很方便。
我真的特喜歡用Conda把它開啟/關(guān)閉這一功能。這方便了性能對(duì)比,并且讓我感到安心——沒(méi)有這個(gè)功能的話,我會(huì)對(duì)切換到超快的數(shù)學(xué)函數(shù)感到猶豫。
責(zé)任編輯:海凡
- 荒野行動(dòng)狙擊槍瞄準(zhǔn)技巧 如何快速使用狙擊槍瞄準(zhǔn)敵人2017-11-10
- 英特爾和AMD攜手對(duì)抗英偉達(dá) AMD收漲近8%2017-11-07
- 火影博人傳31集:博人右眼凈眼再度覺(jué)醒,雙刀鲆鰈擊敗暴走鮫肌2017-11-02
- 英特爾哭了!驍龍835 Win 10 PC準(zhǔn)備就緒2017-10-19
- 英舊版一鎊硬幣還能再用一星期 過(guò)期商家可拒收2017-10-10
- 福建省開展重點(diǎn)旅游景區(qū)三年行動(dòng)提升工程2017-08-18
- 今年1—7月 湖里區(qū)GDP增幅持續(xù)位居廈門各區(qū)第一2017-08-18
- 福州人行道將進(jìn)行新一輪整治 計(jì)劃10月底完成2017-08-18
- 泉州中心市區(qū)26個(gè)綠化景觀提升項(xiàng)目全面施工2017-08-06
- 英特爾第二財(cái)季凈利潤(rùn)為28億美元 同比增長(zhǎng)111%2017-07-28
- 最新科技數(shù)碼 頻道推薦
- 進(jìn)入圖片頻道最新圖文
- 進(jìn)入視頻頻道最新視頻
- 一周熱點(diǎn)新聞
已有0人發(fā)表了評(píng)論