我正在使用CUDA/Thrust/CUDPP。据我所知,在流压缩中,数组中的某些项被标记为无效,然后“删除”。
现在“移除”到底是什么意思?假设原始数组A的长度为6。如果2个元素无效(根据我们可能提供的条件),那么
对于这两种情况,这不意味着动态内存分配正在发生吗?但我听说,在数据自动化系统的世界里,动态内存分配是不可能的。
发布于 2011-12-06 07:13:13
首先,在计算能力2.0和更高的设备上的CUDA中,动态内存分配是可能的。CUDA运行时库支持__device__函数中的malloc/free和new/delete。但这与答案无关,真的。
通常,提供一个足够大的输出数组(预先分配,通常与输入数组大小相同),并将输出写入其中。不需要动态分配,但存在潜在的存储浪费。这就是CUDPP和thrust所做的。另一种方法是首先执行有效元素的计数,然后使用从主机CPU调用的cudaMalloc动态分配输出GPU内存。
https://stackoverflow.com/questions/8388125
复制相似问题