LAPACK のインストール(Ubuntu 上)

LAPACK は,行列に関する数値計算(連立一次方程式,最小二乗問題,固有値問題,特異値分解など)を行うライブラリである.Fortran で記述されている.

LAPACK は,行列・ベクトルの基本演算を BLAS に委ねる設計である.そのため,BLAS の実装を最適化されたもの(OpenBLAS など)に入れ替えることで,LAPACK を用いた計算の性能も変化する.

LAPACK の URL: https://www.netlib.org/lapack/

最新版は LAPACK 3.12.1(2025 年 1 月 8 日リリース)である.

Ubuntu では,LAPACK は apt を用いてインストールできる.

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

liblapack-dev は Fortran インタフェース,liblapacke-dev は C 言語インタフェース(LAPACKE),libopenblas-dev は最適化された BLAS 実装である.

このページでは,特定のバージョンの LAPACK を使いたい場合を想定し,apt を使わずに,ソースコードからビルドしてインストールする手順を説明する.

ソフトウェア等の利用条件は,利用者自身で確認下さい.

前準備

Ubuntu のシステム更新

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

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

# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now

コンパイラー,ビルドツール,BLAS のインストール

端末で,次のコマンドを実行する.

# パッケージリストの情報を更新
sudo apt update
sudo apt -y install build-essential gcc g++ make cmake pkg-config
sudo apt -y install gfortran wget libopenblas-dev

LAPACK のビルドには Fortran コンパイラー(gfortran)が必要である.また,LAPACK 3.12 系の公式のビルド方式は CMake である.

ソースコードからのインストール

  1. システムに存在する BLAS 実装の確認
    update-alternatives --display libblas.so.3-x86_64-linux-gnu
    dpkg -L libopenblas-dev
    
  2. ソースコードのダウンロードと展開

    ◆ Ubuntu での操作手順例

    cd /tmp
    wget https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.12.1.tar.gz -O lapack-3.12.1.tar.gz
    rm -rf lapack-3.12.1
    tar -xvzof lapack-3.12.1.tar.gz
    
  3. ビルドとインストール

    CMake の構成時に,BUILD_SHARED_LIBS で共有ライブラリを生成し,USE_OPTIMIZED_BLAS でシステムの OpenBLAS を利用し,LAPACKE で C 言語インタフェースを併せてビルドする.CMAKE_INSTALL_PREFIX がインストール先である.

    cd /tmp/lapack-3.12.1
    cmake -B build -S . \
        -DCMAKE_BUILD_TYPE=Release \
        -DBUILD_SHARED_LIBS=ON \
        -DCMAKE_INSTALL_PREFIX=/usr/local \
        -DUSE_OPTIMIZED_BLAS=ON \
        -DLAPACKE=ON \
        -DCBLAS=ON \
        -DCMAKE_Fortran_FLAGS="-O2 -fPIC -frecursive"
    cmake --build build -j$(nproc)
    

    最適化オプションを強めると数値計算の結果が規格外の丸めになる場合があるため,浮動小数点演算の厳密さを保つ設定でビルドしている.

  4. テストの実行
    cd /tmp/lapack-3.12.1
    ctest --test-dir build
    
  5. インストール
    cd /tmp/lapack-3.12.1
    sudo cmake --install build
    

    共有ライブラリは /usr/local/lib,ヘッダファイルは /usr/local/include,pkg-config 用の設定ファイルは /usr/local/lib/pkgconfig にインストールされる.

共有ライブラリの検索パスの設定

共有ライブラリを新たに配置した後は,ライブラリキャッシュを更新する. 端末で,次のコマンドを実行する.

sudo ldconfig
ldconfig -p | grep lapack

Ubuntu では /usr/local/lib は既定でライブラリ検索パスに含まれている(/etc/ld.so.conf.d/libc.conf に記述がある).上のコマンドで liblapack.so が表示されない場合は,次のように設定ファイルを追加してから ldconfig を実行する.

echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/usrlocal.conf
sudo ldconfig

インストール結果の確認

端末で,次のコマンドを実行する.リンクとビルドが成功し,バージョン番号が表示されれば,インストールは正常である.

cd /tmp
cat > lapacktest.c <<'EOF'
#include <stdio.h>
#include <lapacke.h>
int main(void) {
    int major, minor, patch;
    LAPACK_ilaver(&major, &minor, &patch);
    printf("LAPACK %d.%d.%d\n", major, minor, patch);
    return 0;
}
EOF
gcc -o lapacktest lapacktest.c -I/usr/local/include -L/usr/local/lib -llapacke -llapack -lblas
./lapacktest