2
votes

Graalvm - Intégration avec RStudio

Parmi les projets qui visent à accélérer le langage R, FastR qui utilise actuellement la version 3.5.1 du langage R avec GraalVM est celui qui me semble le plus développé et compatible avec la version la plus récente du R. < / p>

Quelqu'un saurait-il s'il existe un moyen d'intégrer FastR à RStudio?

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


0 commentaires

3 Réponses :


3
votes

À ce stade, RStudio ne prend pas en charge FastR. Le problème est que RStudio utilise certains détails d'implémentation interne de GNU-R et il est difficile pour FastR de les émuler correctement, mais nous prévoyons de prendre en charge cette "API" à terme.

Vous pouvez utiliser FastR à partir de Plug-in GraalVM pour Visual Studio Code . Il prend également en charge le débogage et le support R est basé sur ce plugin de code R Visual Studio a >.

Une autre possibilité est d'utiliser FastR de GNU-R via le cluster PSOCK en utilisant le package fastRCluster, qui peut être installé (par exemple dans RStudio) en utilisant:

devtools::install_github('oracle/fastr/com.oracle.truffle.r.pkgs/fastRCluster')


6 commentaires

Une chose que j'ai remarquée est que FastR n'utilise pas OpenBLAS par défaut. Peut-être que cela pourrait être défini par défaut car BLAS est plutôt inefficace par rapport à OpenBLAS.


J'ai essayé de pointer vers le FastR de GraalVM via un lien symbolique et j'obtiens Ce site ne peut pas être atteint. 127.0.0.1 a refusé de se connecter . J'ai trouvé que, lors du démarrage, "RStudio utilise une connexion localhost pour lier votre session R avec l'IDE RStudio". Vous savez si cela pourrait être lié à ce que vous avez mentionné dans votre réponse ou si cela est dû à une autre raison?


@HemersonTacon RStudio utilise deux processus indépendants: l'un vous montre l'interface utilisateur et l'autre exécute réellement R via API d'intégration R . FastR implémente cette API, mais elle ne fonctionne pas encore complètement. Si vous vouliez essayer ceci, vous auriez besoin de compiler RStudio avec GNU-R remplacé par FastR (je peux vous donner plus de détails si vous êtes intéressé à poursuivre cela).


Heureux de le savoir. Pouvez-vous me donner plus de détails?


Fondamentalement, vous suivriez la documentation de RStudio building à partir des sources pour la construire dans le configuration du serveur, mais lors de l'exécution de CMake , vous passez l'option supplémentaire -DCMAKE_PREFIX_PATH = / path / to / fastr / build . Ensuite, lorsque vous démarrez rsession , incluez le répertoire bin de FastR dans $ PATH et exportez également R_HOME pointant vers l'accueil de FastR. Vous avez besoin d'une version de développement de FastR pour cela. L'essentiel est que l'exécutable rsession soit lié à la libR.so de FastR. Notez que rsession échouera, en raison des problèmes mentionnés dans FastR


@HemersonTacon si vous parvenez à faire des progrès à ce sujet, veuillez partager vos résultats sur FastR GitHub :-)



1
votes

Une chose que j'ai remarquée est que FastR n'utilise pas OpenBLAS par défaut. Peut-être que cela pourrait être défini par défaut car BLAS est plutôt inefficace par rapport à OpenBLAS.

Considérez le code ci-dessous:

./Rscript /home/pedro/Downloads/code.R

   user  system elapsed 
910.810   6.393 928.996

Remarque : C'est un code simple qui ne fait que des inversions répétées d'une grande matrice. p >

Benchmarks

GNU R avec OPenBLAS:

> 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

Résultat :

[pedro@pedro-de Downloads]$ Rscript code.R 
     user    system   elapsed
   98.037     6.225    30.743 


0 commentaires

2
votes

Le problème peut être facilement résolu en créant un lien symbolique vers la bibliothèque OpenBLAS que j'ai compilée et sur ma machine, il se trouve dans le répertoire / opt / OpenBLAS / lib . À côté du répertoire / usr / lib / jvm / java-8-graal / jre / languages ​​/ R / lib , j'ai fait:

   user  system elapsed 
 98.425   2.393  38.324

R + GraalVM (FastR ):

sudo mv libRblas.so libRblas.so.keep
sudo ln -s /opt/OpenBLAS/lib/libopenblas_haswellp-r0.3.5.so libRblas.so


2 commentaires

Merci de partager ceci. Le nombre peut s'améliorer un peu si vous exécutez le test de référence une deuxième fois, car FastR compile le code de manière dynamique pendant son exécution. Cependant, ceci est un exemple de benchmark, où FastR ne peut pas gagner beaucoup car à la fin FastR et GNU-R exécutent le même algorithme depuis la bibliothèque BLAS.


Exact. Les exemples exécutent des codes C. Le benchmark est proche de Julia et R, puisque inv dans Julia et résoudre dans R sont des fonctions qui imcoporent les codes C. Cependant, laisser OpenBLAS par défaut dans fastR est quelque chose d'intéressant. La communauté Julia vit en comparant Julia avec GNU R + BLAS tandis que Julia utilise LLVM et OpenBLAS. C'est très injuste. Quitter OpenBLAS par défaut serait un point important car de nombreux utilisateurs de R ne comprendraient pas que dans cet exemple la lenteur est due à BLAS et non à GraalVM. Meilleures salutations. Tout le meilleur pour le projet et le succès. Je vous remercie.