Выделенная распределенная система для обработки заданий Matlab - PullRequest
2 голосов
/ 19 сентября 2011

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

Ответы [ 2 ]

2 голосов
/ 26 сентября 2011

Я потратил много времени на изучение этой самой проблемы, и короткий ответ: нет, не возможно.

Есть два длинных ответа.Во-первых, если вы ограничены использованием Matlab, то все дороги ведут обратно в MathWorks.Одна возможность состоит в том, что вы можете скомпилировать свой код, однако вам нужно будет купить компилятор у Mathworks, а затем вы можете запустить скомпилированный код в любой инфраструктуре сетки, например, в Hadoop.

Во-вторых,по этой причине я обнаружил, что гораздо лучше просто перенести код на другой язык, обычно с открытым исходным кодом.Для работы, которой я обычно занимаюсь, Octave - плохая замена Matlab.Вместо этого R и Python отлично подходят для большинства одинаковых функций.Лично я больше склоняюсь к R, чем к Python, но это потому, что R лучше подходит для этих приложений (т.е. они очень статистичны по своей природе).

Я портировал лот кода Matlab для R, и это не так уж плохо.Однако в целом перенос на Python будет проще, и существует очень большое сообщество беженцев Matlab, которое перешло на Python.

После того, как вы попали в Python или R, для MPI есть много вариантов.многоядерные инструменты, распределенные системы, инструменты для графических процессоров и многое другое.Фактически, вы можете найти миграцию проще, написав некоторые из распределенных функций на Python или R, загрузив простую в использовании сеточную систему, и затем Matlab отправит задание на сервер.Ваш локальный код может быть таким же, но тогда вы сможете работать только с портированными частями, которые вам, вероятно, придется посвятить некоторое время написанию в Matlab.

0 голосов
/ 26 сентября 2011

Я бы не сказал, что это абсолютно невозможно; Вы можете использовать сокеты TCP / IP для создания клиент-серверного приложения (вы найдете множество реализаций MEX для сокетов BSD на File Exchange ).

Архитектура проста: ваш основной клиентский скрипт MATLAB отправляет задания (код вместе с сериализованными необходимыми данными) на узлы для оценки и отправки результатов после завершения. Этим узлам будут распределены экземпляры MATLAB, выполняющие серверную часть, которая прослушивает соединения и выполняет все, что получает через функцию EVAL.

Очевидно, что дело в написании кода, который можно разбить на разбиваемые задачи.

Это не так сложно, как то, что предлагает Distributed Computing Toolbox, но в основном делает то же самое ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...