Я начинаю использовать doMPI
, и я использую пакет, который я определил сам.
Сначала у меня в файле должно быть выполнено:
library(doMPI)
cl <- startMPIcluster()
registerDoMPI(cl)
Примечание: Я не использую cl <- startMPIcluster(count)
, так как считаю, что лучше указать количество ядер "вне" функции, но мне не ясно, правильно ли делать cl <- startMPIcluster()
или нет.
И затем, после загрузки моего пакета через library(my_package)
myres <- foreach(t2 = 1550:1551) %dopar% {my_function(t2)}
с использованием mpirun
это привело к
Ошибка оценки: не удалось найти функцию "my_function"
Но функция my_function
распознается в кластере: когда я запускаю my_function
без MPI
, результаты верны.
Затем я изменил вызов на:
myres <- foreach(t2 = 1550:1551) %dopar% {my_package::my_function(t2)}
и затем он начал работать, поэтому добавление my_package::
позволило mpirun
понять, что такое my_function
.Что странно, так как я запускал перед библиотекой (my_package).
Но после начала запуска возникает другая ошибка:
"Ошибка оценки: не удалось найти функцию"my_function_2 "."
my_function_2
- это определенная функция в моем пакете.
Конечно, одной из возможностей может быть переход ко всем функциям в моем пакете, и когдаэто вызов другой функции, просто добавьте my_package::
.
Но я считаю, что это не то, что должно быть, поэтому я предполагаю, что есть основная ошибка / плохо использованная инструкция, которую я не вижу.
Есть идеи, что может быть не так?Заранее спасибо.