我想要 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 行)中注释掉绑定(bind)检查:
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台)上使用license(计算机集群),所以不明白MaxAllowedNumWorkers的hash限制。

最佳答案

确实,确实如此。 2014 版本中删除了每个许可证允许的本地 worker 数量限制。请参阅 release notes 。这只是 2014 年之前的许可证施加的限制;这就是为什么你在有 2012 年的机器上看到它,但在有 2014 年的机器上看不到。

关于matlab - 什么决定了 MaxAllowedNumWorkers?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24196122/

10-12 06:06