相关疑难解决方法(0)

确定可以连续分配的最大 GPU 设备内存量

我目前正在开发一个 CUDA 应用程序,如果处理的数据足够大,它将使用尽可能多的全局设备内存 (VRAM)。我分配的是一个 3D 卷cudaMalloc3d,所以我使用的内存必须是连续的。为此,我尝试使用该函数检索空闲设备内存的数量,cudaMemGetInfo然后分配尽可能多的空闲内存。但是,这似乎不起作用。尝试分配该数量的内存时,我仍然遇到错误。

现在,我的问题是是否有办法检索我可以连续分配的最大设备内存量。

一种选择是试错法,我反复减少我尝试分配的数量,直到分配成功。但是,我不太喜欢这个想法。

背景:我有一个程序可以在 GPU 上进行锥束 CT 重建。这些卷可能会变得非常大,因此我在必要时将它们分成块。因此,我必须知道一个块最多可以有多大才能仍然适合全局设备内存。

memory memory-management cuda

4
推荐指数
1
解决办法
851
查看次数

异常后重置 Cuda 上下文

我有一个使用 Cuda / C++ 的工作应用程序,但有时,由于内存泄漏,会引发异常。我需要能够实时重置 GPU,我的应用程序是服务器,因此它必须保持可用。

我尝试过类似的方法,但似乎不起作用:

try
{
    // do process using GPU
}
catch (std::exception &e)
{
    // catching exception from cuda only

    cudaSetDevice(0);
    CUDA_RETURN_(cudaDeviceReset());
}
Run Code Online (Sandbox Code Playgroud)

我的想法是每次 GPU 出现异常时重置设备,但我无法使其正常工作。:( 顺便说一句,由于某些原因,我无法解决 Cuda 代码的所有问题,我需要一个临时解决方案。谢谢!

c++ cuda exception reset cuda-context

4
推荐指数
1
解决办法
3962
查看次数

标签 统计

cuda ×2

c++ ×1

cuda-context ×1

exception ×1

memory ×1

memory-management ×1

reset ×1