c++ - OpenCL 中主机和设备的 64 位数据类型

标签 c++ opencl

我需要一个 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/

相关文章:

c++ - 完成处理程序中的 Boost 绑定(bind)错误

floating-point - 为什么 OpenCL 内核中的浮点异常调用 sin 而不是 cos?

OpenCL 分析信息对于标记命令不可用

c++ - 大型系统的 Enterprise Architect 类图

c++ - 与 Visual Studio 兼容的免费/开源 Windows Fortran 编译器

c++ - 如何用不同大小的 vector 初始化二维 vector

python - 如何构建这个 OpenCL 暴力破解代码

xcode - 如何设置 Xcode 以运行 OpenCL 代码,以及如何在构建前验证内核

c++ - OpenCL 回写缓冲区

java - 用于布局布线的模拟退火