Есть ли способ использовать растровую структуру в CUDA? - PullRequest
1 голос
/ 02 апреля 2019

В 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<> Итак, мой запрос:

  1. Возможно ли использоватьпохожая структура данных в CUDA?Если да, то как мне определить данные для хранения этих битов?
  2. Можно ли использовать __ ballot () для удовлетворения моих потребностей?но Nvidia API упоминает, что: означает ли это, что это не должно рассматриваться?

    "Уведомление об устаревании: __any, __all и __ballot устарели в CUDA 9.0 для всех устройств."

Любое предложение приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...