打开 运行 个 matlab 实例
Open running instance of matlab
我是集群中的运行一个MATLAB脚本,使用了命令
matlab -nodisplay <LocalVariation.m
我现在可以看到它不会在我设置的墙上时间内完成。有没有什么办法可以在我通过 ssh 连接到节点后打开 运行 MATLAB 实例,并在程序中停止它,这样我就可以访问它到目前为止生成的变量?
假设您正在使用 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 window:
完成后,确保关闭交互式会话并释放资源:
scancel <JOBID>
希望对您有所帮助!
似乎 Matlab 不允许这样做,除非您事先明确地将其包含在您的 Matlab 脚本中。例如,参见 。
此外,make your script 'checkpointable' 总是好的,这样您就可以轻松地从脚本停止的地方重新启动。
最后说一下 Octave,它可以选择 create a dump of the variables automatically 在程序错误终止时。
我是集群中的运行一个MATLAB脚本,使用了命令
matlab -nodisplay <LocalVariation.m
我现在可以看到它不会在我设置的墙上时间内完成。有没有什么办法可以在我通过 ssh 连接到节点后打开 运行 MATLAB 实例,并在程序中停止它,这样我就可以访问它到目前为止生成的变量?
假设您正在使用 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 window:
完成后,确保关闭交互式会话并释放资源:
scancel <JOBID>
希望对您有所帮助!
似乎 Matlab 不允许这样做,除非您事先明确地将其包含在您的 Matlab 脚本中。例如,参见
此外,make your script 'checkpointable' 总是好的,这样您就可以轻松地从脚本停止的地方重新启动。
最后说一下 Octave,它可以选择 create a dump of the variables automatically 在程序错误终止时。