CUDA上下文中模块的持久性

问题描述 投票:1回答:1

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

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

matlab cuda nvidia mex cuda-context
1个回答
2
投票

简短的回答是,可以重复使用。

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

© www.soinside.com 2019 - 2024. All rights reserved.