静态集成 OpenCL 的 Kernel 源代码到可执行文件
来源:互联网 发布:淘宝店铺号是什么意思 编辑:程序博客网 时间:2024/06/06 14:11
在编写OpenCL代码时,为了方便起见,我们更喜欢将kernel源代码放在单独的文件中(一般为*.cl)。这各做的缺点在于,程序需要在运行时动态读入文件中的代码为字符串,然后再传递给OpenCL的RT编译、执行。因此,在可执行文件之外,我们还需要单独分发*.cl文件。
下面,我们介绍一种简单的技巧,将*.cl文件在编译时静态的包含在可执行文件中。
- 首先,将所有源代码由”STRINGFY()”括起来。
文件samefile.cl
中
STRINGIFY( ... // Lots of OpenCL code)
- 然后,在C/C++文件中,定义第一步用到的宏“STRINGFY()”,通过”include” 预编译命令将cl文件做为字符串(可能会很长)导入。
在文件 somefile.cpp
中
#define STRINGIFY(src) #srcinline const char* Kernels() { static const char* kernels = #include "somefile.cl" ; return kernels;}
这样kernel代码就被静态的编译到可执行文件中,无需单独分必。在需要用到kernel函数进行计算时,只需要将返回的字符串(这里为”Kernels“)传递给OpenCL相应的函数进行处理即可。
当然,我们可以同时添加更多的文件,只要每个cl文件都被”STRINGFY“括起来。C++编译器会自动完成字符串的拼接。
inline const char* Kernels() { static const char* kernels = #include "utility_functions.cl" #include "somefile.cl" ; return kernels;}
- 对于较多短的kernel代码,我们也可以直接在cpp源文件中将其字符串化。
#define STRINGIFY(src) #srcstatic const char*Kernel = STRINGIFY(// kernel definition);
1. stackoverflow讨论
2. BoostCompute实例
0 0
- 静态集成 OpenCL 的 Kernel 源代码到可执行文件
- c源代码到可执行文件的过程
- 从源代码到可执行文件的过程
- c源代码到可执行文件的过程
- 源代码文件到二进制可执行文件的过程
- 从源代码到可执行文件
- 源代码到可执行文件过程
- 从源代码到可执行文件
- 由源代码到exe可执行文件
- 浅谈从源代码文件到二进制可执行文件的过程
- 浅谈从源代码文件到二进制可执行文件的过程
- 从C源代码到可执行文件的总体过程框架
- 从C源代码到可执行文件的总体过程框架
- 浅谈从源代码文件到二进制可执行文件的过程
- OpenCL中kernel的循环调用
- 从JAVA源代码到EXE可执行文件
- 从JAVA源代码到EXE可执行文件
- 编译成静态的可执行文件。
- 【swift总结】集合
- 00-自测2. 素数对猜想 (20)
- 静态方法中调用非静态方法
- 指针
- EntryPointTable API
- 静态集成 OpenCL 的 Kernel 源代码到可执行文件
- 安装、设置与启动MySql绿色版的方法
- quick3.5: 创建工程(windows下)
- EntryPoint API
- HMMNode API
- sql学习笔记(22)-----------mysql存储过程详解
- iOS UICollectionViewContoller相关
- 这是我的第一篇评论
- IOS菜鸟的所感所思(十三)——数据的图形化