首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库达流压缩:理解概念

库达流压缩:理解概念
EN

Stack Overflow用户
提问于 2011-12-05 16:01:29
回答 1查看 2.5K关注 0票数 5

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

现在“移除”到底是什么意思?假设原始数组A的长度为6。如果2个元素无效(根据我们可能提供的条件),那么

  1. 系统是否在GPU内存中创建了一个大小为4的数组来存储有效元素以获得最终结果?
  2. 还是物理上从内存中删除无效元素并将原始数组A缩小到4大小,只保留有效元素?

对于这两种情况,这不意味着动态内存分配正在发生吗?但我听说,在数据自动化系统的世界里,动态内存分配是不可能的。

EN

回答 1

Stack Overflow用户

发布于 2011-12-06 07:13:13

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8388125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档