C++ 在我调用cuCtxDestroy之后,重用cumeAlloc内存安全吗?

C++ 在我调用cuCtxDestroy之后,重用cumeAlloc内存安全吗?,c++,memory,cuda,gpu,C++,Memory,Cuda,Gpu,调用后使用内存分配安全吗 例如 cuCtxCreate() void*d_缓冲区; 积垢(d_缓冲液,…); cuCtxDestroy(); //在另一个地方,但同样的线索 cuCtxCreate(); 内核调用(d_缓冲区);//使用先前创建的设备分配 否,分配是计划的一部分 销毁上下文时,还将销毁与其关联的任何资源,包括内存分配 即使没有上下文破坏,如果您试图使用在另一个上下文下创建(即分配)的CUdeviceptr,当该另一个上下文不是当前上下文时,您应该会得到“无效设备指针”错误(或者内

调用后使用内存分配安全吗

例如

cuCtxCreate()
void*d_缓冲区;
积垢(d_缓冲液,…);
cuCtxDestroy();
//在另一个地方,但同样的线索
cuCtxCreate();
内核调用(d_缓冲区);//使用先前创建的设备分配

否,分配是计划的一部分

销毁上下文时,还将销毁与其关联的任何资源,包括内存分配

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

还要注意的是,您在这里混合了驱动程序API用法和运行时API语法(
),因此我并不建议您编写的内容在任何特定情况下都是合理的,只是试图回答您的问题

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