我需要在 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 intwith进行逻辑运算or.u32 <out>,<in1>,<in2>。但是,由于 C++11bool类型似乎是 8 位,这是否意味着我不能对bools直接从 CPU 复制到 GPU 内存的数组进行操作,因此我需要将boolsfirst 的数组转换为某种类型的 PTX 逻辑操作吗?操作,即u32,u16等?