在推力:: device_vector(CUDA推力)上碰撞推力:: min_element

Rog*_*ahl 3 cuda thrust

以下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());
}
Run Code Online (Sandbox Code Playgroud)

我得到的例外是:

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`.
Run Code Online (Sandbox Code Playgroud)

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

我在Windows 7 64位,compute_20,sm_20(费米),调试版本上使用CUDA 4.1.在发布版本中,我没有得到崩溃,min_element找到了正确的元素.

我做错了什么,或者Thrust中有错误吗?

wnb*_*ell 5

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

  • 我已经提交了一份错误报告.#72796. (3认同)