【问题标题】:How vectorization are helpful in reducing the computation time?矢量化如何有助于减少计算时间?
【发布时间】:2020-07-31 00:36:45
【问题描述】:

我正在观看Vectorization 的视频,作者解释矢量化将减少计算时间。例如

代码:

import numpy as np
import time

a= np.random.rand(100000)
b= np.random.rand(100000)

tic = time.time()
c = np.dot(a,b)
toc = time.time()

print(c)
print("Vectorization Version: "+ str(100000 * (toc - tic)) +"ms" )

c = 0
tic = time.time()
for i in range(100000):
    c += a[i] * b[i]

toc = time.time()
print(c)
print("NonVectorization Version: "+ str(100000 * (toc - tic)) +"ms" )

输出:

25108.8250776
Vectorization Version: 12.660026550292969ms
25108.8250776
NonVectorization Version: 7782.268524169922ms

矢量化如何有助于减少计算时间?

【问题讨论】:

  • numpy 上下文中的“向量化”表示“使用已编译的 numpy 方法和函数”。在此示例中,np.dot 在快速编译的 BLAS 库中完成这项工作。慢版本在 python 代码中迭代,这要慢得多(解释)。

标签: python numpy vectorization


【解决方案1】:

因为向量化是 SIMD(单指令,多数据)操作。一条指令对多个操作数并行执行相同的操作。 [1]

While Loops 通常被计算机称为 MIMD(多指令,多数据)操作。即使循环中只有一个操作,计算机在每次迭代时都会将这些操作视为不同的指令。

【讨论】:

    猜你喜欢
    • 2017-07-14
    • 1970-01-01
    • 2018-07-12
    • 2020-12-25
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    相关资源
    最近更新 更多