向量相加其一(Python & Numpy速度對比)

向量相加其一


pytorch、tensorflow的底層框架很多地方都是用C語言和GPU加速的
其中向量加是最基礎的

今天先給向量相加開個頭,是向量相加的純python和numpy實現
先給出測試機的的信息

硬件信息

CPU
廠家:Intel
型號:Intel®Pentium® CPU 5405U
核數:4
頻率:2.3GHz 2.3GHz
指令集:不支持AVX2/AVX512
GPU1
廠家:Intel
型號:Intel®UHD Graphics 610
顯存容量:120MB
顯存頻率:300MHz
顯存帶寬:17.1GB/s
GPU2
廠家:NVIDIA
型號:NVIDIA GeForce MX250
顯存容量:2GB
顯存頻率:1519MHz
顯存帶寬:48.1GB/s

源代碼

import time
import numpy as np

n = 1000000
repeat = 10 # CPU運算具有偶然性,計10次計算時間取平均

# 初始化
a = np.zeros((n,), dtype=int)
a[:] = 1

b = np.zeros((n,), dtype=int)
b[:] = 2

c1 = np.zeros((n,), dtype=int)
c2 = np.zeros((n,), dtype=int)

t0 = time.time()
for i in range(repeat):
    c1 = np.add(a, b)
t1 = time.time()
runtime = (t1 - t0) / repeat
print('numpy takes', runtime, 'sec')

t0 = time.time()
for i in range(repeat):
    for j in range(n):
        c2[j] = a[j] + b[j]
t1 = time.time()
runtime = (t1 - t0) / repeat
print('python loop takes', runtime, 'sec')

結果

可以看出numpy加速效果是很顯著的,在10的6次方這個數量級下,2個一維向量相加numpy對python loop的加速比爲172.68。
這也揭示了爲什麼numpy作爲向量計算的首選第三方庫
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章