В MLR и ParallelsMap можно распараллелить несколько уровней? Например, mlr.tuneParams и mlr.benchmark - PullRequest
1 голос
/ 26 июня 2019

Я запускаю тест mlr для нескольких учеников (около 15 разных учеников) с вложенной повторной выборкой с использованием элемента настройки irace.У меня такой вопрос: возможно ли запустить два уровня параллелизации на parallelMap?

Если я использую уровень mlr.benchmark, чем быстрее учащиеся заканчивают первый и только те, кто требует вычислительных ресурсов, продолжают работать, по одному потоку для каждого,В итоге получается 4, возможно, 5 потоков.

Если я использую уровень mlr.tuneParams, управление настройкой irace порождает 6 потоков, оценивает все из них, а затем, когда все они заканчивают, создает 6 других.Я знаю, что этот метод является последовательным по своей природе.

Моя точка зрения заключается в том, что ядра процессоров используются не полностью.Например, если процессор имеет 12 ядер, я мог бы запустить двух учеников одновременно, причем каждый ученик использовал 6 ядер для настройки.

Сейчас я делаю это вручную: я создаю несколько сессий R и запускаю их отдельно.

Спасибо!

1 Ответ

1 голос
/ 26 июня 2019

Вы не можете распараллелить на нескольких уровнях в настоящее время с parallelMap. Аргумент level parallelMap::parallelStart() принимает только один уровень .

Это известное ограничение и, вероятно, больше не изменится в будущем. В mlr3 все уровни будут распараллелены с использованием пакета future.

Если в вашем коде есть вложенные вызовы parallelMap() без установки явного уровня, первый вызов в конвейере будет распараллелен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...