SuiteSparse,CXSparse, BLAS, LAPACK, libmetis のインストール(Ubuntu 上)
SuiteSparse は,下記の機能を持つソフトウェアである.
- AMD: symmetric approximate minimum degree
- CCOLAMD: constrained column approximate minimum degree
- COLAMD: column approximate minimum degree
- CHOLMOD: sparse supernodal Cholesky factorization and update/downdate
- CXSparse: an extended version of CSparse
- UMFPACK: 不完全 LU 分解 (sparse multifrontal LU factorization)
- UFconfig: common configuration for all but CSparse
UFconfig は,SuiteSparseQR, AMD, COLAMD, CCOLAMD, CHOLMOD, KLU, BTF, LDL, CXSparse, and UMFPACK のビルドに必要.
AMD は,疎行列の並び替えの機能を持ったソフトウェア. これは,Cholesky factorization や, 不完全 LU 分解 (LU factorization) の前処理として行うもの.
ソフトウェア等の利用条件は,利用者自身で確認下さい.
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
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 を用いてインストールする場合
端末で,次のコマンドを実行する.
次の操作により,Ubuntu 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
② ソースコードを用いてインストールする場合
- 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
- SuiteSparse の Web ページを開く
利用条件などを確認.
- ソースコードのダウンロード
cd /usr/local sudo rm -rf SuiteSparse sudo git clone --recursive https://github.com/DrTimothyAldenDavis/SuiteSparse sudo chown -R $USER SuiteSparse
- SuiteSparse のビルドとインストール
cd /usr/local cd SuiteSparse make purge make CFLAGS="-fPIC" F77FLAGS="-fPIC" LAPACK="-llapack -lpthread"
- 確認
エラーメッセージが出ていないこと.
- インストール
sudo make install
- Metis 5.1.0 のインストール
SuiteSparse にソースコードが同封されている. 利用者で Metis のライセンス等を確認した上でインストールすること.
cd /usr/local/SuiteSparse/metis-5.1.0/ make config make sudo make install
- 終了の確認
- Ceres Solver のインストール
この機会に,SuiteSparse 対応の Ceres Solver をインストールしておく.
- 前提ソフトウェア
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
- 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
- 終了の確認
ここまでの一連の操作で,エラーメッセージが出るなどの問題がないこと.
- Ceres Solver のインストール
sudo make install
- 終了の確認
- 動作確認
cd /tmp/ceres-solver/build ./bin/simple_bundle_adjuster ../data/problem-16-22106-pre.txt
- テスト
make test
- テスト結果の確認
- 前提ソフトウェア
(オプション)共有オブジェクトのインストール
- (オプション) 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
- (オプション)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の設定
スーパーユーザで、下記を実行
- /etc/ld.so.confに以下の行を追加
-------------ここから----------- /usr/local/lib --------------ここまで---------
- 「sudo /sbin/ldconfig」の実行