Я следующий фрагмент кодаCuda Thrust min_element врезается
uint64_t myvec[] = {1,2,3,4,5};
int main(void)
{
uint64_t* dev;
cudaMalloc(&dev, 5*sizeof(uint64_t));
cudaMemcpy(dev,myvec,sizeof(uint64_t)*5,cudaMemcpyHostToDevice);
uint64_t* min_iter = thrust::min_element(thrust::device, dev, dev+5);
return 0;
}
Этот код происходит сбой с Segfault из min_element на устройстве.
Но этот код, кажется, работает, если я исполню его на хосте
uint64_t* min_iter = thrust::min_element(thrust::host, myvec, myvec+5);
Я не знаю, что это неправильно. Я использую cuda 7.5. Это ошибка?
Это, кажется, ошибка: https://github.com/thrust/thrust/issues/776. Вы можете обойти это с помощью этого: 'uint64_t * min_iter = thrust :: min_element (thrust :: device, thrust :: device_pointer_cast (dev), thrust :: device_pointer_cast (dev + 5)). Get();' –