无法启动 matlabpool

Can't Get The matlabpool Started

我 运行 使用 MATLAB 大约一年半了。而且我一直在努力让 matlabpool 准备好几乎每三个月去一次。在我完全放弃之前,我决定寻求帮助。 :)

我的问题始于 matlabpool 命令。每当我输入 matlabpool 命令时,我都会得到这个:

One or more output arguments not assigned during call to "system_dependent".

Error in matlabpool>iIsOnClient (line 73)
onclient = ~system_dependent('isdmlworker');

Error in matlabpool>iVerifyJava (line 64)
if iIsOnClient()

Error in matlabpool (line 10)
iVerifyJava();

经过一些研究和不眠之夜,我发现必须用 "Cluster Profile Manager" 来解决问题。但我也从来没有机会看到它起作用。这是我从 Parallel 面板单击 Cluster Profile Manager 后得到的结果:

com.mathworks.jmi.MatlabException: Feature isdmlworker not found
    at com.mathworks.jmi.NativeMatlab.SendMatlabMessage(Native Method)
    at com.mathworks.jmi.NativeMatlab.sendMatlabMessage(NativeMatlab.java:266)
    at com.mathworks.jmi.MatlabLooper.sendMatlabMessage(MatlabLooper.java:120)
    at com.mathworks.jmi.Matlab.mtFeval(Matlab.java:1710)
    at com.mathworks.jmi.MatlabWorker.feval(MatlabWorker.java:197)
    at com.mathworks.toolbox.distcomp.ui.profile.model.MatlabProfileManager.runOnMatlabThread(MatlabProfileManager.java:80)
    at com.mathworks.jmi.MatlabWorker.run(MatlabWorker.java:79)
    at com.mathworks.jmi.NativeMatlab.dispatchMTRequests(NativeMatlab.java:475)
Attempt to reference field of non-structure array.

Error in parallel.internal.ui.AbstractValidationManager (line 20)
            obj.Validator.addlistener('ValidationStarted', ...

Error in parallel.internal.ui.ValidationManager (line 21)
            obj@parallel.internal.ui.AbstractValidationManager();

com.mathworks.jmi.MatlabException: Attempt to reference field of non-structure array.
    at com.mathworks.jmi.NativeMatlab.SendMatlabMessage(Native Method)
    at com.mathworks.jmi.NativeMatlab.sendMatlabMessage(NativeMatlab.java:266)
    at com.mathworks.jmi.MatlabLooper.sendMatlabMessage(MatlabLooper.java:120)
    at com.mathworks.jmi.Matlab.mtFevalConsoleOutput(Matlab.java:1778)
    at com.mathworks.jmi.MatlabWorker.feval(MatlabWorker.java:195)
    at com.mathworks.jmi.MatlabWorker.feval(MatlabWorker.java:172)
    at com.mathworks.toolbox.distcomp.ui.profile.model.ValidationManager.runOnMatlabThread(ValidationManager.java:45)
    at com.mathworks.jmi.MatlabWorker.run(MatlabWorker.java:79)
    at com.mathworks.jmi.NativeMatlab.dispatchMTRequests(NativeMatlab.java:475)

收到此消息后,Cluster Profile Manager 弹出,但除了 "wait" 标志外没有显示任何内容。我检查了我的分布式计算许可证,看起来也不错。

license checkout Distrib_Computing_Toolbox

命令returns1.

顺便说一下,还有一条错误消息,我怀疑它与我的某种问题有关。我在每次 MATLAB 启动时都会得到这个:

Error using feature
Feature isdmlworker not found

Error in matlabrc (line 187)
if ~(ismcc || isdeployed || feature('isdmlworker')) && usejava('jvm')

除此之外;每当我尝试从 Environment 选项卡打开 "Parallel Preferences" 时,我都会收到此消息:

com.mathworks.jmi.MatlabException: Feature isdmlworker not found
    at com.mathworks.jmi.NativeMatlab.SendMatlabMessage(Native Method)
    at com.mathworks.jmi.NativeMatlab.sendMatlabMessage(NativeMatlab.java:265)
    at com.mathworks.jmi.MatlabLooper.sendMatlabMessage(MatlabLooper.java:120)
    at com.mathworks.jmi.Matlab.mtFeval(Matlab.java:1619)
    at com.mathworks.jmi.MatlabWorker.feval(MatlabWorker.java:197)
    at com.mathworks.toolbox.distcomp.ui.profile.model.MatlabProfileManager.runOnMatlabThread(MatlabProfileManager.java:72)
    at com.mathworks.jmi.MatlabWorker.run(MatlabWorker.java:79)
    at com.mathworks.jmi.NativeMatlab.dispatchMTRequests(NativeMatlab.java:440)

我试图找到 system_dependent.m 函数,但它似乎不存在。我得到的错误的其他常见点,函数 "feature.m",选项 "isdmlworker" 是我无法理解的其他谜团找不到任何类型的信息。

如果有人能帮助我解决我在启动 MATLAB 的分布式计算系统时遇到的问题,我将不胜感激。

编辑:我正在开发 Ubuntu 14.04,我的 MATLAB 版本是 R2014a。

这似乎是您特定安装 Ubuntu 14.04 的问题。鉴于错误发生在 com.mathworks.jmi.NativeMatlab.dispatchMTRequests().

中,它可能与 matlabpool 如何在 R2014a 中生成工作线程有关

matlabpool 已经过测试,可以在 Ubuntu 15.04 和 15.10 上正常工作。这可能不是理想的解决方案,但将 Ubuntu 升级到 15.04 或 15.10 并重新安装 MATLAB R2014a 应该可以解决问题。