1. 功能概述¶
1.1. 软件架构说明¶

1.2. 代码位置与目录结构¶
代码路径
1.3. API流程说明¶
OpenCL sample中的api调用相对简单。下面的流程图中抽取了相对固定的api调用,简要展示了OpenCL api的调用流程:

2. OpenCL sample¶
以下是OpenCL的图片灰度处理sample
运行结束之后会看到当前文件夹中有两张格式为raw rgba8888 4k的图片,一张是由cpu生成的参考图片,另一张是由gpu生成的图片。处理前和处理后的图片如下所示:


该sample会逐像素地对cpu和gpu的计算结果做校验,在sample运行结束之后会打印sample的cpu占用率,该占用率可能偏高,这是由于图片加载以及逐像素校验导致的。 通过额外的运行参数可得到opencl任务下发线程的cpu占用率:
可以看到,任务下发线程的cpu占用率约为1.3%,输出的图片帧率约为64fps,总共输出了641帧数据。
以下是OpenCL的fma计算sample
可以看到,fma运算的任务总共在gpu端运行了1次,由此得到的gpu算力约为204gflops,gpu的计算单元有4个,该任务在gpu端执行了约399.709034ms,整个sample的运行时间约为399.908901ms,gpu运算时间占sample运行时间的99.950022%。
以下是OpenCL的畸变矫正sample
运行结束之后当前文件夹中会生成一张yuv图片,格式为nv12 1280x720,可以通过看图软件查看。下图仅为示例,实际情况请结合输入图片进行确认:

该sample可以进行1920x1080和3840x2160分辨率的畸变矫正任务,以下是运行示例:
以上是1080p分辨率畸变矫正的运行示例,运行期间的cpu占用率约为3%,平均帧率约为581fps,总共进行了11619帧畸变矫正任务。
以上是4k分辨率畸变矫正的运行示例,运行期间的cpu占用率约为0.7%,平均帧率约为152fps,总共进行了3054帧畸变矫正任务。
以下是OpenCL的2D拼接sample
可以看到,sample在执行期间每5s左右会进行一次打印,比如第一条打印的意思是“在5001毫秒内处理了16394帧图片”,由此可以计算帧率大概为3278fps。
该sample可以通过“-m” 命令指定最大帧率,通过“-d”选择是否dump图片:
运行结束之后当前文件夹中会生成多张rgba格式的图片,大小为1920x100。图片中“0123456789”10个数字每个数字重复2遍, 下一张图片的最右侧2个数字会换位到最左侧。以下是10张dump图的效果展示:
