自己安裝 Toolkit 後,build ffmpeg OK,run 起來 libavcodec.so load fail,說 nvidia driver version 不對 (其實是對的)。
在 cuda container tags list 中,有列出所有 image 的內容。
每個 link 可以看到 Dockerfile。
猜是 nvidia/cuda10.1-devel 這格才有 nvcc。
測試一下..
docker run -gpus all -it nvidia/cuda:10.1-devel bash .. :/# nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Sun_Jul_28_19:07:16_PDT_2019 Cuda compilation tools, release 10.1, V10.1.243到 /usr/local 下也有看到 cuda-10.1 目錄。
結果一樣,找不到 libnvidia-encode.so
在 host 找,是在 /usr/lib/:
:/usr/lib$ sudo find . -type f -name 'libnvidia-en*' ./i386-linux-gnu/libnvidia-encode.so.435.21 ./x86_64-linux-gnu/libnvidia-encode.so.435.21
可能要參考這一篇,加上 CAPIBILITIES option
-- 沒用,那是舊版nvidia-docker。
這一個 dockerfile 大概可以試試看..
最後,在 nvidia Docker 自己的說明 : Usage
For a Dockerfile using the NVIDIA Video Codec SDK, you should use: ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES compute,video,utility所以,..遵照說明,把 cuda10.1-base 的Dockerfile download 下來。
在 NVIDIA_DRIVER_CAPABILITIES 加上 video
放在 folder 中,在 folder 中下..
docker build -t cudaffmpeg .用 docker images 看看 cudaffmpeg 有沒有 create 出來..
結果 libnvidia-encode.so 是有了,但是沒有 nvcc...
應該要參考devel 的 Dockerfile..
所以合併兩個 Dockerfile..
.. 看這幾個Tag的Dockerfile 關係(FROM):
base -- runtime -- devel所以直接拿 devel 來就可以。再用 -e 來變更 dockfile 的 ENV NVIDIA_DRIVER_CAPABILITIES:
docker run -it --gpus all -e NVIDIA_DRIVER_CAPABILITIES=compute,video,utility nvidia/cuda:10.1-devel bash測試 nvcc, nvidia-smi. libnvidia-encode.so 都在。
參考前面兩篇,用這個docker image 啟動後, build ffmpeg,使用 nvidia hw 加速 OK.
沒有留言:
張貼留言