CPU是一种通用的硬件。也就是说,干任何事情都需要按部就班的拆成指令。一条条执行。而有些活(例如机器学习中的大规模矩阵运算)一行一行算耗时还了得?所以需要定制一些FPGA硬件,可以并行计算,且不需要拆成指令。实际上FPGA加速中并行度是非常高的。一般可能会有几千甚至上万个单元同时计算。与现有的CPU在并行度上根本不是一个数量级。
所以总结起来FPGA优点大体上有两个: 1.FPGA并行度远超CPU。导致FPGA运算速度更快。 2.CPU是通用电路,FPGA是定制电路。CPU任何计算一般都要拆解成取指,译码等固定步骤。影响计算效率。
缺点么,大体上也有两个: 1.开发周期长。需要对特定的应用编写特定的FPGA。只要干的事情稍有不同,一般来说FPGA代码就要重新写一遍或者是至少要修改很多东西。开发代价和码农码几行代码完全不可比。而且一般需要若干工程师花费若干周才能搞的定。重点是会写的人还不多。 2.并不是所有东西都适合FPGA。FPGA适合于做那些可并行计算的东西,例如矩阵运算。如果是一些判断类的问题,FPGA算得并没有CPU快(这个时候时钟周期才是关键因素)。所以现实中都是有人来分析,在整个任务中有哪些地方可以并行计算,把这些地方替换为FPGA卡。
总之,由于现在机器学习、大数据比较火,里面矩阵运算成千上万,所以没有出现定制的ASIC之前,FPGA加速还是业界主流。现在百度、微软、谷歌等公司都已经把FPGA加速运用到了实际的商业运营中。
|