I have created parallel workers (all running on the same machine) using:
MyCluster = makeCluster(8)
How can I make every of these 8 nodes source an R-file I wrote? I tried:
clusterCall(MyCluster, source, "myFile.R")
clusterCall(MyCluster, 'source("myFile.R")')
And several similar versions. But none worked. Can you please help me to find the mistake?
Thank you very much!
The following code serves your purpose:
Also you can use
clusterEvalQ()
to do the same thing:However, there is subtle difference between the two methods.
clusterCall()
runs a function on each node whileclusterEvalQ()
evaluates an expression on each node. If you have a variable list of files to source,clusterCall()
will be easier to use sinceclusterEvalQ(cl,expr)
will regard anyexpr
as an expression so it's not convenient to put a variable there.If you use a command to source a local file, ensure the file is there.
Else place the file on a network share or NFS, and source the absolute path.
Better still, and standard answers, write a package and have that package installed on each node and then just call
library()
orrequire()
.