## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set(collapse = TRUE, comment = "#>") ## ----------------------------------------------------------------------------- library(RsimdDispatch) x <- as.raw(c(0, 1, 2, 3)) simd_set_backend("scalar") count_nonzero(x) candidate <- setdiff(simd_info()$available_backends, "scalar")[1] if (!is.na(candidate)) { simd_set_backend(candidate) count_nonzero(x) } simd_set_backend("auto") simd_backend() ## ----------------------------------------------------------------------------- simd_info()[c("compiled_backends", "cpu_supported_backends", "available_backends")] ## ----------------------------------------------------------------------------- simd_info()[c("compiled_backends", "simde_native_backends", "simde_version", "simde_commit")] ## ----------------------------------------------------------------------------- if (requireNamespace("bench", quietly = TRUE)) { bench_x <- rep(as.raw(c(0, 1, 2, 3, 0, 255, 7, 0)), length.out = 2^20) bench <- bench::mark( scalar = { simd_set_backend("scalar") count_nonzero(bench_x) }, auto = { simd_set_backend("auto") count_nonzero(bench_x) }, iterations = 5, check = TRUE ) simd_set_backend("auto") bench[, c("expression", "median", "itr/sec", "n_itr")] }