gpt4 book ai didi

matlab - 通过 ssh 在 Windows 上远程启动 matlab?不可能的?

转载 作者:太空宇宙 更新时间:2023-11-03 19:45:12 25 4
gpt4 key购买 nike

你好,我正在尝试通过随 Cygwin 安装的 OpenSSH 在 Windows 上远程运行 matlab,但是在没有 GUI 的情况下在 Windows 中启动 matlab 似乎是不可能的。

如果我在本地登录,我可以启动 matlab -nodesktop -nodisplay -r 脚本,matlab 将启动一个精简的 GUI 并执行命令。

但是,这不可能通过 ssh 远程执行,因为 matlab 需要显示 GUI。

有没有人有任何建议或解决方法?

谢谢,

鲍勃

最佳答案

短篇小说:您的脚本是否调用了 exit()?你在使用“-wait”吗?

长话短说:如果您想与之交互,我认为您根本就不走运,但如果您只想批量处理作业,这应该可行。 Windows 上的 Matlab 是一个 GUI 应用程序,而不是控制台应用程序,并且不会与纯字符远程连接进行交互。但是您仍然可以启动该过程。 Matlab 实际上会显示 GUI - 它只是在您无权访问的远程计算机上的桌面 session 中。但是,如果您无需进一步输入就可以让它完成您的工作,那么它就可以工作,以获得“工作”的某些值(value)。

您的“-r 脚本”开关是正确的方向。但请注意,在 Windows 上,Matlab 的“-r”行为是完成脚本然后返回 GUI,等待进一步输入。您需要明确包含一个“exit()”调用以完成您的工作,并添加 try/catches 以确保到达 exit()。此外,您应该使用“-logfile”开关将所有命令窗口输出的副本捕获到日志文件中,以便您可以看到它在做什么(因为您看不到 GUI)并记录之前的运行。

此外,matlab.exe 默认是异步的。您的 ssh 调用将启动 Matlab 并立即返回,除非您添加“-wait”开关。检查您要连接到的机器上的进程; Matlab 可能实际上正在运行。添加 -wait 如果你想让它阻塞直到完成。

执行此操作的一种方法是使用 -r 调用标准作业包装器脚本,该脚本会初始化您的库和路径、运行作业并进行清理和退出。您还需要创建一个 .bat 包装器来设置 -logfile 开关以指向一个包含作业名称、时间戳和其他信息的文件。 M 代码级别的类似内容。

function run_batch_job(jobname)
try
init_my_matlab_library(); % By calling classpath(), javaclasspath(), etc
feval(jobname); % assumes jobname is an M-file on the path
catch err
warning('Error occurred while running job %s: %s', jobname, err.message)
end
try
exit();
catch err
% Yes, exit() can throw errors
java.lang.System.exit(1); % Scuttle the process hard to make sure job finishes
end
% If your code makes it to here, your job will hang

我之前在 Windows Scheduler、Tidal 和 TWS 中使用这种样式设置了批处理作业系统。我认为它应该在 ssh 或其他远程访问下以相同的方式工作。

像这样的 Windows 上的 Matlab 批处理系统很脆弱且难以管理。 Windows 上的 Matlab 从根本上来说并不是一个 headless 的批处理执行系统;关于交互式 GUI 的假设在其中无处不在,并且很难变通。低级错误或许可证错误将弹出模态对话框并挂起您的工作。 Matlab 启动序列似乎有竞争条件。您无法设置 MATLAB.exe 的退出状态。无法通过 Matlab GUI 调试作业抛出的错误。日志文件可能会被缓冲,并且您会在挂起和崩溃时丢失输出。等等。

认真考虑移植到 Linux。 Matlab 更适合作为批处理系统。

如果您有钱或有备用许可证,您还可以使用 Matlab 分布式计算工具箱和服务器在远程工作节点上运行代码。这可以用于并行化或远程批处理作业。

关于matlab - 通过 ssh 在 Windows 上远程启动 matlab?不可能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2661892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com