在调用cuMemAlloc之后使用cuCtxDestroy内存分配安全吗?
例如。
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发布于 2018-04-21 15:08:50
不,分配是上下文的一部分。
在销毁上下文时,还会销毁与其相关的任何资源,包括内存分配。
即使在不破坏上下文的情况下,如果尝试使用在另一个上下文下创建(即分配)的CUdeviceptr,当另一个上下文不当前时,您应该会得到一个“无效设备指针”错误(如果将它传递给内核,例如“非法访问”,则会出现内核运行时错误)。
还请注意,您在这里将驱动程序API的使用与运行时API语法(<<<..>>>)混合使用,所以我并不是说您编写的内容在任何特定情况下都是正常的,只是试图回答您的问题。
https://stackoverflow.com/questions/49957054
复制相似问题