CMakeLists.txt

jaeung·2023년 9월 15일
0

reading & summary

목록 보기
12/28

이러한 경우 CMakeLists.txt를 살펴보면 환경변수에 대해 등록된 값이 없어서 문제가 발생하게 된다. 수작업으로 경로를 지정해주면 된다.

cmake_minimum_required(VERSION 2.8)
project(AprilTagDetect)

SET(OpenCV_DIR /usr/lib64/cmake/opencv4)
SET(OpenCV_INCLUDE_DIRS "/usr/lib64;/usr/lib;/usr/include/opencv4;/usr/lib64/cmake/opencv4")
SET(OpenCV_LIB_DIR "/usr/lib64")

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(TagDetect april-tag-detect.cpp)
target_link_libraries(TagDetect ${OpenCV_LIBS})

nvidia-container-runtime 설치가 필요하다?
그럴려면 엔비디아 도커 설치?
https://mseagle.tistory.com/136
https://github.com/NVIDIA/nvidia-container-runtime

  • libnvidia-container
    container가 nvidia CUDA를 쓸 수 있도록 준비해준다. 서로 다른 run-time에서 nvidia GPU를 쓸 수 있도록 API와 잘 래핑된 CLI를 제공한다.

  • nvidia-container-toolkit
    runC, prestart hook에서 필요한 언터페이스 구현 스크립트를 제공한다. container 생성 뒤 runC에 의해 호출된다. config.json 에 접근해서 libnvidia-container를 호출한다. container에 어떤 GPU장치를 설정할 지 정한다.

  • nvidia-container-runtime
    runC에서 NIVIDA에 특화된 fork이다. 현재는 runC의 래핑이다. runC의 spec을 입력으로해서 nvidia-container-toolkit 스크립트를 prestart hook으로 하고 native runC를 호출하여 수정된 runC spec을 hook set과 함께 넘겨준다. docker specific한 것은 아니다. runC에는 specific하다.

  • nvidia-docker2
    유일하게 docker-specific한 패키지이다. nvidia-container-runtime을 docker의 /etc/docker/daemon.json 에 채워넣는다. docker run --runtime=nivida를 할 수 있게 하고 자동으로 GPU를 container에 추가한다. native docker 스크립트를 래핑하여 nvidia-docker라하는 매번 --runtime-nvidia없이도 gpu를 쓸 수 있게 해준다. 또한 NV_GPU라는 host 환경변수를 설정해서 container에 어떤 GPU가 포함될지 설정하게 해준다.

이와 같은 구조를 본다면 nvidia-container-toolkit만 설치한다면nvidia-container-runtime 은 없다는 것을 알 수 있다. 따라서 --runtime=nivida 는 할 수 없게 된다. 하지만 Docker 19.03+ 에서는 문제가 없다. 이 버전에서는 --gpus 옵션을 주면 자동으로 nvidia-container-runtime에 의존하지 않고 nvidia-container-toolkit를 쓸 수 있게 해준다.
하지만 --gpus 플래그를 지원하지 않는 시스템(e.g. Kubernetes with Docker 19.03) 을 사용할 경우 nvidia-docker2를 사용해야한다.
=> 엥간해선 nvidia-docker2 깔면 편하게 갈 수 있을 거 같다.
출처 : https://koobh.tistory.com/60

profile
Done is better than perfect.

0개의 댓글