This page documents the function pmm for parallelized matrix
multiplication and the function control.pcmp, which controls
the behaviour of pmm and other functions that execute tasks in
parallel.
pmm(A, B, control = control.pcmp())control.pcmp(pmm.ncores = 1, gcr.ncores = 1, max.ncores = detectCores(),
f = 1, sfstop = FALSE, allow.recursive = TRUE,
fork = !identical(.Platform[["OS.type"]], "windows"), ...)
matrices to be multiplied.
a list of with the arguments pmm.ncores,
gcr.ncores, max.ncores, f, sfstop and
allow.recursive or a function such as control.pcmp that
generates such a list.
number (integer, default 1) of cores used for parallelized matrix multiplication.
number (integer, default 1) of cores used for parallelized computation of semi-variance matrix.
maximum number of cores (integer, default all cores of a machine) used for parallelized computations.
number (integer, default 2) of tasks assigned to each core in parallelized operations.
logical controlling whether the SNOW socket cluster is
stopped after each parallelized matrix multiplication on windows OS
(default FALSE).
logical controlling whether nested parallelized
computation should be allowed (default TRUE).
logical controlling whether forking should be used for
parallel computations (default TRUE on unix and FALSE on
windows operating systems). Note that settting fork == TRUE on
windows suppresses parallel computations.
further arguments, currently not used.
pmm:the matrix product A %*% B,
control.pcmp:a list with components
pmm.ncores, gcr.ncores, max.ncores, f,
sfstop, allow.recursive.
Parallelized matrix multiplication shortens computing time for large data
sets (\(n>1000\)). However, spawning child processes requires itself
resources and increasing the number of cores for parallel matrix
multiplication does not always result in reduced computing time. A
sensible default for the number of cores is likely
pmm.ncores=2.
Note, however, that very substantial reductions in computing time
results when one uses the OpenBLAS library instead of the
reference BLAS library that ships with R, see
http://www.openblas.net/ and R FAQ for your OS. With OpenBLAS no
gains are obtained by using more than one core for matrix
multiplication, and one should therefore use the default argument
pmm.ncores = 1 for control.pcmp().
max.ncores controls how many child processes are spawned in total.
This can be used to prevent that child processes spawn
themselves children which may result in a considerable number of child
processes.
georobIntro for a description of the model and a brief summary of the algorithms;
georob for (robust) fitting of spatial linear models.
# NOT RUN {
A <- as.matrix(dist(rnorm(2000)))
B <- as.matrix(dist(rnorm(2000)))
system.time(C <- pmm(A, B, control = control.pcmp(pmm.ncores = 1)))
system.time(C <- pmm(A, B, control = control.pcmp(pmm.ncores = 4)))
# }
Run the code above in your browser using DataLab