惊人!二值神经网络性能提升1000倍!

作者:stark

在很多大型计算数据中心需要完成超大规模的数据处理,这意味着需要大量的计算,因此对于系统性能的要求则不断提升,最开始我们不断提升处理器的运行频率、增加处理器核心数量、采用更多的进程服务,但是这些方法会带来一些其他的问题,比如功耗的增加需要配备更大成本更高的电源、散热量显著增加则需要设置更大更好的散热片或者风扇,这些问题无疑增加了成本。因此最好的方式就是采用FPGA实现硬件加速,然而很多软件工程师对于硬件开发语言VHDL/Verilog不熟悉无法实现开发流程上的衔接,因此Xilinx推出了全新的SDSoC开发环境,软件工程使用C/C++语言就可以实现FPGA的硬件加速。

图1:Xilinx SDSoC从软件到硬件的开发流程

图1:Xilinx SDSoC从软件到硬件的开发流程

SDSoC提供给用户的是一个可以用来完成整个Zynq SoC和MPSoC开发的基于Eclipse的软件环境,这个环境对那些已经在使用DSP芯片、视频SoC 和CPU处理器的嵌入式开发人员来说是在熟悉不过的。SDSoC的核心技术则是界首创的全系统优化编译器,这个编译器,不仅可以针对基于ARM的处理器系统,也可以针对片内的可编程逻辑。SDSoC开发环境旨在为系统架构师以及软件开发团队提供一个可以使用C / C ++来快速配置,并同步生成构建系统所需的各类软硬件架构的可能。软硬件统一的编译器,可以从系统视角出发,带来最佳的系统构建与连接,优化的存储器接口和软件驱动等。如下图所示是采用SDSoC实现的不同实例的性能提升效果:

采用SDSoC实现的不同实例的性能提升效果

不同实例带来的性能提升:

  • 双目(摄像头)图像采集与3D显示——292倍
  • 视频的Sobel滤波处理——30倍
  • 二值神经网络——1000倍
  • 对于再好的CPU处理器或者更多核心的处理器也很难带来性能上1000倍的提升,即使30倍也是一大瓶颈,因此无论我们怎样绞尽脑汁优化C/C++代码在传统处理器上性能提升的效果也是非常有限的,所以采用“Xilinx SDSoC + All Programmable SoC + C/C++”才是最佳的解决方案。

    Xilinx SDSoC的视频介绍:

    声明:本文为原创文章,转载需注明作者、出处及原文链接,否则,本网站将保留追究其法律责任的权利