qrupdate のインストール(Ubuntu 上)
qrupdate は,QR 分解および Cholesky 分解の更新(update / downdate)を高速に行う Fortran ライブラリである.分解済みの行列に対して,行や列の追加・削除,ランク 1 更新を行った後の分解を,最初から計算し直すよりも少ない計算量で求める.GNU Octave が内部で利用している.
このページでは,Ubuntu での qrupdate のインストール法を説明する.パッケージによるインストールと,ソースコードからのビルドの 2 通りを扱う.
URL: https://sourceforge.net/projects/qrupdate/
最新の公開版は qrupdate 1.1.2(2012 年公開)である.ソフトウェア等の利用条件は,利用者自身で確認下さい.
パッケージによるインストール
Ubuntu の公式リポジトリには qrupdate のパッケージが用意されている.ビルドオプションを自分で指定する必要がない場合は,この方法が簡便である.インストールするには,端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
# 共有ライブラリと開発用ファイル(ヘッダ,静的ライブラリ)をインストール
sudo apt -y install libqrupdate1 libqrupdate-dev
以降では,ビルドオプションや連携する BLAS/LAPACK を自分で指定したい場合のために,ソースコードからのビルド手順を説明する.
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは,端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新(依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で再起動が必要な場合のみ実行
# sudo shutdown -r now
C/C++ コンパイラと Make とビルドツールのインストール
ソースコードからビルドするには,C/C++ コンパイラ(GCC)や make ユーティリティが必要である.Ubuntu では,これらは build-essential パッケージにまとめられている.インストールするには,端末で,次のコマンドを実行する.
sudo apt -y install build-essential libtool texinfo dpkg-dev pkg-config wget
libtool,texinfo,dpkg-dev,pkg-config はビルドやパッケージ管理で用いる開発関連ツール,wget はソースコードのダウンロードに用いる.
Fortran コンパイラと BLAS, LAPACK のインストール
qrupdate は Fortran で記述されており,ビルドには gfortran が必要である.また,make test で動作確認を行う際には BLAS と LAPACK が必要である.インストールするには,端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install gfortran libblas-dev liblapack-dev
qrupdate のインストール
-
ソースコードのダウンロードと展開
◆ Ubuntu での操作手順例
cd /tmp wget https://sourceforge.net/projects/qrupdate/files/qrupdate/1.2/qrupdate-1.1.2.tar.gz/download -O qrupdate-1.1.2.tar.gz sudo rm -rf qrupdate-1.1.2 tar -xvzf qrupdate-1.1.2.tar.gz -
qrupdate のビルドとインストール
◆ Ubuntu での操作手順例
libは静的ライブラリ,solibは共有ライブラリのビルド,testはテストプログラムの実行を指す.共有ライブラリの生成には位置独立コードが必要なため,FFLAGSに -fPIC を指定する.cd /tmp cd qrupdate-1.1.2 make FC=gfortran FFLAGS="-O2 -fPIC -fimplicit-none -fopenmp" lib solib test sudo rm -f /usr/local/lib/libqrupdate.* sudo make install-staticlib install-shlib sudo chmod 755 /usr/local/lib/libqrupdate.*
共有ライブラリの検索パスの設定
qrupdate の共有ライブラリは /usr/local/lib にインストールされる.Ubuntu では,/etc/ld.so.conf.d/libc.conf により /usr/local/lib が既定で検索パスに含まれているため,通常は追加設定は不要である.検索パスに含まれていない場合は,端末で,次のコマンドを実行する.
# 現在の検索パスに /usr/local/lib が含まれるかを確認
grep -r "/usr/local/lib" /etc/ld.so.conf /etc/ld.so.conf.d/
# 含まれない場合のみ,設定ファイルを作成
echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usr-local-lib.conf
設定後,キャッシュを更新し,ライブラリが認識されたことを確認するために,端末で,次のコマンドを実行する.
sudo ldconfig
ldconfig -p | grep qrupdate
最適化された BLAS, LAPACK と連携させる場合
qrupdate のテストプログラムのリンクや,qrupdate を利用するプログラムの実行性能は,連携する BLAS, LAPACK の実装に依存する.現在の Ubuntu で標準的に利用できる最適化実装は OpenBLAS である.インストールするには,端末で,次のコマンドを実行する.
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install libopenblas-dev
OpenBLAS を指定してビルドするには,端末で,次のコマンドを実行する.
cd /tmp
cd qrupdate-1.1.2
make FC=gfortran FFLAGS="-O2 -fPIC -fimplicit-none -fopenmp" BLAS="-lopenblas" LAPACK="-lopenblas" lib solib test
sudo rm -f /usr/local/lib/libqrupdate.*
sudo make install-staticlib install-shlib
sudo chmod 755 /usr/local/lib/libqrupdate.*
ATLAS を利用する場合は,libatlas-base-dev パッケージをインストールした上で,BLAS と LAPACK にその共有ライブラリを指定する.端末で,次のコマンドを実行する.
sudo apt -y install libatlas-base-dev
cd /tmp
cd qrupdate-1.1.2
make FC=gfortran FFLAGS="-O2 -fPIC -fimplicit-none -fopenmp" BLAS="-lf77blas -latlas" LAPACK="-llapack -lf77blas -latlas" lib solib test
sudo rm -f /usr/local/lib/libqrupdate.*
sudo make install-staticlib install-shlib
sudo chmod 755 /usr/local/lib/libqrupdate.*