3

以下 CUDA Thrust 程序崩溃:

#include <thrust/device_vector.h>
#include <thrust/extrema.h>

int main(void)
{
  thrust::device_vector<int> vec;
  for (int i(0); i < 1000; ++i) {
    vec.push_back(i);
  }

  thrust::min_element(vec.begin(), vec.end());
}

我得到的例外是:

Unhandled exception at 0x7650b9bc in test_thrust.exe: Microsoft C++
exception:thrust::system::system_error at memory location 0x0017f178..

In `checked_cudaMemcpy()` in `trivial_copy.inl`.

如果我添加#include <thrust/sort.h>并替换min_elementsort,它不会崩溃。

我在 Windows 7 64 位、compute_20、sm_20 (Fermi)、Debug build 上使用 CUDA 4.1。在发布版本中,我没有遇到崩溃,并且 min_element 找到了正确的元素。

是我做错了什么,还是 Thrust 中存在错误?

4

1 回答 1

5

nvcc -G0 -arch=sm_20我可以使用针对 Compute Capability 2.0(即)的调试模式重现该错误。该错误不会在发布模式或针对 Compute Capability 1.x 设备时重现,这通常表明代码生成问题而不是库中的错误。无论故障出在哪里,我都鼓励您提交错误报告,以便此问题得到应有的关注。同时,我建议在经过更严格测试的发布模式下编译。

于 2012-01-31T06:33:10.690 回答