Я запускаю пользовательский образ Yocto на Nvidia Jetson Nano с включенным docker -ce (v19.03.2). Я могу без проблем запустить docker.
Проблема возникает, когда я хочу использовать docker для проверки зрения. Мне нужен доступ к CUDA на стороне хоста и tenorRT. Доступ к нему осуществляется через среду выполнения контейнера Nvidia поверх docker -ce. Я установил Nvidia Container Runtime (v0.9.0 beta) вручную (извлек необходимые пакеты .deb и скопировал их в rootfs), чтобы протестировать мою сборку, и, похоже, она работает нормально.
Когда я запускаю docker info
, я вижу, что доступна среда выполнения nvidia
, и он не жалуется, когда я запускаю docker с docker run -it --runtime=nvidia image
.
Если я запускаю deviceQuery test OUTSIDE docker, я получаю следующее:
$ /usr/bin/cuda-samples/deviceQuery
...
CUDA Driver Version / Runtime Version 10.0 / 10.0
CUDA Capability Major/Minor version number: 5.3
...
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.0, CUDA Runtime Version = 10.0, NumDevs = 1
Result = PASS
Однако, когда я хочу запустить deviceQuery
IN a docker для проверки доступности CUDA не удается:
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL
Где Dockerfile выглядит следующим образом:
FROM nvcr.io/nvidia/l4t-base:r32.2
COPY ./deviceQuery /tmp/deviceQuery
WORKDIR /tmp/
CMD ["./deviceQuery"]
Итак, мои вопросы таковы:
Почему тест deviceQuery не выполняется внутри docker, даже если у меня установлена среда выполнения Nvidia с docker? - и как я могу исправить эту проблему?
------------ РЕДАКТИРОВАТЬ: ----------
Подробнее об этом на эта тема от nvidia devtalk.