You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

MATLAB R2023a-R2025a中parfor执行失败:是预期行为还是Bug?

自定义脚本遮蔽MATLAB内置profile函数导致parfor执行失败的原因及解决办法

问题现象

  • 存在两个MATLAB脚本profile.mtry_parfor.m,按指定目录结构摆放后,在安装了Parallel Computing Toolbox的MATLAB R2023a-R2025a版本中执行profile命令,会触发报错,提示找不到fun函数和try_parfor.m文件。
  • profile.m重命名为test.m并修改内部函数名后,执行test命令就能正常运行。
  • 该问题在MATLAB R2021a-R2022b中部分测试未出现,但有用户反馈R2021b也存在此问题。

根本原因

profile是MATLAB自带的性能分析内置函数,当你自定义同名脚本profile.m时,会直接遮蔽这个内置函数。在R2023a及更新版本中,并行计算工具箱在初始化并行池或分发parfor任务时,会隐式调用内置profile函数做环境校验或性能追踪,但此时你的自定义脚本覆盖了这个内置函数,导致并行环境无法正确加载依赖的脚本和函数,最终出现找不到文件/函数的错误。

解决办法

  • 不要用内置函数名命名自定义脚本/函数:直接将profile.m重命名为非内置函数名(比如test.m),同时同步修改脚本内部的函数定义名称,保证和文件名一致。
  • 检查路径优先级:用which profile命令查看当前生效的是哪个文件,确认是否存在遮蔽情况,确保自定义脚本不会出现在MATLAB路径的更高优先级位置。

内容的提问来源于stack exchange,提问作者Nuno

火山引擎 最新活动