我需要在 CPU 内存(使用 C++11 代码)中创建的布尔数组bool[]
(注意,不是 a std::vector<bool>
)上进行 GPU 计算,然后通过cuMemCpy
或类似方法复制到 GPU。
第一个问题:
sizeof(bool)
报告 1 个字节。这是由 C++11 标准保证的吗?
第二个问题:
true
( )总是false
表示为1
( 0
) (在unsigned char
表示中)还是编译器在这里有自由?(如果需要,它可以使用任何小于 256 的非零整数)
第三个问题(特定于 PTX):
在 PTX 逻辑操作or
中xor
, 等仅对大于 8 位的类型进行操作。也就是说,我可以对unsigned int
with进行逻辑运算or.u32 <out>,<in1>,<in2>
。但是,由于 C++11bool
类型似乎是 8 位,这是否意味着我不能对bools
直接从 CPU 复制到 GPU 内存的数组进行操作,因此我需要将bools
first 的数组转换为某种类型的 PTX 逻辑操作吗?操作,即u32
,u16
等?