我在 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/