金子邦彦研究室インストールUbuntu, WSL2SuiteSparse,CXSparse, BLAS, LAPACK, libmetis のインストール(Ubuntu 上)

SuiteSparse,CXSparse, BLAS, LAPACK, libmetis のインストール(Ubuntu 上)

SuiteSparse は,下記の機能を持つソフトウェアである.

UFconfig は,SuiteSparseQR, AMD, COLAMD, CCOLAMD, CHOLMOD, KLU, BTF, LDL, CXSparse, and UMFPACK のビルドに必要.

AMD は,疎行列の並び替えの機能を持ったソフトウェア. これは,Cholesky factorization や, 不完全 LU 分解 (LU factorization) の前処理として行うもの.

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

前準備

Ubuntu のシステム更新

UbuntuUbuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.

UbuntuUbuntu のインストールは別ページ »で説明

sudo apt -y update
sudo apt -yV upgrade
sudo /sbin/shutdown -r now

C/C++ コンパイラー,make,パッケージツール,その他のインストール

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

sudo apt -y install build-essential gcc g++ make libtool texinfo dpkg-dev pkg-config
sudo apt -y install gfortran curl libatlas3-base libatlas-base-dev

NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストールのインストール(Ubuntu 上)

Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストール: 別ページ »で説明している.

SuiteSparse, Metis その他のインストール(Ubuntu 上)

① apt を用いてインストールする場合

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

次の操作により,UbuntuUbuntu 22.04 では SuiteSparse 5.10.1, CXSparse, BLAS, LAPACK, libmetis 5.1.0 がインストールされる.

sudo apt -y install libatlas-base-dev libsuitesparse-dev libmetis5 libmetis-dev

② ソースコードを用いてインストールする場合

  1. apt の libmetis-dev, libmetis5, libsuitesparse-dev の削除
    sudo apt --purge remove -y libmetis-dev
    sudo apt --purge remove -y libmetis5
    sudo apt --purge remove -y libsuitesparse-dev
    
  2. SuiteSparse の Web ページを開く

    利用条件などを確認.

    https://faculty.cse.tamu.edu/davis/suitesparse.html

  3. ソースコードのダウンロード
    cd /usr/local
    sudo rm -rf SuiteSparse
    sudo git clone --recursive https://github.com/DrTimothyAldenDavis/SuiteSparse
    sudo chown -R $USER SuiteSparse
    

    [image]
  4. SuiteSparse のビルドとインストール

    cd /usr/local
    cd SuiteSparse
    make purge
    make CFLAGS="-fPIC" F77FLAGS="-fPIC" LAPACK="-llapack -lpthread"
    
  5. 確認

    エラーメッセージが出ていないこと.

    [image]
  6. インストール

    sudo make install
    

    [image]
  7. Metis 5.1.0 のインストール

    SuiteSparse にソースコードが同封されている. 利用者で Metis のライセンス等を確認した上でインストールすること.

    cd /usr/local/SuiteSparse/metis-5.1.0/
    make config
    make
    sudo make install
    
  8. 終了の確認

    [image]
  9. Ceres Solver のインストール

    この機会に,SuiteSparse 対応の Ceres Solver をインストールしておく.

    1. 前提ソフトウェア

      Ceres Solver のインストールのために, cmake, google-glog, glfags, Eigen, BLAS, LAPACK, Eigen 3, SuiteSparse, CXSparse をインストールする.

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

      sudo apt -y install cmake libgoogle-glog-dev libgflags-dev libatlas-base-dev libeigen3-dev libsuitesparse-dev
      
    2. Ceres Solver のビルド

      -b 2.1.0」は 2022年8月時点の最新の安定版(バージョン 2.1.0)をダウンロードすることを指定している. 最新の安定版については https://github.com/ceres-solver/ceres-solver で確認.

      (安定版よりも新しい版などでは,うまく動作しないということもありえるので注意).

      cd /tmp
      sudo rm -rf ceres-solver
      git clone https://ceres-solver.googlesource.com/ceres-solver -b 2.1.0
      cd ceres-solver
      mkdir build
      cd build
      cmake .. -DEIGENSPARSE=ON -DSUITESPARSE=ON \
        -DSuiteSparse_AMD_INCLUDE_DIR=/usr/local/SuiteSparse/AMD/Include \
        -DSuiteSparse_CAMD_INCLUDE_DIR=/usr/local/SuiteSparse/CAMD/Include \
        -DSuiteSparse_COLAMD_INCLUDE_DIR=/usr/local/SuiteSparse/COLAMD/Include \
        -DSuiteSparse_CCOLAMD_INCLUDE_DIR=/usr/local/SuiteSparse/CCOLAMD/Include \
        -DSuiteSparse_CHOLMOD_INCLUDE_DIR=/usr/local/SuiteSparse/CHOLMOD/Include \
        -DSuiteSparse_SPQR_INCLUDE_DIR=/usr/local/SuiteSparse/SPQR/Include \
        -DSuiteSparse_Config_INCLUDE_DIR=/usr/local/SuiteSparse/SuiteSparse_config \
        -DSuiteSparse_Config_LIBRARY=/usr/local/SuiteSparse/lib/libsuitesparseconfig.so
      make -j4
      
    3. 終了の確認

      ここまでの一連の操作で,エラーメッセージが出るなどの問題がないこと.

      [image]
    4. Ceres Solver のインストール
      sudo make install
      

      [image]
    5. 終了の確認

      [image]
    6. 動作確認
      cd /tmp/ceres-solver/build
      ./bin/simple_bundle_adjuster ../data/problem-16-22106-pre.txt
      

      [image]
    7. テスト
      make test
      

      [image]
    8. テスト結果の確認

      [image]

(オプション)共有オブジェクトのインストール

  1. (オプション) SuiteSparse について,共有オブジェクト (.so) の生成とインストール

    cd /usr/local/SuiteSparse
    for i in */Lib/*.a; do
      echo $i
      rm -rf hoge
      mkdir hoge
      cd hoge
      ar x ../$i
      gcc -shared -o ../`basename $i .a`.so *.o
      cd ..
    done
    sudo cp *.so /usr/local/lib
    
    sudo /sbin/ldconfig
    
  2. (オプション)Metis について,共有オブジェクト (.so) の生成とインストール

    cd /usr/local/SuiteSparse/metis-5.1.0/
    rm -rf hoge
    mkdir hoge
    cd hoge
    ar x ../libmetis.a
    gcc -shared -o libmetis.so *.o
    sudo cp libmetis.so /usr/local/lib
    sudo /sbin/ldconfig
    

ld.so.confの設定

スーパーユーザで、下記を実行

  1. /etc/ld.so.confに以下の行を追加

    -------------ここから-----------
    /usr/local/lib
    --------------ここまで---------
    
    次のようになる

    [image]
  2. 「sudo /sbin/ldconfig」の実行