Как сделать так, чтобы R воспользовался преимуществом сервера с высокой памятью и большим процессором? - PullRequest
22 голосов
/ 22 июня 2010

Итак, я наконец-то понял, как заставить мои R-скрипты работать в облаке Amazon EC2. Я использую AMI с 26 ECU, 8 ядрами и 69 гигабайтами оперативной памяти.

Затем я делю свой код на несколько сценариев и запускаю каждый из них в экземпляре R. С сервером такого размера я могу легко запускать 20-40 сценариев одновременно, каждый из которых выполняет несколько 1000 имитаций.

Что я хотел бы знать, так это то, что R изначально использует все эти вычислительные мощности. Должен ли я установить пакеты, которые специально говорят R использовать всю эту дополнительную память / несколько процессоров? Я видел эту страницу и некоторые пакеты (по крайней мере из описания) кажущиеся многообещающими. Но я не могу понять, как включить это в мой код. Кто-нибудь может пролить больше света на это?

Ответы [ 2 ]

18 голосов
/ 23 июня 2010

Вы можете посмотреть примеры из моего учебника Введение в высокопроизводительные вычисления с R , несколько версий которого есть на этой странице .

.Самый быстрый способ использования нескольких ядер - это (превосходный) пакет multicore , у вас не должно быть ничего особенного, чтобы воспользоваться преимуществами барана, который у вас есть. многоядерный связывается с foreach через doMC , но вы, конечно, можете просто использовать функцию mclapply() напрямую.

16 голосов
/ 23 июня 2010

Комментарии Дирка размещены на многоядерном / foreach / doMC.

Если вы выполняете тысячи симуляций, возможно, вы захотите воспользоваться услугой Amazon Elastic Map Reduce (EMR).Когда я захотел масштабировать моё моделирование в RI, я начал с огромных экземпляров EC2 и многоядерного пакета (как и вы!).Все прошло хорошо, но я набрался к черту счет EC2.Мне действительно не нужна была вся эта оперативная память, но я платил за нее.И моя работа заканчивалась в 3 часа ночи, тогда я не входил в офис до 8 часов утра, поэтому я заплатил за 5 часов, которые мне не нужны.

Затем я обнаружил, что могу использовать сервис EMR, чтобы запустить 50 дешевых маленьких экземпляров Hadoop, запустить моё моделирование и затем автоматически отключить их!Я полностью отказался от запуска своих симов на EC2 и теперь использую EMR почти исключительно.Это сработало настолько хорошо, что моя фирма начинает тестировать способы перехода большей части нашей периодической деятельности по моделированию на EMR.

Вот сообщение в блоге , которое я написал, когда впервые начал использовать многоядерный режим в EC2.Затем, когда я обнаружил, что могу сделать это с помощью Amazon EMR, я написал сообщение о последующей деятельности .

РЕДАКТИРОВАТЬ: с этого поста я работал над пакетом для облегчения использования EMR с R для функций параллельного применения.Я назвал проект Segue, и он в Google Code .

Дальнейшее обновление: С тех пор я не рекомендовал Segue, потому что есть гораздо лучшие и более зрелые предложения для доступа к сервисам Amazon от R.

...