学习OpenCL与卷积神经网络 Day6——在程序中加入一个计时系统

一点想法

这是我关于做这个项目的一个总体思路。从最初的的获取图像输出图像开始着手;再到简单实验内核进行加速处理这里我也简单的做了两个常规程序的试验(图像旋转与高斯模糊);然后就是将内核程序运行速度与外程序运行速度进行一个简单比较(这里就需要引入计时系统了);过后便开始正式开始处理图像识别相关的问题了,比如通过获取图像的RGB对其进行卷积处理(从这里开始正式将OpenCL与CNN相结合起来)等。

计时系统

具体步骤

首先在创建命令队列时,要引入CL_QUEUE_PROFILING_ENABLE这个参数。

commandQueue = clCreateCommandQueue(context, devices[0], CL_QUEUE_PROFILING_ENABLE, &errNum);

之后是在内核排队时,创建一个事件(event)对接内核输出所用时长

cl_event event;

	errNum = clEnqueueNDRangeKernel(commandQueue, kernel, 2, NULL,
		globalWorkSize, NULL,
		0, NULL, &event);
	clWaitForEvents(1, &event);
	clFinish(commandQueue);
	cl_ulong time_start;
	cl_ulong time_end;

	clGetEventProfilingInfo(event, CL_PROFILING_COMMAND_START, sizeof(time_start), &time_start, NULL);
	clGetEventProfilingInfo(event, CL_PROFILING_COMMAND_END, sizeof(time_end), &time_end, NULL);

	double times = time_end - time_start;
	printf("OpenCL Kernel Execution time is: %0.4f\n", times / 1000000.0);

我仍然借上次的图片旋转案例一用

输出结果

在这里插入图片描述
这样一个简单的计时系统就完成了

关于图像RGB获取

这里是今天刚开始研究,预估计会使用FreeImage的库,通过GetPixelColor函数来获取图像的RGB,而后将其赋值给数组输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ivan'yang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值