【问题标题】:Thrust vector slice/view推力向量切片/视图
【发布时间】:2017-11-15 17:33:13
【问题描述】:

我在thrust::device_vector<T> 中有一个矩阵(面向行)。有没有办法获得该向量的切片/视图(也可以是thrust::device_vector<T> 类型)?我对复制构造函数不感兴趣,因为它们会创建新的向量并使用内存。

所以基本上假设我们有一个向量thrust::device_vector<int> vec = {1,2,3,4,5,6} 我想做thrust::device_vector<int> vec_view = vec.slice(2,4) 这将是一个指向{3,4} 的视图。

需要批量运行某些计算,我使用的方法只需要thrust:device_vector<T>(没有迭代器等)。

【问题讨论】:

    标签: c++ cuda thrust


    【解决方案1】:

    据我所知,没有办法做到这一点。

    Thrust 不会公开接受现有 device_pointer 的 device_vector 构造函数。如果是这种情况,您可能会实现自己的支持跨步访问或切片等的 device_pointer。但我不知道有一种方法可以在不求助于花哨的迭代器的情况下实现您的设想,而且显然这些不适合您使用案例。

    【讨论】:

    • 是的,这就是我所害怕的。我想我只能以某种方式没有它。想知道这是否只是 thrust 的缺点,还是由于其他一些问题而没有完成。
    • 所有的推力容器都是按照 SGI STL/C++ 标准库建模的,它们不提供类似的东西。使用的明显模型类似于boost::range,但这仍然是一个迭代器,而不是一个容器。在我看来,问题实际上出在您使用的 API 上。如果它是为了接受迭代器而编写的,我们就不会进行这样的对话了.....
    猜你喜欢
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 2014-06-10
    • 2012-09-06
    • 2020-04-30
    • 2016-02-28
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多