75、avx2 什么是计算向量化
接下来的几篇文章,会利用向量化指令来加速神经网络的计算,先学习一下什么是计算向量化。
计算的向量化是一种对计算的优化方法,简单来说,就是让计算机在计算数据时,同一时间计算多个数据,而不是一个一个的循环计算,这样可以大幅提高计算的效率。
计算向量化的概念,其实和线性代数中的向量运算有点类似。
在线性代数中,向量运算比如向量点积,做的一整个向量的运算,映射到计算机来执行这个运算时,则依赖于计算机底层硬件对于向量指令的支持来实现的。
Numpy
我们常用的 NumPy 其实就是一个常用的向量化计算工具,它提供了大量的数组操作和函数,可以十分方便的执行向量操作,比如之前我们用 np.dot 来优化卷积计算中的乘累加计算,这个函数就是一种向量计算的函数。
不管它底层是怎么实现的,之前光看这个函数,就是一种向量计算。
再比如下面的例子,对 numpy 的数组进行操作,每个元素都乘以2,可以直接使用 arr * 2 来完成,这一条命令操作的就是一个向量。
numpy 计算之所以快,就是因为是向量计算,内部做了大量的优化。到从这里看,这仅仅是一条向量语句,但不能说是一条向量指令。
import numpy as np
# 创建包含10个整数的数组
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
# 使用向量指令集执行加倍操作
result = arr * 2
print(result)
我们所说的向量指令,特指硬件支持的向量指令集。
C/C++
抛开 pytho