thrust::copy не работает для device_vectors

Я скопировал этот код из документации Thrust:

#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,

Однако копирование с хоста на устройство работает правильно:

  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 ответ

Есть несколько похожих вопросов, например, здесь

Цитировать комментарий:

"Известно, что Thrust не компилируется и работает правильно при сборке для отладки"

И из документов:

"nvcc не поддерживает отладку устройства. Код Thrust. Функции Thrust, скомпилированные с помощью (например, nvcc -G, nvcc --device-debug 0 и т. д.), скорее всего, будут аварийно завершать работу."

Другие вопросы по тегам