我在群集中运行了MATLAB脚本,使用了命令
===
* 22-23,23,0-1 * * *
===
我现在可以看到它不会在我放置的时间内完成。在我对节点进行ssh之后,有什么方法可以打开正在运行的MATLAB实例,并在程序中停止它,这样我就可以访问它到目前为止生成的变量了吗?
答案 0 :(得分:1)
似乎Matlab不允许这样做,除非您事先在Matlab脚本中明确地包含它。例如,请参阅this answer。
make your script 'checkpointable'总是好的,这样您就可以从脚本停止的位置轻松重启。
最后,关于Octave的一个词,在错误终止该程序时可以选择create a dump of the variables automatically。
答案 1 :(得分:0)
假设您正在使用SLURM工作负载管理器,您可以尝试以下操作。
首先使用srun --pty bash -i
打开一个交互式bash会话。如果您使用squeue -u <username>
检查作业队列,则应该找到一个bash会话:
现在使用断点运行您的Matlab代码,以便停止执行。例如,文件runTestJob.m
可能类似于:
function runTestJob
A = rand(5);
B = randn(5);
keyboard; % add breakpoint
end
现在运行代码,
srun matlab -nodisplay -singleCompThread -r "runTestJob;quit"
这应该直接在终端中为您提供Matlab访问权限,以便您可以像在命令窗口中使用Matlab一样使用Matlab:
完成后,请务必关闭交互式会话并释放资源:
scancel <JOBID>
希望有所帮助!