This library provides an Rcpp
wrapper around Xsimd that is a modern, portable C++14
header-only library for SIMD intrinsics and parallelized, optimized math implementations.
library(RcppXsimd)
?supportsAVX
if (supportsAVX()) {
Sys.setenv(PKG_CPPFLAGS = "-mavx")
Rcpp::sourceCpp(verbose = TRUE, code='
// [[Rcpp::plugins(cpp14)]]
// [[Rcpp::depends(RcppXsimd)]]
#include <Rcpp.h>
#include "xsimd/xsimd.hpp"
// [[Rcpp::export]]
void demoAVX() {
xsimd::batch<double, 4> a(1.0);
xsimd::batch<double, 4> b(1.0);
Rcpp::Rcout << a << " + " << b << " = " << (a + b) << std::endl;
}')
demoAVX()
} else {
message("AVX is not supported")
}