Я отправляю этот вопрос попросить совет относительно того, как оптимизировать использование нескольких процессоров от R на машине Windows XP.
В данный момент я создаю 4 сценария (каждый сценарий с, например, для (я в 1:100) и (я в 101:200), и т.д.), который я выполняю на 4 различных сессиях R одновременно. Это, кажется, использует весь доступный CPU.
Я однако хотел бы сделать это немного более эффективное. Одно решение могло состоять в том, чтобы использовать "doMC" и "foreach" пакет, но это не возможно в R на машине Windows.
например.
library("foreach")
library("strucchange")
library("doMC") # would this be possible on a windows machine?
registerDoMC(2) # for a computer with two cores (processors)
## Nile data with one breakpoint: the annual flows drop in 1898
## because the first Ashwan dam was built
data("Nile")
plot(Nile)
## F statistics indicate one breakpoint
fs.nile <- Fstats(Nile ~ 1)
plot(fs.nile)
breakpoints(fs.nile) # , hpc = "foreach" --> It would be great to test this.
lines(breakpoints(fs.nile))
Какие-либо решения или совет?
Для полноты, вот запрошенный ответ на комментарий Таля, который обеспечивает простую и переносимую альтернативу. Ответ состоит в запуске
> library(snow)
> help(makeCluster)
и выполнении первых трех строк кода из верхней части примеров: section:
> cl <- makeCluster(c("localhost","localhost"), type = "SOCK")
> clusterApply(cl, 1:2, get("+"), 3)
[[1]]
[1] 4
[[2]]
[1] 5
> stopCluster(cl)
> .Platform$OS.type
[1] "windows"
>
Было ли это действительно настолько сложным?
Дополнительные пакеты, такие как ] doSNOW , а после этого foreach может использовать это портативным способом.
Попробуйте параллельный бэкэнд doSNOW
- это "из коробки" поддерживается в Windows. Используйте его с блоком розеток для снега.
Вы можете попробовать doSMP
из REvolution Computing .
Для получения дополнительной информации см. Это сообщение в блоге:
Параллельная многоядерная обработка с R (в Windows)