我需要64位数据类型来进行OpenCL中的位操作。在手册中 https://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/scalarDataTypes.html 他们说ulong是“无符号的64位整数”。但是当我在主机上准备数据时, 它不能超过32位无符号。
之后,我读到unsigned long(在主机上)只是一个32位Type,就像unsigned int一样。我也 试过cl_ulong,但它似乎也有32位。
主机和设备的正确64位数据类型是什么?
答案 0 :(得分:2)
cl_ulong
是64位数据类型,它匹配cl内核端ulong
。
即使在32位机器上,也可以通过规范确保这一点。
在 platform.h 文件中定义为typedef uint64_t cl_ulong __attribute__((aligned(8)));
。
你能否详细解释为什么你会这样做?#34;是32位? 你能展示一些代码吗?