代码之家  ›  专栏  ›  技术社区  ›  Tommy

CUDA:cudaMallocManaged处理出口吗?

  •  0
  • Tommy  · 技术社区  · 6 年前

    exit(1) ,这是否会在GPU中永久保留悬空内存?

    Will exit() or an exception prevent an end-of-scope destructor from being called? 但我不确定GPU是否有某种回收机制。

    1 回复  |  直到 6 年前
        1
  •  3
  •   talonmies    6 年前

    如果(C++ + CUDA) cudaMallocManaged() 在主机和GPU内存中的数组,并且程序遇到(比如在主机中) 永久地?

    不可以。CUDA运行时API注册了一个teardown函数,该函数将释放API在进程退出时声明的所有资源。此操作包括销毁任何活动的GPU上下文,从而释放GPU上的内存。请注意,该过程实际上必须退出才能发生所有这一切(请参阅 here 例如,这是如何出错的)。