这几天在看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