实际的计算能力除了和硬件的计算速度有关,也同硬件能支持的指令有关。我们知道将某些较高阶的运算分解成低阶运算时会导致计算的效率下降。但如果硬件本身就支持这种高阶运算,就无需再将其分解了。可以节省很多时间和资源。
FPGA和GPU内都有大量的计算单元,因此它们的计算能力都很强。在进行神经网络运算的时候速度会比CPU快很多,但两者之间仍存在一些差别。GPU出厂后由于架构固定硬件原生支持的指令其实就固定了。如果神经网络运算中有GPU不支持的指令。
比如,如果一个GPU只支持加减乘除,而我们的算法需要其进行矩阵向量乘法或者卷积这样的运算,GPU就无法直接实现,就只能通过软件模拟的方法如用加法和乘法运算的循环来实现,速度会比编程后的FPGA慢一些。而对于一块FPGA来说,如果FPGA没有标准的“卷积”指令,开发者可以在FPGA的硬件电路里“现场编程”出来。相当于通过改变FPGA的硬件结构让FPGA可以原生支持卷积运算,因此效率会比GPU更高。
其实讲到这里,我们已经比较接近谷歌开发TPU的原因了。TPU是一种ASIC,这是一种与FPGA类似,但不存在可定制性的专用芯片,如同谷歌描述的一样,是专为它的深度学习语言Tensor Flow开发的一种芯片。因为是专为Tensor Flow所准备,因此谷歌也不需要它拥有任何可定制性了,只要能完美支持Tensor Flow需要的所有指令即可。而同时,TPU运行Tensor Flow的效率无疑会是所有设备中最高的。这就是谷歌开发TPU的最显而易见的目的:追求极致的效率。
(责任编辑:fqj)
关于可编程逻辑就介绍完了,您有什么想法可以联系小编。