Распараллелить функцию MSGARCH (FitML) на R - PullRequest
0 голосов
/ 08 мая 2018

Я использую MSGARCH (пакеты R) для Windows 10

Я должен подгонять любую модель переключения Маркова много раз (12.500 с временем и для цикла) с этим кодом

X = CreateSpec(variance.spec = list(model = c()), 
               distribution.spec = list(distribution = c()))

Y = FitML(data, spec = X)

Как распараллелить последнюю функцию (FitML) ?? Я хотел бы запустить много функций FitML () для различных значений X

1 Ответ

0 голосов
/ 08 мая 2018

Если у вас уже есть список X: s, давайте назовем его Xs, тогда вы можете вызвать FitML() для каждого из элементов как:

Ys <- lapply(Xs, FUN = FitML)

Вышеуказанная функция применяется к элементам последовательно . Чтобы сделать то же самое параллельно, вы можете использовать пакетную часть future.apply экосистемы future (я автор). Следующее распараллеливается на вашем локальном компьютере и работает во всех операционных системах:

library(future.apply)
plan(multiprocess)

Ys <- future_lapply(Xs, FUN = FitML)

Если для FitML() есть компонент генерации случайных чисел (RNG), то вам нужно использовать:

Ys <- future_lapply(Xs, FUN = FitML, future.seed = TRUE)

чтобы убедиться, что вы используете правильные случайные числа.

Если вы не укажете plan() или не укажете plan(sequentially), он будет работать последовательно.

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