我开始使用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
。这很奇怪,因为我在 library(my_package) 之前运行过。
但是开始运行之后,又出现了一个错误:
“评估错误:找不到函数“my_function_2”。”
my_function_2
是我的包上定义的函数。
当然,一种可能性是转到我包中的所有函数,当调用另一个函数时,只需添加my_package::
.
但我相信这不是应该的,所以我猜有一个我看不到的潜在错误/错误使用的指令。
关于可能发生什么问题的任何想法?先感谢您。