📄

Colmap Ubuntu 22.04 + RTX4090 컴파일

환경

Ubuntu 22.04 + RTX4090 기준
TRIPS 설치를 위해 CUDA 11.8로 설치했을 때 기준

설치 과정

conda 환경 끄기
conda deactivate
Shell
복사
환경에 깔린 CUDA 관련 파일이랑 겹침
sudo apt-get install \ git \ cmake \ ninja-build \ build-essential \ libboost-program-options-dev \ libboost-filesystem-dev \ libboost-graph-dev \ libboost-system-dev \ libeigen3-dev \ libflann-dev \ libfreeimage-dev \ libmetis-dev \ libgoogle-glog-dev \ libgtest-dev \ libsqlite3-dev \ libglew-dev \ qtbase5-dev \ libqt5opengl5-dev \ libcgal-dev \ libceres-dev
Shell
복사
sudo apt-get install gcc-10 g++-10 export CC=/usr/bin/gcc-10 export CXX=/usr/bin/g++-10 export CUDAHOSTCXX=/usr/bin/g++-10 # ... and then run CMake against COLMAP's sources.
Shell
복사
sudo apt-get install -y nvidia-cuda-toolkit-gcc
Shell
복사
nvidia-cuda-toolkit 은 이미 TRIPS 설치할 때 같이 설치했기 때문에 nvidia-cuda-toolkit-gcc만 깔면 된다.
git clone https://github.com/colmap/colmap.git cd colmap mkdir build cd build
Shell
복사
FindDependencies.cmake 수정
During CMake configuration specify CMAKE_CUDA_ARCHITECTURES as “native”, if you want to run COLMAP on your current machine only, “all”/”all-major” to be able to distribute to other machines, or a specific CUDA architecture like “75”, etc.
라고 되어있음.
그러나 기본 native로 되어있으면 장착된 4090에 맞게 compute_89를 찾는다.
그러면 11.8에서는 파일 없다고 에러난다.
실제로 89 관련 파일이 없어서 그렇다.
nvcc --list-gpu-arch 해보면 compute_89는 안 나오고 compute_87까지만 나온다.
그래서 그나마 가장 최신인 87로 설치해준다.
FindDependencies.cmake 파일 앞 부분에서 CMAKE_CUDA_ARCHITECTURES를 87로 선언해도 되고,
무식하게 아래와 같이 바꿔버려도 된다.
.... if(CUDA_ENABLED AND CUDA_FOUND) if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) set(CMAKE_CUDA_ARCHITECTURES "87") endif() ....
Shell
복사
cmake .. -GNinja
Shell
복사
여기서 -- Enabling CUDA support 항목에서 archs87로 제대로 뜨는지 확인
ninja sudo ninja install
Shell
복사
colmap -h
Shell
복사
메뉴 다 뜨는지 확인 (CLI까지는 제대로 설치되었나)
colmap gui
Shell
복사
GUI까지 제대로 잘 뜨나 확인

Reference