Nothing
test_that("block matrix multiplication", {
library(foreach)
n <- 10777
nrowsx <- 959
ncolsy <- 101
chunks <- 80 # applied to "n"
xchunks <- 2 # applied to "nrowsx"
ychunks <- 2 # applied to "ncolsy"
x <- matrix(rnorm(nrowsx * n), nrow=nrowsx)
y <- matrix(rnorm(n * ncolsy), nrow=n)
expected <- x %*% y
## test <- array(seq_len(27 * 31), c(27, 31))
## theirs <- iarray(test, c(2,1), chunks=c(4, 3))
## ours <- iteror(test, by=1, chunks=3) |> i_apply(iteror, by=2, chunks=4)
## ou <- ours()
## th <- theirs()
# This uses/demonstrates the "nesting" functionality of foreach.
# TODO: think of a better way to express blockwise matrix iteration
actual <- foreach(ia=(iteror(x, by=1, chunks=xchunks) |>
i_apply(iteror, by=2, chunks=chunks)),
.combine=rbind) %:%
foreach(a=ia, ib = (iteror(y, by=1, chunks=chunks) |>
i_apply(iteror, by=2, chunks=ychunks)),
.combine=`+`) %:%
foreach(b=ib, .combine=cbind) %do% {
a %*% b
}
expect_equal(actual, expected)
actual <- foreach(ib=(iteror(y, by=2, chunks=ychunks) |>
i_apply(iteror, by=1, chunks=chunks)),
.combine=cbind) %:%
foreach(b=ib, ia=(iteror(x, by=2, chunks=chunks) |>
i_apply(iteror, by=1, chunks=xchunks)),
.combine=`+`) %:%
foreach(a=ia, .combine=rbind) %do% {
a %*% b
}
expect_equal(actual, expected)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.