我需要一个 64 位数据类型用于 OpenCL 中的位操作。在手册中 https://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/scalarDataTypes.html 他们说 ulong 是“一个无符号的 64 位整数”。但是当我在主机上准备数据时, 它不能增长到大于 32 位无符号数。
在那之后,我读到 unsigned long(在主机上)只是一个 32 位类型,就像 unsigned int 一样。我也 试过 cl_ulong,但它似乎也有 32 位。
主机和设备的正确 64 位数据类型是什么?
最佳答案
cl_ulong
是64bit的数据类型,匹配cl内核端的ulong
。
规范确保了这一点,即使在 32 位机器上也是如此。
它在 platform.h 文件中定义为 typedef uint64_t cl_ulong __attribute__((aligned(8)));
。
您能否详细说明您“认为”是 32 位的原因? 你能展示一些代码吗?
关于c++ - OpenCL 中主机和设备的 64 位数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41509792/