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 のシステム更新を行うときは,端末で,次のコマンドを実行する.これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである.

Ubuntu のインストールはこちらの別ページで説明する.

# パッケージリストの情報を更新
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

libtooltexinfodpkg-devpkg-config はビルドやパッケージ管理で用いる開発関連ツール,wget はソースコードのダウンロードに用いる.

Fortran コンパイラと BLAS, LAPACK のインストール

qrupdate は Fortran で記述されており,ビルドには gfortran が必要である.また,make test で動作確認を行う際には BLASLAPACK が必要である.インストールするには,端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install gfortran libblas-dev liblapack-dev

qrupdate のインストール

  1. ソースコードのダウンロードと展開

    ◆ 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
    
  2. 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 パッケージをインストールした上で,BLASLAPACK にその共有ライブラリを指定する.端末で,次のコマンドを実行する.

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