R Снегопад - вызвать параллельную функцию в параллельной функции?

Недавно я начал использовать пакет Snowfall в R. У меня он успешно работает в довольно сложной реализации, как показано ниже (с параллельной обработкой цикла y):

increment x from 1:100 {
    increment y from 1:100 {
        increment z from 1:20 { }
        increment q from 1:20 { }
    }
}

Я использую это на компьютере с 2 или 4 процессорами. Теоретически я мог бы запустить циклы x, y, z и q параллельно. поэтому запустите счетчик x параллельно, затем для каждого параллельного процесса x запустите y параллельно и т. д.

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


person billelev    schedule 12.09.2013    source источник


Ответы (1)


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

Я написал виньетку о параллельном запуске вложенных циклов: Вложенные циклы по каждому элементу < / а>. Хотя вы не используете foreach, вы можете найти его полезным.

person Steve Weston    schedule 12.09.2013