[Goal]

  • Ceres Solver를 설치하는 과정 중 test에 생기는 error를 해결할 수 있다.

[Problem]

  • Ceres Solver를 데스크탑에서 설치하면 문제가 없었는데 Jetson Board (본 저자는 Xavier AGX사용)를 사용할 때 make test 시 다음과 같은 error가 발생하였다.
    • Error List
# USE Error log
$ ctest -C Release --output-on-failure --rerun-failed -VV

# Output
The following tests FAILED:
 1 - cuda_memcheck_dense_qr_test (Failed)
 2 - cuda_memcheck_dense_cholesky_test (Failed)
Errors while running CTest

[Reference Site]


[Cause]

  • [Cause 1] 이전 CUDA memcheck test는 “environment PATH”에 영향을 받았는데 변경된 버전에서는 “CMake가 발견한 경로”를 사용하도록 변경되었다.
    • 따라서 ceres 설치 시, CMakeList.txt에 올바른 경로를 넣어주어야 한다.
  • [Cause 2] CUDA가 bash 안에서 export가 되었는지 확인이 필요하다. Install 시 ${PATH} & ${LD_LIBRARY_PATH} 안에 cuda가 들어있어야 해당 경로를 인식한다.
  • [Cause 3] Jetson 디버그 모드에서 cuda를 실행할 수 있는 권한이 설정되었는지 체크해야한다. 그렇지 않으면 디버그 모드 시 사용되지 않는다.

[Solution 1]

  • [Cause 1]에 대한 해결방안
    • [Step 1] 먼저, ceres 설치를 위한 CMakeList.txt 파일을 찾는다.
# Go To CERES CMakeList.txt
$ cd ceres-solver-2.1.0/**internal/ceres/CMakeList.txt**
    • [Step 2] 137 & 141번째 줄을 다음과 같이 변경한다.
[# Change 137 & 141 Line following as]
## BEFORE
COMMAND cuda-memcheck --leak-check full

## AFTER
COMMAND **${CUDA_TOOLKIT_ROOT_DIR}/bin/**cuda-memcheck --leak-check full

[Solution 2]

  • “Solution 1”의 방법이 안된다면 다음 방법을 사용한다.
  • [Cause 2]에 대한 해결방안
    • [Step 1] Terminal 창의 bash 설정을 살펴본다.
      • bash 안에 다음과 같은 명령어가 있는지 찾아본다.
# gedit ~/.bashrc
$ export PATH=/usr/local/cuda-10.2/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH
        • 다음의 명령어가 없으면 해당 line을 추가한다.

[Solution 3]

  • “Solution 2”의 방법이 안된다면 다음 방법을 사용한다.
  • [Cause 3]에 대한 해결방안
    • [Step 1] /dev 로 가서 nvhost-dbg-gpu가 있는지 체크한다. 그 후 permission 제한을 풀어준다.
# Find nvhost-dbg-gpu
$ cd /dev
$ ls | grep nvhost-dbg-gpu

# Change Permission
$ sudo chmod 666 /dev/nvhost-dbg-gpu

'▷ Studies > C' 카테고리의 다른 글

[Cuda] How to find version of Cuda, Cuda Toolkit, and Cudnn?  (0) 2024.09.11
[Convert] sensor_msgs ↔ cv::Mat  (0) 2024.09.11
[CATKIN] Tip for development  (0) 2024.09.11

+ Recent posts