GraalVM Rランタイム
GraalVMでは、Rプログラムを直接またはREPLモードで実行するためのGNU互換Rランタイムが提供されます。これは、比類のないパフォーマンスでRコードを実行でき、シームレスにGraalVMエコシステムと統合されます。GraalVMのRランタイム開発の背後にあるプロジェクト名は、FastRです。
ノート: GraalVM Rランタイムは現在試験段階と考えられており、Windows AMD64およびmacOS AArch64 (Apple Silicon)では使用できません。
Rのインストール
R言語のランタイムはデフォルトでは提供されず、GraalVMアップデータ (gu
)ツールを使用してGraalVMに追加できます:
gu install r
このステップの後、R
およびRscript
ランチャがJAVA_HOME/bin
ディレクトリで使用可能になります。
R言語のホーム・ディレクトリ(以降、$R_HOME
と呼びます)は、languages/R
にあります。
前提条件
GraalVMのRランタイムには、zlibとOpenMPランタイム・ライブラリが必要です。Zlibは、MacOSおよび最新のLinuxディストリビューションのデフォルト部分です。次のコマンドは、OpenMPランタイム・ライブラリをインストールする必要があります:
- Ubuntu 18.04および19.10:
apt-get install libgomp1
- Oracle Linux 7および8:
yum install libgomp
- macOS:
libgomp
がすでにインストールされているはずです
バージョン20.1.0以降、Linux上のGraalVMのRランタイムではGFortranバージョン3のランタイム・ライブラリがサポートされ、バンドルされています。macOSでは、GFortranバージョン8.3.0のランタイム・ライブラリがバンドルされ、サポートされています。これらのランタイム・ライブラリをインストールする必要はありません。ただし、ランタイム・ライブラリは、そのライブラリと同じバージョン以上のGFortranコンパイラとのみ互換性があることに注意してください。
Linuxシステムでは、$R_HOME/bin/configure_fastr
を使用して、必要なライブラリがインストールされていることを確認でき、インストールされていない場合は、それらのインストール方法が示されます。
さらに、C/C++またはFortranコードを含むRパッケージをインストールするには、それらの言語のコンパイラがターゲット・システムに存在する必要があります。次のパッケージによって、最も一般的なRパッケージの依存性が満たされます:
- Ubuntu 18.04および19.10:
apt-get install build-essential gfortran libxml2 libc++-dev
- Oracle Linux 7および8:
yum groupinstall 'Development Tools' && yum install gcc-gfortran bzip2 libxml2-devel
- macOS
brew install gcc
ノート: gfortran
実行可能ファイルがシステム・パスにない場合は、$R_HOME/etc/Makeconf
のFC
変数でそのフルパスを構成する必要があります。
パッケージの検索パス
Rライブラリのデフォルトの場所は、GraalVMインストール・ディレクトリ内です。GraalVMインストール・ディレクトリへの書込みアクセス権を持たないユーザーに対して追加パッケージのインストールを許可するには、$JAVA_HOME/etc/Renviron
ファイルのR_LIBS_USER
変数を編集します。
Rの実行
R
およびRscript
コマンドを使用して、Rコードを直接またはREPLモードで実行します:
R [polyglot options] [R options] [filename]
Rscript [polyglot options] [R options] [filename]
GraalVM Rランタイムでは、他のGraalVM言語のランタイムと同じポリグロット・オプションおよびGNU Rと同じRオプション(bin/R --vanilla
など)が使用されます。サポートされているオプションのリストを出力するには、--help
を使用します。最も重要なオプションは次のとおりです:
--jvm
: Javaとの相互運用性を有効にします--polyglot
: 他のGraalVM言語との相互運用性を有効にします--vm.Djava.net.useSystemProxies=true
: JVMにオプションを渡します。これは-Djava.net.useSystemProxies=true
に変換されます。
ノート: 他のGraalVM言語のランタイムとは異なり、Rにはそのランタイムのネイティブ・イメージバージョンがまだ付属していません。したがって、デフォルトである--native
オプションにより、引き続きJVM上でRscript
が起動しますが、将来の互換性のために、この場合はJavaとの相互運用性を使用できなくなります。
オプションで、ネイティブ・イメージをビルドできます:
gu rebuild-images R
Rのネイティブ・ランチャは、関心があるユーザーが使用したり、実験のために使用することのみを目的としています。既知の問題や制限事項があります。ネイティブ・ランチャがビルドされたら、--jvm
フラグを使用してJVMモードでRを再度実行できます。
GraalVM統合
R言語とGraalVMエコシステムとの統合には次のものが含まれます:
- 他のGraalVM言語およびJavaとのシームレスな相互運用性
- Chrome DevToolsによるデバッグ
- CPUおよびメモリーのプロファイリング
- VisualVMの統合
Rコードのデバッグを開始するには、--inspect
オプションを指定してランチャを起動します:
Rscript --inspect myScript.R
ノート: debug(myFunction)
などを使用するGNU互換のデバッグもサポートされています。