Ошибка использования пула Matlab из Java в Linux - PullRequest
0 голосов

Мне нужно использовать библиотеку MATLAB, скомпилированную в файл JAR, в моем собственном приложении Java. Эта библиотека использует parpool и имеет несколько parfor операторов. Мы можем использовать этот пример в качестве теста.

В Windows это работает. В Linux (Ubuntu xenial) я получаю сообщение об ошибке типа this , но не то же самое:

Starting parallel pool (parpool) using the 'local_mcruserdata' profile ...

Error using parpool (line 104)
Failed to start a parallel pool. (For information in addition to the causing error, validate the profile 'local_mcruserdata' in the Cluster Profile Manager.)

Error in sample_pct (line 11)


Caused by:
    Error using parallel.internal.pool.InteractiveClient>iThrowWithCause (line 666)
    Failed to initialize the interactive session.
        Error using parallel.internal.pool.InteractiveClient>iThrowIfBadParallelJobStatus (line 767)
        The interactive communicating job failed with no message.

The error is com.mathworks.toolbox.javabuilder.MWException: Failed to start a parallel pool. (For information in addition to the causing error, validate the profile 'local_mcruserdata' in the Cluster Profile Manager.)

Мой MATLAB - 9.2.0.538062 (R2017a), а мой JDK - 1.8.0_171 x86_64 в обеих системах.

Если я прокомментирую строку 11 (вызов функции пула), ошибка исчезнет, ​​но оператор parfor не создаст лишних рабочих.

Это известная ошибка, и можно ли ее исправить?

1 Ответ

0 голосов

После добавления setSchedulerMessageHandler(@disp); setenv('MDCE_DEBUG','true') к примеру (как это было указано в комментарии) я получил сообщение:

matlabroot/bin/glnxa64/ctfxlauncher: error while loading shared libraries: libmwmclmcrrt.so.9.2: cannot open shared object file: No such file or directory

find matlabroot -name libmwmclmcrrt.so.9.2 дает matlabroot/runtime/glnxa64/libmwmclmcrrt.so.9.2

Добавление каталога matlabroot/runtime/glnxa64 в LD_LIBRARY_PATH помогло!

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