The computationally most intense functions qProb.3d()
, n.sim.cond.3d()
and reproduce.track.3d()
of the package are also implemented in a parallel version. On Unix systems this is done using a fork cluster. On Windows systems PSOCK cluster is used.
Definition of start conditions and parameters:
Get movement characteristics (P
) from the example trajectory and simulate a Unconditional Eprircal Random Walk (UERW) in order to extract the attraction term (Q
):
P <- get.track.densities.3d(niclas, heightDistEllipsoid = TRUE, DEM = dem)
uerw <- sim.uncond.3d(sim.locs*f, start = c(niclas$x[1], niclas$y[1], niclas$z[1]),
a0 = a0, g0 = g0, densities = P)
The parallel version of the qProb.3d()
function can be accessed by setting the parameter parallel = TRUE
:
Q <- qProb.3d(uerw, sim.locs, parallel = TRUE)
cerwList <- reproduce.track.3d(n.sim = 100, niclas, DEM = dem, parallel = TRUE)
And also for n.sim.uncond.3d()
:
cerwList <- n.sim.cond.3d(n.sim = 100, sim.locs, start=start, end=end,a0 = a0, g0 = g0,
densities=P, qProbs=Q, DEM = dem, parallel = TRUE)
Alternativly the number of nodes in the cluster can be specified by passing a number to the function: parallel = 4
. In this case a fork or PSOCK cluster with 4 nodes will be used. The maximum number of nodes is not allowed to be larger than the number of available cores (Hyper Threading included).
cerwList <- n.sim.cond.3d(n.sim = 100, sim.locs, start=start, end=end,a0 = a0, g0 = g0,
densities=P, qProbs=Q, DEM = dem, parallel = 4)
Note: If only a few tracks are simulated and the track length is short sim.locs < 30
, then it is faster in many cases to stay with the single core version of the function, especially on Windows systems, where setting up clusters takes some time.