Graalvm - интеграция с RStudio - PullRequest
1 голос
/ 17 апреля 2019

среди проектов, направленных на ускорение языка R, FastR, который в настоящее время использует версию 3.5.1 языка R с GraalVM, кажется мне более развитым и совместимым с самой последней версией R.

Кто-нибудь знает, есть ли способ интеграции FastR с RStudio?

GraalVM + R (FastR): https://www.graalvm.org/docs/reference-manual/languages/r/.

Ответы [ 3 ]

3 голосов
/ 17 апреля 2019

На данный момент RStudio не поддерживает FastR. Проблема заключается в том, что RStudio использует некоторые внутренние детали реализации GNU-R, и FastR сложно эмулировать их должным образом, но в конечном итоге мы планируем поддерживать этот «API».

Вы можете использовать FastR из этого плагина кода Visual Studio . Вам просто нужно указать путь к исполняемому файлу FastR вместо GNU-R. В этой настройке работает даже отладка через Chrome DevTools.

Другая возможность - использовать FastR из GNU-R через кластер PSOCK. Скоро мы выпустим пакет, который сделает это максимально простым и удобным.

2 голосов
/ 17 апреля 2019

Эту проблему легко решить, создав символическую ссылку на библиотеку 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

R + GraalVM (FastR):

   user  system elapsed 
 98.425   2.393  38.324
1 голос
/ 17 апреля 2019

Одна вещь, которую я заметил, заключается в том, что FastR не использует OpenBLAS по умолчанию. Возможно, это может быть установлено по умолчанию, поскольку BLAS довольно неэффективен по сравнению с OpenBLAS.

Рассмотрим код ниже:

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))

Примечание : Это простой код, который делает только повторные обращения большой матрицы.

Тесты

GNU R с OPenBLAS:

> 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 

R + GraalVM (FastR):

> 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
...