gpt4 book ai didi

algorithm - CUDA 流压缩 : understanding the concept

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:48:19 25 4
gpt4 key购买 nike

我正在使用 CUDA/Thrust/CUDPP。据我了解,在 Stream 压缩中,数组中的某些项目被标记为无效,然后被“删除”。

现在“移除”在这里的真正含义是什么?假设原始数组 A 的长度为 6。如果 2 个元素无效(无论我们提供什么条件),则

  1. 系统是否在 GPU 内存中创建一个大小为 4 的数组来存储有效元素以获得最终结果?

  2. 或者它是否从内存中物理移除无效元素并缩小原始数组缩小到 4 号只保留有效元素?

对于这两种情况,这是否意味着动态内存分配是在后台进行的?但我听说在 CUDA 世界中动态内存分配是不可能的。

最佳答案

首先,在 Compute Capability 2.0 和更高版本的设备上,CUDA 中可以进行动态内存分配。 CUDA 运行时库支持 __device__ 函数中的 malloc/free 和 new/delete。但这与答案无关,真的。

通常提供足够大的输出数组(预先分配,通常与输入数组大小相同)并将输出写入其中。不需要动态分配,但可能存在存储浪费。这就是 CUDPP 和推力所做的。另一种方法是先对有效元素进行计数,然后使用从主机 CPU 调用的 cudaMalloc 动态分配输出 GPU 内存。

关于algorithm - CUDA 流压缩 : understanding the concept,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com