CUDA环境中模块的持久性



我有一个MATLAB mex库,它在运行时加载特定于问题的库文件。这个mex函数被MATLAB调用了几百次。当我调用culmoduleload时,每次CUDA都重新加载内核吗?或者它以某种方式被缓存?如果没有,是否有办法在两者之间持久化加载的模块?我目前没有调用cuModuleUnload。

似乎CUDA上下文仅为MATLAB进程创建一次,因为只有对库的第一次调用很慢。随后对mex库的matlab函数调用速度很快。所以我想我可以假设相同的CUDA上下文被重用。

简短的回答是肯定的,您可以重用它们。

当动态加载MEX文件时,只要不依赖于Matlab内存管理器(mxMalloc, mxCreateNumericArray等),MEX文件中的c++全局/静态变量或静态成员仅创建一次。当Matlab退出或MEX文件被clear mex卸载时,它们被破坏。也可以保护MEX文件与MEX API: mexLock,以防止意外卸载,mexAtExit注册析构函数回调等。

相关内容

  • 没有找到相关文章

最新更新