在c/c++
中,我们可以使用1 bit
表示0/1,但是我不知道如何在CUDA中完成这项工作。我检查了一些发布的问题,但没有找到答案。
我想在c / c ++中做的是这样的:
#ifndef CBITMAP_H_
#define CBITMAP_H_
#include <boost/dynamic_bitset.hpp>
class CBitMap{
public:
ID base;
boost::dynamic_bitset<> bits;
CBitMap(ID minID,ID maxID):base(minID){
bits.resize(maxID-minID+1,false);
}
bool ifContains(ID id){
if(id < base || id > base+bits.size()-1) return false;
return bits[id-base];
}
bool insert(ID id){
bits[id-base] = true;
}
bool get(ID id){
if(id < base || id > base+bits.size()-1) return false;
return bits[id-base];
}
void set(ID id,bool v){
bits[id-base] = v;
}
};
#endif
工作取决于boost::dynamic_bitset<>
,所以,我的疑问是:
“弃用通知:__any,__ all和__ballot已弃用 在所有设备的CUDA 9.0中都是如此。”
任何建议都值得赞赏。