opencl编程中的一个问题

来源:互联网 发布:广联达电力预算软件 编辑:程序博客网 时间:2024/04/28 03:08

这几天在看opencl编程指南,发现了一个头疼的问题,编程中有时候用cl_int 有时候用int,等等这些,开始理解是int是c的语法结构,cl_int是opencl的语法结构,编写内核用cl_int,编写c用int。但是发现c用有时候也有cl_int,内核中基本上都是int。乱了,咋能这样呢?

困难禁不住仔细研究,原来呀,cl_int只是opencl api的数据类型,int依然是opencl的数据类型,怎么理解呢?就是如果要往opencl api里面传参数或返回值的话就需要使用cl_int,其他地方都用int,opencl的语法和c的语法很大程度上是相同的。当然cl_int和int也是对应的,相当于cl_int 是int的别名。

哈哈哈,解决了,就这样理解吧。

校正一下错误,如下:


cl_int 和 int有什么区别
什么时候用cl_int 什么时候用int?
大家有人知道么



你既然用了OpenCL环境,那么最好跟OpenCL有关的都用cl_
如果是自定义的一些东西可以用自定义的


有本书里面这样写 opencl语言中的类型是int 应用程序的api类型是cl_int
这句话怎解?


内核里的数据类型是int的话,在主机端传cl_int的值


为什么要这么麻烦呀
多加一个cl_int有什么作用么



因为跨平台呀
你比如说cl_long
你认为是多少字节的?


8个字节吧

我告诉你,在傻B的64位瘟抖死系统下,long还是4字节;而在高端的LLVM Clang与GCC里才是8字节
而在32位系统下,long都是4字节
所以,你不用cl_long,在不同环境下,字节长度是不一样的,懂了吧/

哦 这个的意思就是说为了通用性

对于OpenCL内核程序里的long都是8字节

不论什么机器上 long都是8个字节

yep


0 0
原创粉丝点击