SuiteSparse は,下記の機能を持つソフトウェアである.
UFconfig は,SuiteSparseQR, AMD, COLAMD, CCOLAMD, CHOLMOD, KLU, BTF, LDL, CXSparse, and UMFPACK のビルドに必要.
AMD は,疎行列の並び替えの機能を持ったソフトウェア. これは,Cholesky factorization や, 不完全 LU 分解 (LU factorization) の前処理として行うもの.
ソフトウェア等の利用条件は,利用者自身で確認下さい.
UbuntuUbuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する.
sudo apt -y update sudo apt -yV upgrade sudo /sbin/shutdown -r now
端末で,次のコマンドを実行する.
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
Ubuntu での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.7, NVIDIA cuDNN v8.4.1 のインストール: 別ページ »で説明している.
端末で,次のコマンドを実行する.
次の操作により,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
sudo apt --purge remove -y libmetis-dev sudo apt --purge remove -y libmetis5 sudo apt --purge remove -y libsuitesparse-dev
利用条件などを確認.
cd /usr/local sudo rm -rf SuiteSparse sudo git clone --recursive https://github.com/DrTimothyAldenDavis/SuiteSparse sudo chown -R $USER SuiteSparse
cd /usr/local cd SuiteSparse make purge make CFLAGS="-fPIC" F77FLAGS="-fPIC" LAPACK="-llapack -lpthread"
エラーメッセージが出ていないこと.
sudo make install
SuiteSparse にソースコードが同封されている. 利用者で Metis のライセンス等を確認した上でインストールすること.
cd /usr/local/SuiteSparse/metis-5.1.0/ make config make sudo make install
この機会に,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
「-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
ここまでの一連の操作で,エラーメッセージが出るなどの問題がないこと.
sudo make install
cd /tmp/ceres-solver/build ./bin/simple_bundle_adjuster ../data/problem-16-22106-pre.txt
make test
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
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
スーパーユーザで、下記を実行
-------------ここから----------- /usr/local/lib --------------ここまで---------