【问题标题】:which function can replace the deprecated function thrust::detail::backend::dereference In thrust 1.7哪个函数可以替换推力1.7中已弃用的函数thrust::detail::backend::dereference
【发布时间】:2013-11-30 10:25:01
【问题描述】:

我是 CUDA 和推力的新手,我从 google 代码下载了一个 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;

提前致谢!

【问题讨论】:

  • 什么是 in_values 和 out_values?

标签: cuda thrust


【解决方案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;

【讨论】:

    【解决方案2】:

    可能最简单的解决方案是从GitHub下载你需要的Thrust版本并直接编译。

    使用 Thrust 的内部函数不是一个好主意。 API 不应无故更改,但内部可能随时更改。

    【讨论】:

    • 问题似乎是他试图构建的库使用了 Thrust 内部实现的功能,而在最新版本中不再存在。
    • @JaredHoberock:我同意,我建议他可以下载旧版本的 Thrust 并使用该版本而不是 CUDA 5.5 提供的版本 (1.7)。
    • 感谢您的回复,这是个好主意。由于相同的原因,还有其他类似的问题。我应该使用旧版本的 Thrust!
    猜你喜欢
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 2015-06-22
    • 2020-10-22
    • 2013-01-13
    • 2013-04-17
    相关资源
    最近更新 更多