OpenCL Kernel编译工具开发

一、什么是Kernel

最近因项目需要,简单了解并学习了下OpenCL开发,但是发现网上资料有一些,但是算不上丰富。

还是先简单捋一下流程,想要执行一段复杂的计算,我们应该如何做?
通常在CPU上,是通过循环来完成的,即串行执行,自然效率较低,而GPU具有天然的高效率并行执行优势,如果我们可以让GPU来完成这段计算,那么必定速度嗖嗖的。

了解OpenCL的人,应该对kernel不陌生,说白了就是一段跑在GPU上的代码,一般是使用C编写,也可使用C++。但是似乎NVIDIA和intel平台,不支持C++,AMD平台可以支持,一般用C编写一定没问题。

kernel一般以*.cl的文件形式存在,并通过OpenCL的API加载和编译,以及执行。没错,这玩意是在你的宿主程序运行时期编译的。

二、需要解决什么问题

当使用C编写一个kernel时,一般就是调用clBuildProgram函数来对*.cl进行编译,你要编译一次kernel时,就只能启动一次宿主程序,如果你的宿主程序很大,那么每编译一次kernel一定很费劲。

然后,就希望有一个独立的编译器,可以直接编译我的kernel,以验证我写的kernel是否可以编译通过。但是,我在网上似乎没找到kernel的编译器,有的只是一个API函数。

三、自己动手造轮子

于是乎,没有轮子,我就自己造一个,我称之为OpenCL Kernel Compiler,基于Qt开发。

尝试写了一个kernel,编译,自动提示报错,再回头修改kernel代码,再继续编译,如此几个来回,kernel代码已经写好了,并且编译通过,果真舒服。

编译成功,运行效果如下:

在这里插入图片描述

比如,我故意写入错误的代码,编译报错,效果如下:

在这里插入图片描述

使用帮助:

  1. 先选择平台和设备,表示后续编译kernel会为该设备生成可执行文件;
  2. 再选择kernel文件*.cl,编译选项为可选,一般为空即可;
  3. 最后选择Build编译,即可在Build log窗口中看到编译结果,如果报错会提示报错信息。

目前只实现了对单个kernel文件的编译,不支持多文件。

可执行文件下载地址:

https://pan.baidu.com/s/1iygiGtx4p4p_lc2J2WjJaw 提取码: tqxx

注意,该可执行程序非静态编译,需要Qt 5.12.3运行库。


源码地址:

https://gitee.com/bailiyang/cdemo/tree/master/Qt/64OpenCLKernelCompiler/OpenCLKernelCompiler

编译时,使用AMD提供的OpenCL开发包,AMD APP SDK,可参考《在Windows下搭建OpenCL环境》



若对你有帮助,欢迎点赞、收藏、评论,你的支持就是我的最大动力!!!

同时,阿超为大家准备了丰富的学习资料,欢迎关注公众号“超哥学编程”,即可领取。

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

百里杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值