从大约一年半以来,我一直在运行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” 解决问题。但是我也从来没有机会看到它也能正常工作。这是从并行面板中单击集群配置文件管理器后得到的结果:
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$1.runOnMatlabThread(MatlabProfileManager.java:80)
    at com.mathworks.jmi.MatlabWorker$2.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)
            [email protected]();

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$1.runOnMatlabThread(ValidationManager.java:45)
    at com.mathworks.jmi.MatlabWorker$2.run(MatlabWorker.java:79)
    at com.mathworks.jmi.NativeMatlab.dispatchMTRequests(NativeMatlab.java:475)

收到此消息后,会弹出集群配置文件管理器,但除了“wait”符号外,实际上没有显示任何其他内容。我已经检查了自己的分布式计算许可证,而且看起来也不错。
license checkout Distrib_Computing_Toolbox

命令返回1。

顺便说一句,还有另一个错误消息,我怀疑与我的某种问题有关。我在每一个MATLAB入门中都得到了这一点:
Error using feature
Feature isdmlworker not found

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

除了所有这些;每当我尝试从环境选项卡打开“并行首选项”时,都会收到此消息:
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$1.runOnMatlabThread(MatlabProfileManager.java:72)
    at com.mathworks.jmi.MatlabWorker$2.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的特定安装有关。考虑到matlabpool中发生了错误,它可能与com.mathworks.jmi.NativeMatlab.dispatchMTRequests()在R2014a中产生工作线程的方式有关。

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

10-06 14:55