thrust :: copy不适用于device_vectors

时间:2015-12-25 06:50:06

标签: cuda gpu thrust

我从Thrust documentation

复制了此代码
#include <thrust/copy.h>
#include <thrust/device_vector.h>
#include <thrust/host_vector.h>

int main()
{
  thrust::device_vector<int> vec0(100);
  thrust::device_vector<int> vec1(100);
  thrust::copy(vec0.begin(), vec0.end(), vec1.begin());

  return 0;
}

当我在调试模式(VS2012)中运行时,我的程序崩溃,我收到错误Debug Error! ... R6010 - abort() has been called.当我在发布模式下运行它时,它仍然崩溃,我收到消息.exe has stopped working。< / p>

但是,从主机到设备的复制正常工作:

  thrust::host_vector<int> vec0(100);
  thrust::device_vector<int> vec1(100);
  thrust::copy(vec0.begin(), vec0.end(), vec1.begin());

我使用GeForce GTX 970,CUDA驱动程序版本/运行时版本是7.5,deviceQuery运行没有任何问题。主机运行时库处于Multi-threaded (/MT)模式。有人知道可能导致这个问题的原因吗?

1 个答案:

答案 0 :(得分:0)

有一些类似的问题,例如here

引用评论:

  

&#34;已知Thrust在构建时无法正确编译和运行   调试&#34;

来自docs

  

&#34; nvcc不支持设备调试推力代码。推力功能   可能会编译(例如,nvcc -G,nvcc --device-debug 0等)   。崩溃&#34;