Запуск matlab удаленно на окнах через ssh? Невозможный?

Привет, я пытаюсь выполнить matlab удаленно на окнах через OpenSSH, установленный с Cygwin, но запускающийся matlab в окнах без GUI, кажется, невозможен.

Если я зарегистрирован локально, я могу запустить matlab-nodesktop-nodisplay-r сценарий, и matlab запустит разделенный вниз GUI и сделает команду.

Однако это невозможно сделать удаленно через ssh, поскольку, matlab должен отобразить GUI.

Кто-либо имеет какие-либо предложения или работает arounds?

Спасибо,

Bob

5
задан Bob E. 18 April 2010 в 10:24
поделиться

2 ответа

Краткая история: ваш сценарий, вызывающий exit ()? Вы используете «-wait»?

Длинная история: я думаю, вам в корне не повезло, если вы хотите с ним взаимодействовать, но это должно сработать, если вы просто хотите группировать задания. Matlab в Windows - это приложение с графическим интерфейсом, а не консольное приложение, и оно не будет взаимодействовать с удаленным подключением только для символов. Но запустить процесс можно. Matlab фактически отобразит графический интерфейс - это будет просто сеанс рабочего стола на удаленном компьютере, к которому у вас нет доступа.Но если вы можете заставить его выполнять свою работу без дополнительных действий, это можно заставить работать за некоторую ценность «работы».

Ваш ключ "-r script" - правильное направление. Но имейте в виду, что в Windows поведение Matlab "-r" заключается в том, чтобы завершить сценарий и затем вернуться в графический интерфейс, ожидая дальнейшего ввода. Вам нужно явно включить вызов «exit ()», чтобы завершить работу, и добавить try / catch, чтобы убедиться, что exit () будет достигнут. Кроме того, вы должны использовать переключатель «-logfile» для записи копии всего вывода командного окна в файл журнала, чтобы вы могли видеть, что он делает (поскольку вы не видите графический интерфейс) и иметь запись о предыдущих запусках.

Кроме того, matlab.exe по умолчанию является асинхронным. Ваш ssh-вызов запустит Matlab и сразу вернется, если вы не добавите переключатель «-wait». Проверьте процессы на машине, к которой вы подключаетесь; Matlab действительно может быть запущен. Добавьте -wait, если вы хотите заблокировать его до завершения.

Один из способов сделать это - просто использовать -r для вызова стандартного сценария-оболочки задания, который инициализирует ваши библиотеки и пути, запускает задание, выполняет очистку и завершает работу. Вы также захотите создать оболочку .bat, которая устанавливает переключатель -logfile для указания на файл с именем задания, отметкой времени и другой информацией в нем. Примерно так на уровне М-кода.

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 или другим удаленным доступом.

Пакетная система Matlab в Windows, подобная этой, хрупка и трудна в управлении.Matlab для Windows принципиально не построен как система пакетного выполнения без управления; в нем широко распространены предположения об интерактивном графическом интерфейсе, и их трудно обойти. На низкоуровневых ошибках или ошибках лицензии выскакивают модальные диалоговые окна и ваша работа зависает. В последовательности запуска Matlab, похоже, есть условия гонки. Вы не можете установить статус выхода MATLAB.exe. Невозможно получить доступ к графическому интерфейсу Matlab для отладки ошибок, возникающих при выполнении задания. Файл журнала может быть буферизован, и вы потеряете вывод при зависаниях и сбоях. И так далее.

Серьезно подумайте о переносе на Linux. Matlab здесь гораздо больше подходит в качестве пакетной системы.

Если у вас есть деньги или свободные лицензии, вы также можете использовать набор инструментов и сервер распределенных вычислений Matlab для запуска кода на удаленных рабочих узлах. Это может работать для распараллеливания или для удаленных пакетных заданий.

3
ответ дан 15 December 2019 в 00:55
поделиться

Есть два недокументированных хака, которые, как сообщается, решают аналогичную проблему - они не гарантируют решения вашей конкретной проблемы, но их стоит попробовать. Оба они зависят от изменения файла java.opts :

  1. -Dsun.java2d.pmoffscreen = false Установка этого параметра устраняет проблему чрезмерной медлительности графического интерфейса при запуске Matlab. на удаленном компьютере Linux / Solaris.

  2. -Djava.compiler = NONE Этот параметр отключает JITC-компилятор Java. Обратите внимание, что это не влияет на интерпретатор Matlab JITC. Эффект аналогичен запуску Matlab с параметром командной строки «–nojvm». Обратите внимание, что это предотвращает многие возможности графического интерфейса пользователя Matlab . К сожалению, в некоторых случаях альтернативы нет. Например, при запуске на удаленной консоли или при запуске выпусков Matlab до 2007 г. на компьютерах Mac на базе Intel . В таких случаях использование недокументированной опции командной строки '-noawt', которая включает JVM, но предотвращает использование графического интерфейса JAVA, является предлагаемым компромиссом .

1
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: