【问题标题】:Is it safe to reuse cuMemAlloc memory after I call cuCtxDestroy?调用 cuCtxDestroy 后重用 cuMemAlloc 内存是否安全?
【发布时间】:2018-10-02 01:56:23
【问题描述】:

在调用cuCtxDestroy 之后使用cuMemAlloc 内存分配是否安全?

例如

cuCtxCreate()
void *d_buffer;
cuMemAlloc(d_buffer, ....);
cuCtxDestroy();

// In another place but same thread
cuCtxCreate();
kernel_call<<<..>>>(d_buffer); // Use the device allocation previously created

【问题讨论】:

    标签: c++ memory cuda gpu


    【解决方案1】:

    不,分配是context 的一部分。

    当您销毁上下文时,您也会销毁与其相关的所有资源,包括内存分配。

    即使没有销毁上下文,如果您尝试使用在另一个上下文下创建(即分配)的CUdeviceptr,当另一个上下文不是当前的时,您应该会收到“无效设备指针”错误(或内核运行时错误,如果将其传递给内核,例如“非法访问”)

    还请注意,您在这里混合使用驱动程序 API 和运行时 API 语法 (&lt;&lt;&lt;..&gt;&gt;&gt;),所以我并不是说您所写的内容在任何特定情况下实际上都是合理的,只是试图回答您的问题。

    【讨论】:

      猜你喜欢
      • 2016-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多