2012-01-15 106 views
3

我的应用程序需要执行比特向量上的比特向量运算,如OR和XOR。CUDA上的布尔运算

e.g suppose array A  = 000100101 (a.k.a bit vector) 
        B  = 100101010 
        A . B = 100101111 

CUDA是否支持布尔变量?例如如同C中一样。如果是,它是如何存储和操作的?它是否也支持位矢量操作?我在CUDA编程指南中找不到答案。

回答

8

CUDA支持标准C++ bool,但在C++中它只是一种保证支持两种状态的类型,所以不应该使用位操作。在CUDA中,与在C++中一样,您可以获得整型(或,xor,complement和左右移位)的位运算符的标准补码。理想情况下,您应该致力于使用32位类型(或者打包的32位CUDA矢量类型)来实现内存吞吐量。