7-02-2012, 02:31 (-0800); Alaios escriu:
> I would like to thank you Ernest for your answer. I guess that this
> is gonna be faster as right now R only sees one core. In my work
> there is a system with 64 cores and you can see only one working. If
> I understand it right a [m,n][n,k] matrix multiplication can be
> split into rows (from first matrice) and columns (from the second
> matrice) and then combine all the local results of each cpu
> together.
> 
> Would that be too weird for mclapply to handle?

I never used mclapply, but anyway here's a matrix multiplication
function that uses lapply. Because the two lapply's are nested I don't
think you can parallelize the two... I would only make the second one
work with multiple cores

mmult <- function(a, b) {
  a <- as.matrix(a)
  b <- as.matrix(b)
  if (ncol(a) != nrow(b))
    stop('non-conforming matrices')
  out <- lapply(1:ncol(b), function(j)
                lapply(1:nrow(a), function(i) sum(a[i,] * b[,j])))
  array(unlist(out), c(nrow(a), ncol(b)))
}

Also, I'm pretty sure that there are better algorithms.

If you do this it would be interesting if you measured the execution
time of the different alternatives and post the results :)

-- 
Cheers,
Ernest

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to