Nothing
test_that("shard_map gather views use a BLAS-3 packed path with zero view materialization", {
skip_on_cran()
pool_stop()
shard:::view_reset_diagnostics()
set.seed(1)
n <- 250L
p <- 10L
v <- 60L
X <- matrix(rnorm(n * p), nrow = n)
Y <- matrix(rnorm(n * v), nrow = n)
colnames(X) <- paste0("x", seq_len(ncol(X)))
colnames(Y) <- paste0("y", seq_len(ncol(Y)))
Xsh <- share(X, backing = "mmap")
Ysh <- share(Y, backing = "mmap")
# Each shard is a "searchlight": a small, non-contiguous set of columns.
idxs <- replicate(12, sort(sample.int(ncol(Y), 7)), simplify = FALSE)
shards_g <- shards_list(idxs)
res <- shard_map(
shards_g,
borrow = list(X = Xsh, Y = Ysh),
fun = function(shard, X, Y) {
vY <- view(Y, cols = shard$idx, type = "auto")
shard:::view_xTy(X, vY)
},
workers = 2,
diagnostics = TRUE
)
expect_true(succeeded(res))
cr <- copy_report(res)
expect_gt(cr$view_created %||% 0L, 0L)
expect_equal(cr$view_materialized %||% 0L, 0L)
expect_equal(cr$view_materialized_bytes %||% 0, 0)
expect_gt(cr$view_packed_bytes %||% 0, 0)
# Gather packing reuses worker-local scratch buffers.
expect_true(is.list(res$diagnostics$scratch_stats))
expect_gt(res$diagnostics$scratch_stats$misses %||% 0L, 0L)
expect_gt(res$diagnostics$scratch_stats$hits %||% 0L, 0L)
mats <- results(res)
for (i in seq_along(mats)) {
idx <- idxs[[i]]
expect_equal(mats[[i]], crossprod(X, Y[, idx, drop = FALSE]), tolerance = 1e-10)
}
pool_stop()
})
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.