ついでにRのソースコードを書き換えて128コア以上を使えるようにする。

Rのコンパイルとインストール

実行手順は以下の通り。なお、INSTALLPATHは適宜指定すること。$HOME/R-4.3.1とか。Rのバージョンは任意。

#Install required packages
sudo apt install -y gcc g++ gfortran make autoconf automake zlib1g-dev libbz2-dev liblzma-dev libreadline-dev libpcre2-dev libjpeg-dev libpng-dev libcairo2-dev libpango1.0-dev libtiff-dev tcl-dev tk-dev tar gzip xz-utils unzip coreutils grep perl libopenblas-serial-dev libopenblas64-serial-dev libcurl4-openssl-dev libxml2-dev xorg-dev
#Make working directory
mkdir temporary
#Change current directory
cd temporary
#Download source tarball
wget https://cran.r-project.org/src/base/R-4/R-4.3.1.tar.gz
#Extract source tarball
tar -xzf R-4.3.1.tar.gz
#Change directory
cd R-4.3.1
#Modify source
perl -i -npe 's/^(\#define NCONNECTIONS) \d+/$1 1050/' src/main/connections.c
#Search libopenblas.so and store it's path
openblas=`find /usr -name libopenblas.so | sort | tail -n 1 | perl -npe 's/\/libopenblas\.so//'`
#Perform configure
./configure --prefix=INSTALLPATH --enable-java=no --with-recommended-packages=yes --with-pic --with-x --enable-R-shlib=yes --with-blas="-L$openblas -lopenblas" --with-lapack
#Perform make
make -j128
#Install to INSTALLPATH
make install-strip
#Change directory
cd ..
#Delete build directory and source tarball
rm -rf R-4.3.1 R-4.3.1.tar.gz
#Change directory and delete working directory
cd ..
rm -r temporary

鍵になるのはsrc/main/connections.cのNCONNECTIONSの値です。この値を大きくすることで、128コア以上のCPUを使用することができるようになります。

RStudioのコンパイルとインストール

実行手順は以下の通り。INSTALLPATHは上記のRと同一にしておく必要がある。RStudioは管理者権限(sudo実行権限)のないユーザーではコンパイルできないので、管理者権限のないユーザーがインストールする際には一時的に管理者権限を与えるか、後述のように管理者が代わりにインストールする必要がある。

#Install required packages
sudo apt install -y ant
#Make working directory
mkdir temporary
#Change current directory
cd temporary
#Download source tarball
wget https://github.com/rstudio/rstudio/archive/refs/tags/v2023.06.1+524.tar.gz
#Extract source tarball
tar -xzf v2023.06.1+524.tar.gz
#Change directory
cd rstudio-2023.06.1-524/dependencies/linux
#Set an environment variable
export PATH=INSTALLPATH/bin:$PATH
#Execute script
bash install-dependencies-jammy
#Change current directory
cd ../..
#Make build directory
mkdir build
#Change current directory
cd build
#Perform configuration
cmake .. -DRSTUDIO_TARGET=Electron -DRSTUDIO_PACKAGE_BUILD=1 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=INSTALLPATH/bin -DLIBR_HOME=INSTALLPATH/lib/R
#Perform make
PATH=$HOME/temporary/rstudio-2023.06.1-524/dependencies/common/node/16.14.0/bin:$PATH make -j128
#Install to INSTALLPATH
make install
#Change directory
cd ../..
#Delete build directory and source tarball
sudo rm -rf rstudio-2023.06.1-524 v2023.06.1+524.tar.gz
#Delete other temporary directories
sudo rm -rf $HOME/opt /opt/rstudio-tools
#Change directory and delete working directory
cd ..
rm -r temporary

使用の際の注意点

実行する際には、INSTALLPATH/binにPATHを通した上で、INSTALLPATH/bin/RまたはINSTALLPATH/bin/rstudioを実行します。R本体だけならPATHを通さなくても直接INSTALLPATH/bin/Rを実行することも可能です。

この方法では、複数バージョンを共存させることもできますし、同じバージョンを複数の別フォルダにインストールすることも可能ですし、実行環境をフォルダごとtarで固めて保存しておくこともできます。

管理者が他ユーザーの所有フォルダ内にインストールするには

INSTALLPATHに対象となる他ユーザーの所有フォルダを設定した上で、Rのmake install-strip、およびRStudioのmake installの実行時にsudoを付ければ、他ユーザーの所有フォルダにインストールすることができます(なお、Rをユーザーの所有フォルダ内にインストールするのは管理者権限がなくても本人ならできます)。インストール後はchown -R USER:GROUP INSTALLPATHで所有権を書き換えておきましょう。管理者権限のないユーザーが所有フォルダ内にRStudioをインストールしたいと言ってきた場合は管理者がこのように対応する必要があります。