什么决定MaxAllowedNumWorkers?

时间:2014-06-13 00:46:00

标签: matlab matlabpool

我想matlabpool open 24。由于我机器中NumWorkers的默认值为12,因此我run

myCluster = parcluster('local');
myCluster.NumWorkers = 12;  % 'Modified' property now TRUE
saveProfile(myCluster);     % 'local' profile now updated,
                            % 'Modified' property now FALSE  

我收到错误:

Error using parallel.cluster.Local/hSetProperty (line 258)
NumWorkers must be an integer from 1 to 12.

我在parallel.cluster.Local / hSetProperty(第258行)注释掉绑定检查:

case 'NumWorkers'
%                     if value > obj.MaxAllowedNumWorkers
%                         error(message('parallel:cluster:LocalInvalidNumWorkers', obj.MaxAllowedNumWorkers));
%                     else
                        obj.LocalSched.setMaximumNumberOfWorkers( double( value ) );
%                     end

我收到错误:

Error using parallel.cluster.Local/hSetProperty (line 260)
Java exception occurred:
java.lang.IllegalStateException: Too many licenses requested

    at com.mathworks.toolbox.distcomp.local.LocalScheduler.setMaximumNumberOfWorkers(LocalScheduler.java:89)

我对错误感到惊讶"请求的许可证太多"。在我的一台机器MaxAllowedNumWorkers是512(R2014a,Windows 7 SP1 x64 Ultimate),而在另外两台MaxAllowedNumWorkers只有12(R2012a,Ubuntu 12.04)。

MaxAllowedNumWorkers是否从R2012a变为R2014a?是否存在具有不同MaxAllowedNumWorkers的不同类型的许可证?此外,在MaxAllowedNumWorkers仅为12的机器上,我可以同时在许多其他机器(超过100台)上使用许可证(计算机集群),因此我不理解MaxAllowedNumWorkers的哈希限制。

1 个答案:

答案 0 :(得分:3)

确实如此。 2014版本中删除了每个许可证允许的本地工作人员数量限制。请参阅release notes。这只是2014年之前许可证的限制;这就是为什么你在拥有2012年的机器上看到它的原因,而不是那些拥有2014年的机器。