Параллельная обработка в R 2.11 Windows 64-bit с использованием SNOW не совсем работает - PullRequest
3 голосов
/ 12 мая 2010

Я использую 64-битную версию R 2.11 на компьютере с WinXP64 с 8 процессорами.С R 2.10.1 следующий код породил 6 процессов R для параллельной обработки:


require(foreach)
require(doSNOW)
cl = makeCluster(6, type='SOCK')
registerDoSNOW(cl)
bl2 = foreach(i=icount(length(unqmrno))) %dopar% {
    (Some code here)
}
stopCluster(cl)

Когда я запускаю тот же код в R 2.11 Win64, процессы 6 R не создаются, и код зависает.Мне интересно, если это проблема с портом SNOW до 2.11-64bit, или требуется какой-либо дополнительный код с моей стороны.Спасибо

Кстати, это отлично работает на моей многоядерной машине, дома работающей с 64-битной Ubuntu Karmic и R 2.11.К сожалению, я должен работать на Win64 на работе

Ответы [ 2 ]

1 голос
/ 04 сентября 2011

Это старый вопрос, но я столкнулся с такими же проблемами с R-2.13.1 64 на 64-битной Win.

doSNOW работал нормально с 32-битными R, но не с 64-битными R, а также зависал на "cl = makeCluster (6, type = 'SOCK')".

Чтобы решить эту проблему, я в итоге добавил «C: \ Program Files \ R \ R-2.13.1 \ bin \ x64» в переменную окружения% PATH% (win + pause / расширенные настройки системы / advanced / переменные среды / системные переменные). Убедитесь также, что разрешены подключения R в брандмауэре Windows, и что C: \ Program Files \ R \ R-2.13.1 \ bin содержит копию 32-битной версии R.exe и Rscript. Отлично (не x64).

После этого при запуске makeCluster () запускаются 12 процессов, 6 32 бита и 6 64 бита, но при вычислениях используется только 64 бита.

1 голос
/ 01 июля 2010

Код, кажется, работает здесь.

R version 2.11.0 (2010-04-22) 
x86_64-pc-mingw32 
other attached packages:
[1] doSNOW_1.0.3    snow_0.3-3      foreach_1.3.0   codetools_0.2-2
[5] iterators_1.0.3
loaded via a namespace (and not attached):
[1] tools_2.11.0

Проверьте ваш sessionInfo (), чтобы убедиться, что ваши версии совпадают с моими. Я заметил одну вещь: на моей машине с Windows 7 первая попытка makeCluster сделала запрос на исключение брандмауэра. Если вы явно не учитываете связь между сокетами, возможно, именно поэтому она зависает. Открытые по умолчанию (безобразно, как есть) все порты TCP и UDP при работе в частном профиле.

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