使用cudaFree释放不同设备中的GPU内存

问题描述 投票:0回答:1

我可以使用 cudaFree 来释放在另一个设备中分配的 GPU 内存吗

cudaSetDevice(0);
cudaMalloc(&devPtr, size);
cudaSetDevice(1);
cudaFree(devPtr);

我的系统是否支持统一虚拟地址空间?(cuda ver9.2)

cuda
1个回答
0
投票

是的,如果您有一个使用统一虚拟寻址(UVA)和 CUDA 运行时 API 的平台,那么您可以在任何有效的设备指针上调用

cudaFree
,同时运行时 API 设置为当前地址空间中的任何设备。

此外,运行时 API 提供

cudaPointerGetAttributes
调用,该调用可以询问裸指针并检索 GPU 运行时元数据,包括逻辑统一地址空间中的物理内存所在的设备。我想这就是您提出的方案在 UVA 系统中发挥作用的方式/原因。

© www.soinside.com 2019 - 2024. All rights reserved.