Я начал использовать пакет doMC
для R в качестве параллельного бэкенда для распараллеленных подпрограмм plyr
.
Кажется, что само распараллеливание работает нормально (хотя мне еще предстоит правильно измерить ускорение), моя проблема в том, что ведение журнала теперь асинхронно и сообщения из разных ядер смешиваются друг с другом. Я мог бы создать разные лог-файлы для каждого ядра, но мне кажется, что более подходящее решение - просто добавить разные метки для каждого ядра. В настоящее время я использую пакет log4r
для своих нужд.
Я помню, что при использовании MPI каждый процессор получал звание, что было способом отличить каждый процесс друг от друга, так есть ли способ сделать это с doMC
? У меня была идея извлечь PID, но это кажется грязным и будет меняться для каждой итерации.
Я открыт для идей, поэтому любые предложения приветствуются.
РЕДАКТИРОВАТЬ (2011-04-08): Исходя из предложения одного ответа, у меня все еще остается проблема правильного определения того, в каком подпроцессе я сейчас нахожусь, так как мне бы потребовались отдельные замыкания для каждого log()
вызовите, чтобы он записал в правильный файл, иначе у меня будет одна log()
функция, но внутри есть некоторая логика, определяющая, к какому файлу журнала добавляться. В любом случае, мне все еще нужен какой-нибудь способ маркировки текущего подпроцесса, но я не уверен, как это сделать.
Есть ли эквивалент функции mpi_rank()
в библиотеке MPI?