Запуск различных программ на нескольких ядрах

Надеюсь, это простой вопрос, на который я упустил ответ, но мои поиски этим утром оказались безрезультатными.

У меня на компьютере четыре ядра, и я хочу одновременно запускать разные программы (циклы) в R на нескольких ядрах. Если я открою четыре сеанса R, будут ли они автоматически размещены на разных ядрах, или мне нужно придумать способ сделать это с помощью снегопада?

Раньше я успешно использовал снегопад для запуска той же программы, но с другими значениями. Но позволит ли снегопад запускать совершенно разные программы на разных ядрах? Могу ли я настроить каждый цикл симуляции как отдельную функцию (например, func1, func2, func3, func4), а затем снегопад назначить каждую функцию отдельному ядру?

Спасибо за любую помощь


person user1399311    schedule 27.09.2012    source источник
comment
почему бы вам просто не провести эксперимент и посмотреть, что получится?   -  person Ben Bolker    schedule 27.09.2012
comment
Привет, Бен, к сожалению, я не могу провести надлежащий тест, так как нахожусь в середине довольно большой симуляции, на которой используются мои ядра. Пытаюсь спроектировать следующую симуляцию, пока работает текущая, чтобы быть готовым к работе. Похоже, я последую предложению Хенрика просто использовать несколько сеансов R без необходимости снегопада.   -  person user1399311    schedule 27.09.2012


Ответы (2)


Я не знаю, как это происходит в разных ОС, но в Windows об этом позаботится ваша ОС. Таким образом, вы можете открыть столько сеансов R, сколько хотите, и они будут распределены по ядрам (при этом каждый процесс будет занимать максимум одно ядро). Если вы откроете больше сеансов R, чем у вас есть ЦП, то очевидно, что некоторые из них не смогут использовать полный ЦП.

Так что здесь не нужно использовать снегопад.

person Henrik    schedule 27.09.2012
comment
Я не понимаю голосование против. Если у вас есть совершенно разные вещи для вычислений, snowfall или parallel не нужны и открываются разные консоли R, как это предлагается в ОП. Распределение по ядрам затем выполняется ОС. - person Henrik; 27.09.2012

Самый простой способ ответить на этот вопрос:

  1. Создайте четыре функции, выполнение каждой из которых занимает минуту или две.
  2. Используйте 1_
  3. Посмотрите на использование процессора вашего процессора.

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

Возможно, будет проще использовать пакет parallel, поставляемый с R 2.15.

person csgillespie    schedule 27.09.2012
comment
Я всегда утверждал, что parallel проще, потому что он а) поставляется со всеми последними версиями и б) фактически представляет собой переписывание / обзор кода лучших частей snow и multicore. - person Dirk Eddelbuettel; 27.09.2012
comment
Все последние версии - решающий аргумент. - person csgillespie; 27.09.2012