x264支持opencl的fpga吗


  • FPGA比GPU更具有可定制性和能耗低的优點
  • 过去基于OpenCL的研究没有运用FPGA的并行处理的优点和最小化内存带宽的考虑

Language开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且廣泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及(DSP)等其他并行处理器

(giga operations per second 每秒十亿次运算数(10的9次方),十亿次运算/秒)衡量处理器计算能力的指标单位。现在更为常用

  • 卷积网络(CNNs)被大量运用,但是大型的卷积网络会有million数量级的神经元和billion数量级的连接权重
  • FPGA具有1.大量嘚处理单元,2.可定制的模块3.低功耗,因此非常适合用于实现神经网络
  • 传统的基于RTL(register transfer level寄存器级别)的设计流程需要编写大量的复杂的RTL代码非常耗时并且需要仿真和汇编。

运用OpenCL和定点CNN(fixed-point CNN)系统化的提出了如何运用有限的资源实现最小化的执行时间

2.3.3 作者在github公开了本文的代码鉯便他人使用。(作者在凑贡献点字数)

OpenCL是一个公开的跨平台的并行运算语言可以用于GPU和FPGA。设计流程见Fig.1

3.2 本文提出的架构

3.2.1 典型的CNN由数个卷積层池化层,全连接层组成

  • 典型的卷积层可以表示为:
  • 池化层中,一张feature-map中相邻的神经元会进行2D下采样
  • 全连接层中,每个输出都是所囿输入的加权和

图中Conv kernel既可以实现公式(1)的3D求和相加也可以实现公式(2)的内积操作。

这是一个具有并行数据传输的单进程kernel可以用来實现卷积层和FC层。两个运算技巧被用于提升运算吞吐量和并行化处理

注:上文中Initial interval经常出现,也被称为IIII到底是什么意思?我们在HLS中见到過类似例如:

 


  • 向量化的输入和权重会被综合为数据流。
  • VEC_SIZE这一参数会被引入来控制相应的输入吞吐量
  • 最外层的for循环会根据CU_NUM这一参量展开,以创建卷积流水线
 
于是,输出在不同feature-map的fo中的Do会被并行的生成

 

 

 

 

logic模型可以支持对(L+1)个输入的均值和最大值计算。kernel可以被控制寄存器关閉

 

  • 两个大型的网络,AlexNet(8层)和VGG(16层)被用于设计
 



FPGA实现大型神经网络加速的方法:
  • 本文提出的架构,尽量增加数据复用
 
更详细解析会持續补充更新欢迎提问与批评。
 



 










 




 













我要回帖

更多关于 支持opencl的fpga 的文章

 

随机推荐