0

Я решил настроить создание некоторых скриптов Python на тестовой стенде, которые будут использовать различные алгоритмы, разработанные несколькими разработчиками в различных средах для всех реализуются с помощью возможностей параллельного распределенного кластера IPython. Одной из таких условий является Matlab, но сценарий ресурса является достаточно общим для абстрактных правил из этого вопроса. Чтобы использовать скрипты Matlab для прототипирования, я решил использовать matlab engine for Python. Эти объекты движка будут создаваться в Python, но вместо того, чтобы откручивать один на единицу работы, я хотел бы повторно использовать механизмы Matlab, если это вообще возможно, чтобы избежать накладных расходов на создание и уничтожение этих мускулистых объектов ядра Matlab. Я еще рано изучаю параллельную документацию по IPython, но я думал, что сделаю упреждающий удар, чтобы получить обратную связь, поэтому я могу привлечь внимание к некоторым частям документации, как только я столкнусь с ними. Возможно, я даже ошибочно полагаю, что мне требуется несколько механизмов Matlab, чтобы избежать проблем с синхронизацией или проблемами с потоком с одним экземпляром ядра Matlab. Но общий вопрос заключается в том, что если у меня есть ресурс, который можно и нужно использовать повторно, аналогично чему-то, спрятанному в локальном хранилище потоков, так что, когда задачи и задания получат следующий рабочий блок, они повторно используют этот ресурс для выполнения своей работы. Как только больше нет единиц работы, этот ресурс может быть ранен и уничтожен при необходимости.Где и как разворачивать ресурсы многократного использования (matlab.engine) для кластера IPython Задачи

ответ

1

Не все это выдумало, но я опишу здесь, что я нашел до сих пор.

Итак, после создания движков и подключения к ним через прямой просмотр от клиента я могу выполнить любой код ole python во встроенном экземпляре Python, подключенном к движку, с помощью метода run. Это включает в себя создание MatLab двигателя для этого двигателя IPython ...

rc = parallel.Client() 
dview = rc[:] 

for ipEngine in dview : 
    ipEngine.run("import matlab.engine") 
    ipEngine.run("eng = matlab.engine.start_matlab('-noFigureWindows')") 

Я все еще нужно на самом деле сделать это и выяснить все переменные правила обзора в этой распределенной среде и как она соотносится с окружающей средой хранится на клиенте и о том, как перемещаться по конфликтам пространства имен, которые могут возникнуть, но это выглядит многообещающим до того, как все настроено в встроенном экземпляре python. Я буду развивать этот ответ, потому что ответы вступают в мои разработки.

Есть объекты pushing and pulling объектов, которые передают объекты Python, хотя я не уверен, как это будет работать на практике с помощью механизма matlab и всего пространства имен или даже в отношении среды удаленного компьютера и требования к тому, что matlab даже там будет установлен.

Существует известное ограничение для Matlab Engine для питона стоит о том, и здесь, который находится в главе 8 «MATLAB Engine для Темы Python» в Matlab External Interfaces документ в формате PDF:

Ограничения на MATLAB Engine для Python

  • MATLAB Engine для Python не поточно-
+0

выглядит, как вы могли lso use 'с dview.sync_imports(): import matlab.engine' как альтернативный способ продвижения импорта клиентам. Будет ли 'ipEngine.execute()' делать что-то другое, чем 'ipEngine.run()'? Смотрел [этот пост из MinRK] (https://minrk.github.io/scipy-tutorial-2011/basic_remote.html#execute-and-run). – Roland

+0

Это тоже хорошая техника. Мне еще предстоит выяснить, как она относится к установкам Matlab в моем кластере, я надеюсь избежать необходимости получения лицензий для всех кластерных машин или, по крайней мере, минимизировать количество необходимых лицензий.Я знаю, что IPython будет перенаправлять функции на модули через протокол zeroMQ, но если у этих функций есть внутренние потребности, которые удовлетворяются только на клиенте, я не думаю, что полные зависимости функции также переносятся в удаленные. К сожалению, у меня есть куча рефакторинговых предпосылок для работы с Matlab, прежде чем я начну экспериментировать – jxramos

+0

. Я согласен с тем, что вы не сможете получить доступ к нескольким одновременным экземплярам программного обеспечения, управляемого лицензией (он либо будет заблокирован узлом или менеджер лицензий откажется включить дополнительные экземпляры). – Roland

 Смежные вопросы

  • Нет связанных вопросов^_^