在旨在加速 R 语言的项目中,目前使用带有 GraalVM 的 R 语言版本 3.5.1 的 FastR 在我看来似乎更加开发并与最新版本的 R 兼容。
有人知道是否有任何方法可以将 FastR 与 RStudio 集成吗?
GraalVM + R (FastR):https ://www.graalvm.org/docs/reference-manual/languages/r/ 。
此时,RStudio 不支持 FastR。问题是 RStudio 使用了 GNU-R 的一些内部实现细节,FastR 很难正确模拟这些细节,但我们计划最终支持这个“API”。
您可以使用 GraalVM插件中的 FastR for Visual Studio Code。它还支持调试,并且 R 支持基于此 R Visual Studio 代码插件。
另一种可能性是使用 fastRCluster 包通过 PSOCK 集群从 GNU-R 使用 FastR,可以使用以下方法安装(例如在 RStudio 中):
devtools::install_github('oracle/fastr/com.oracle.truffle.r.pkgs/fastRCluster')
然后,您可以使用?fastRCluster
它来了解更多信息。
通过创建指向我编译的 OpenBLAS 库的符号链接并在我的机器上它位于/opt/OpenBLAS/lib
目录中,可以轻松解决该问题。在/usr/lib/jvm/java-8-graal/jre/languages/R/lib
目录里面,我做了:
sudo mv libRblas.so libRblas.so.keep
sudo ln -s /opt/OpenBLAS/lib/libopenblas_haswellp-r0.3.5.so libRblas.so
user system elapsed
98.425 2.393 38.324
我注意到的一件事是 FastR 默认不使用 OpenBLAS。也许这可以默认设置,因为与 OpenBLAS 相比,BLAS 效率相当低。
考虑下面的代码:
M <- matrix(runif(n = 5000^2, 0, 1), 5000, 5000)
inverse_loop <- function(matriz, n = 10){
for (i in 1:n){
solve(matriz)
}
}
system.time(inverse_loop(M))
注意:这是一个简单的代码,只对一个大矩阵进行重复求逆。
> sessionInfo()
R version 3.5.3 (2019-03-11)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Manjaro Linux
Matrix products: default
BLAS/LAPACK: /opt/OpenBLAS/lib/libopenblas_haswellp-r0.3.5.so
结果:
[pedro@pedro-de Downloads]$ Rscript code.R
user system elapsed
98.037 6.225 30.743
> sessionInfo()
FastR version 3.5.1 (2018-07-02)
Platform: x86_64-unknown-linux-gnu (64-bit)
Running under: Manjaro Linux
Matrix products: NULL
BLAS: /usr/lib/jvm/java-8-graal/jre/languages/R/lib/libRblas.so
LAPACK: /usr/lib/jvm/java-8-graal/jre/languages/R/lib/libRlapack.so
结果:
./Rscript /home/pedro/Downloads/code.R
user system elapsed
910.810 6.393 928.996