Я использую класс TreeBagger
, предоставляемый Matlab (R2014a & b) в сочетании с панелью распределенных вычислений. У меня есть кластер local
с 30 рабочими, на машине с Windows 7 с 40 ядрами.Почему TreeBagger в Matlab 2014a/b использует только несколько работников из параллельного пула?
я называю TreeBagger
конструктор для создания регрессионной леса (ансамбль, содержащий 32 деревьев), передавая options
структуру с 'UseParallel'
набором для 'always'
.
Однако TreeBagger
, по-видимому, использует только 8 рабочих, из 30 доступных (судя по использованию ЦП на процесс, наблюдаемому с помощью диспетчера задач). Когда я пытаюсь проверить бассейн с простой parfor
петли:
parfor i=1:30
a = fft(rand(20000));
end
Тогда все 30 работников заняты.
Мой вопрос: (Как) могу ли я заставить TreeBagger
использовать все доступные ресурсы?
Заключительное предположение, однако, на основе документации для опции «UseParallel» «если паркур Parallel Computing Toolbox открыт», это может быть меньше работников, поскольку оно предназначено для работы с Parallel Computing Toolbox, а не с помощью Distributed Computing Toolbox и так как это может быть ограничено меньшим количеством (8 работников, похоже, были знакомы, но я считаю, что его 12 в настоящее время) – RTL
Я думаю, что в какой-то момент было просто переименование между «параллельным вычислительным инструментом» и «распределенным вычислительным инструментом» - R2014a и b не ограничьте число рабочих до 12. Насколько я могу судить, перейдя через код, 'TreeBagger' просто вызывает' parfor'. –
Кажется, немного отстает от времени ... Я полностью согласен с тем, что проверил источник: «TreeBagger» называет «smartForSliceout» для основного цикла, который использует «parfor» и 'getParallelPoolSize' (который в основном является обертка для 'gcp'), чтобы определить размер пула ... Поэтому я не могу понять, почему все работники не заняты ... информация в вопросе указывает, что 30 рабочих активны (если только некоторая внутренняя распараллеливание в' fft' не скрывает факт, что пул меньше 30 - это было бы просто проверить с помощью 'gcp') – RTL