我是CUDA的新手和推力,我从谷歌代码下载了一个GPU BVH建筑代码。但代码是在较旧版本的CUDA和推文下编写的。现在,我正在使用推出1.7的最新CUDA 5.5。似乎derefrence函数已被弃用,所以我想知道如何在最新的CUDA中重写以下代码并推动
typename std::iterator_traits<Output_iterator>::value_type value = def_value;
for (uint32 i = begin; i < end; ++i)
value = op( value, thrust::detail::backend::dereference( in_values + i ) );
thrust::detail::backend::dereference( out_values, leaf_id ) = value;
提前致谢!
答案 0 :(得分:1)
最简单的解决方案可能是从GitHub下载您需要的Thrust版本并直接编译。
使用Thrust的内部功能不是一个好主意。 API无法在没有充分理由的情况下进行更改,但内部可能随时发生变化。
答案 1 :(得分:1)
您应该能够直接使用更新版本的Thrust取消引用迭代器:
typename std::iterator_traits<Output_iterator>::value_type value = def_value;
for (uint32 i = begin; i < end; ++i)
value = op( value, in_values[i] );
out_values[leaf_id] = value;