第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Numpy 性能差異取決于數(shù)值

Numpy 性能差異取決于數(shù)值

UYOU 2021-08-24 17:00:06
在評(píng)估 Numpy 中的表達(dá)式時(shí),我發(fā)現(xiàn)了一個(gè)奇怪的性能差異。我執(zhí)行了以下代碼:import numpy as npmyarr = np.random.uniform(-1,1,[1100,1100])然后%timeit np.exp( - 0.5 * (myarr / 0.001)**2 )>> 184 ms ± 301 μs per loop (mean ± std. dev. of 7 runs, 1 loop each)和%timeit np.exp( - 0.5 * (myarr / 0.1)**2 )>> 12.3 ms ± 34.3 μs per loop (mean ± std. dev. of 7 runs, 100 loops each)在第二種情況下,計(jì)算速度快了近 15 倍!請(qǐng)注意,唯一的區(qū)別是因子為 0.1 或 0.001。這種行為的原因是什么?我可以更改某些內(nèi)容以使第一次計(jì)算與第二次計(jì)算一樣快嗎?
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

使用英特爾 SVML

我沒有numexpr使用英特爾 SVML,但numexpr使用 SVML 應(yīng)該和 Numba 一樣好。該Numba基準(zhǔn)測(cè)試表明無SVML完全一樣的行為,但SVML更好的表現(xiàn)。


代碼


import numpy as np

import numba as nb


myarr = np.random.uniform(-1,1,[1100,1100])


@nb.njit(error_model="numpy",parallel=True)

def func(arr,div):

  return np.exp( - 0.5 * (myarr / div)**2 )

時(shí)間安排


#Core i7 4771

#Windows 7 x64

#Anaconda Python 3.5.5

#Numba 0.41 (compilation overhead excluded)

func(myarr,0.1)                      -> 3.6ms

func(myarr,0.001)                    -> 3.8ms


#Numba (set NUMBA_DISABLE_INTEL_SVML=1), parallel=True

func(myarr,0.1)                      -> 5.19ms

func(myarr,0.001)                    -> 12.0ms


#Numba (set NUMBA_DISABLE_INTEL_SVML=1), parallel=False

func(myarr,0.1)                      -> 16.7ms

func(myarr,0.001)                    -> 63.2ms


#Numpy (1.13.3), set OMP_NUM_THREADS=4

np.exp( - 0.5 * (myarr / 0.001)**2 ) -> 70.82ms

np.exp( - 0.5 * (myarr / 0.1)**2 )   -> 12.58ms


#Numpy (1.13.3), set OMP_NUM_THREADS=1

np.exp( - 0.5 * (myarr / 0.001)**2 ) -> 189.4ms

np.exp( - 0.5 * (myarr / 0.1)**2 )   -> 17.4ms


#Numexpr (2.6.8), no SVML, parallel

ne.evaluate("exp( - 0.5 * (myarr / 0.001)**2 )") ->17.2ms

ne.evaluate("exp( - 0.5 * (myarr / 0.1)**2 )")   ->4.38ms


#Numexpr (2.6.8), no SVML, single threaded

ne.evaluate("exp( - 0.5 * (myarr / 0.001)**2 )") ->50.85ms

ne.evaluate("exp( - 0.5 * (myarr / 0.1)**2 )")   ->13.9ms


查看完整回答
反對(duì) 回復(fù) 2021-08-24
?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(gè)贊

這可能會(huì)產(chǎn)生減慢計(jì)算速度的非規(guī)范化數(shù)字。


您可能想使用daz庫禁用非規(guī)范化數(shù)字:


import daz

daz.set_daz()

更多信息:x87 和 SSE 浮點(diǎn)輔助 IA-32:Flush-To-Zero (FTZ) 和 Denormals-Are-Zero (DAZ):


為避免由于非正規(guī)數(shù)和下溢數(shù)引起的序列化和性能問題,請(qǐng)使用 SSE 和 SSE2 指令在硬件中設(shè)置刷新為零和非正規(guī)數(shù)為零模式,以實(shí)現(xiàn)浮點(diǎn)應(yīng)用程序的最高性能。


請(qǐng)注意,在 64 位模式浮點(diǎn)計(jì)算中使用 SSE 指令,而不是 x87。


查看完整回答
反對(duì) 回復(fù) 2021-08-24
  • 2 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)