首页 > 解决方案 > 为什么 MCR 2016 MCR_CACHE_ROOT 不起作用

问题描述

我有一个 Matlab 例程,我已将其编译为独立的可执行文件,用于运行 PBSPro 的计算集群。一次可以运行数千个实例。在 2012a 版本中,我发现该设置MCR_CACHE_ROOT=${TMPDIR}会将执行速度提高一个数量级。我们的集群正在删除对一些旧应用程序的支持,因此我将使用相同的代码迁移到 Matlab 2016a,所有改变的只是编译器版本。当我像以前一样编译代码并设置 MCR 缓存时,我收到一条错误消息

无法访问 MATLAB 运行时组件缓存

然后,2016 版本的代码将继续使用系统 RAM,直到节点内存不足并且作业因内存故障而终止。如果我没有指定MCR_CACHE_ROOT作业运行良好,尽管速度很慢然后完成。

编译命令是mcc -v -o Program -m mFiles,其中mFiles是要编译的文件元胞数组。唯一的区别是编译器、MCR 和相应的 LD_LIBRARY_PATH。我使用完全相同的编译脚本和源文件。可执行文件是并排的,并且 TMPDIR 是完全可读写的。

是什么导致运行时组件缓存错误?

标签: matlabhpc

解决方案


推荐阅读