我正在尝试制作一个向量,cusp::coo_matrix
但似乎无法thrust::host_vector
以这种方式使用。考虑这段代码:
int main(void)
{
typedef typename cusp::coo_matrix<int, float, cusp::device_memory> maintype;
maintype B;
thrust::host_vector<maintype> h_vec(2,B);
return 0;
}
我从以下位置收到此错误消息nvcc
:
Warning: calling a __host__ function("thrust::detail::vector_base<int, thrust::device_malloc_allocator<int> > ::vector_base") from a __host__ __device__ function("thrust::detail::vector_base<int, thrust::device_malloc_allocator<int> > ::vector_base [subobject]") is not allowed
Warning: calling a __host__ function("thrust::detail::vector_base<float, thrust::device_malloc_allocator<float> > ::vector_base") from a __host__ __device__ function("thrust::detail::vector_base<float, thrust::device_malloc_allocator<float> > ::vector_base [subobject]") is not allowed
有趣的是,我得到了完全相同的错误cusp::host_memory
(嗯,几乎相同):
Warning: calling a __host__ function("thrust::detail::vector_base<int, std::allocator<int> > ::vector_base") from a __host__ __device__ function("thrust::detail::vector_base<int, std::allocator<int> > ::vector_base [subobject]") is not allowed
Warning: calling a __host__ function("thrust::detail::vector_base<float, std::allocator<float> > ::vector_base") from a __host__ __device__ function("thrust::detail::vector_base<float, std::allocator<float> > ::vector_base [subobject]") is not allowed
所以,我的问题是,这真的是一个缺点还是我做错了什么?非常感谢任何帮助。
另外,我已经测试了,std::vector
而不是thrust::host_vector
它工作正常。并不是说我是 Thrust 库的忠实粉丝,但我只是好奇。此外,我需要重写一些代码以防thrust::host_vector
不合适(thrust::find
并且使用了一些其他功能)。
另外,还有其他制作尖点矩阵数组的方法吗?我不认为原始指针new/delete
比 更好std::vector
,对吗?