今天还抽空看了下OpenCL文档,似乎非常适合我的硬件编码器架构,也许可以考虑暂时降低FPGA编码器的优先级,完成软件模型后直接使用OpenCL做出一个版本来,这样很多带GPU的嵌入式设备都能使用HEVC了。
目前发现的OpenCL开发环境存在一些问题:
1. Intel的实现是纯CPU的,无法启用其集成显卡支持,估计效率不行。另外Intel只支持Vista或者Win7平台,我的WinXP下无法安装和使用;
2. AMD APP环境可以支持WinXP环境,并且看起来集成在VS2008里面的Profile系统对开发高效OpenCL程序帮助很大,但是我目前还没升级到VS2008,稍后再进一步测试。另外比较可惜的是笔记本的X300显卡不被支持
3. OpenCL开发可以使用我的多PU并行算法,不过其初始化以及Kernel编写的规则需要时间去掌握,只能过几个月有环境和时间再说;
整体来说OpenCL对我的HEVC实现还是有很大价值,但是目前受限于条件,只能滞后考虑,先处理简化软件模型的事情。设计模型时可以适当考虑多PU并行以适应OpenCL。
OpenCL编程时要注意的主要限制:
1. Global内存不要超过32KB,大约8个TreeBlock大小;
2. Local内存不要超过16KB,大约4个TreeBlock大小;
3. 矢量的分量个数不能超过16个;