c++ - 推力装置 vector 推力装置 vector <int>

标签 c++ vector cuda iterator thrust

我在 CUDA 中使用了这种 vector 的 vector 方法,因为我仍然习惯 Matlab 和 Python 风格的编程环境。我能够从设备 vector 中的主机端提取数据,但现在我不确定如何访问该数据,例如用于打印。我尝试使用迭代器,但收到错误消息说 device_reference 没有成员“开始”或“结束”。

(使用 VS 2010 和 CUDA 工具包 5.0)

thrust::device_vector<thrust::device_vector<int>> kmers;
//Do some stuff here to fill kmers
//
//
thrust::device_vector<thrust::device_vector<int>>::iterator ii;
thrust::device_vector<int>::iterator i;
for (ii = kmers.begin();ii!=kmers.end();++ii)
{
    for (i = (*ii).begin(); i != (*ii).end(); i++){
        std::cout << (*i) << "\n";
    }
}

有什么建议吗? 编辑:据我了解,当前推力容器无法直接传递给 CUDA 内核。还有其他库/容器可以让我这样做吗?

最佳答案

据我所知,CUDA 后端存在限制,导致 vector 的 vector 无法使用。

不确定 CUDA 6.0 中是否解决了这个问题,但 surely wasn't在 CUDA 5.0 中

您必须线性化您的 vector 。

关于c++ - 推力装置 vector 推力装置 vector <int>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25476325/

相关文章:

cuda - 如何自定义 nvidia-smi 的输出以显示 PID 用户名?

CUDA:了解PTX信息

c++ - 无法取消引用指针

C++程序不读取公式

c++ - std::cin 真的很慢

python - 非常大的矩阵向量积

CUDA 2D 数组赋值

c++ - 哈希表 - 条件跳转或移动取决于未初始化的值

c++ - 在 C++ 中重组 vector

c++ - 使用 move::semantic 将大量 vector 合并为一个更大的 vector