【问题标题】:How to send this kind of data structure into CUDA efficiently? [duplicate]如何有效地将这种数据结构发送到 CUDA 中? [复制]
【发布时间】:2014-02-01 08:25:14
【问题描述】:

我有这样的数据结构:

std::vector mystruct[100];

mystruct[100] 的每个向量都有不同的大小。例如,mystruct[0] 的大小为 10,mystruct[1] 的大小为 5,mystruct[2] 的大小为 12,以此类推。

那么我怎样才能有效地将这种数据结构发送到CUDA呢?

【问题讨论】:

  • 是否使用推力和选项?您可以直接使用设备/主机向量实现。
  • Thrust 不会直接处理向量数组。您要么必须将数组展平为单个向量,要么使用循环复制每个向量。

标签: c++ cuda


【解决方案1】:

如果主机数据结构必须是您描述的方式,我认为您只能单独下载每个向量。

如果您可以更改数据结构,您可以考虑将所有向量一个接一个地存储在一大块内存中,然后将这个大块连同一个偏移量表一起下载,该偏移量表告诉您在什么位置找到哪个向量。当然,在后一种方法中,调整向量的大小可能会变得昂贵,但也许您并不经常需要该操作。此外,如果您知道向量大小的合理上限,则可以尝试为每个向量分配那么多空间,而不管它是否被完全使用。

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2019-07-11
    • 1970-01-01
    • 2019-03-20
    相关资源
    最近更新 更多