我可以缩短 CUDA 分配的缓冲区吗?



我正在使用 CUDA 在 GPU 上实现一种算法,当特定输入缓冲区(3D 浮点向量)包含重复条目时,该算法肯定会给出不正确的结果。出于这个原因,我想做一个预处理步骤来删除存在的任何重复项。

由于我知道输入数据包含大量重复项,因此显式修剪缓冲区可以为某些处理步骤释放急需的内存。由于我有大量数据要处理,因此我打算在已分配的缓冲区内就地执行此操作。

CUDA 是否有一种机制可以修剪和释放cudaMalloc()缓冲区的末端?

您询问的是"realloc"函数的等效项,运行时或驱动程序 API 中都不存在此类功能。

另请注意,cudaMalloccudaFree可能无法按您想象的方式工作,释放内存不一定会更改设备上的可用内存量。

最新更新