1

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

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

4

1 回答 1

2

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

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

于 2014-03-28T10:17:54.833 回答