Closed HoangTienDuc closed 4 years ago
I am not sure what is the issue but if you are unable to find nvcc then possibly you are missing cuda toolkit installation. you can follow this cuda installlation guide - https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
I think you are not correct @mdoijade. Although cuda is installed:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2020 NVIDIA Corporation
Built on Mon_Oct_12_20:09:46_PDT_2020
Cuda compilation tools, release 11.1, V11.1.105
Build cuda_11.1.TC455_06.29190527_0
I get an error when want to build ffmpeg with nvenc:
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure --prefix="$HOME/ffmpeg_build" --extra-cflags="-I$HOME/ffmpeg_build/include" --extra-ldflags="-L$HOME/ffmpeg_build/lib" --bindir="$HOME/bin" --enable-cuda-sdk --enable-cuvid --enable-libnpp --extra-cflags="-I/usr/local/cuda/include/" --extra-ldflags=-L/usr/local/cuda/lib64/ --enable-gpl --enable-libass --enable-libfdk-aac --enable-vaapi --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-nvenc
ERROR: failed checking for nvcc.
Hi, the same goes for me on two machines. One Ubuntu 18.04, second Ubuntu 20.10. Cuda toolkit 11.1 drivers 455.45.
nvcc fatal : Unsupported gpu architecture 'compute_30'
After altering nvccflags_default="-gencode arch=compute_30,code=sm_30 -O2
i got
WARNING: Option --enable-cuda-sdk is deprecated. Use --enable-cuda-nvcc instead.
@Tony763 where do you alter the nvccflags_default ?
Hi @swissbeats93: https://github.com/FFmpeg/FFmpeg/blob/master/configure#L4344
FFmpeg now compile but in ffmpeg -hwaccels
: no cuvid is pressent
Hardware acceleration methods:
cuda
drm
opencl
I don't see what you altered it to @Tony763, also doesn't the presence of cuda say that you have cuvid present?
vccflags_default="-gencode arch=compute_35,code=sm_35 -O2
according to cuda-compiler-driver-nvcc
vccflags_default="-gencode arch=compute_35,code=sm_35 -O2
according to cuda-compiler-driver-nvcc
I saw it now. This is the page: https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html . I went with 75 because I'm on Turing architecture
@swissbeats93 is it wotking for You?
For me not. I struct at :
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i 1.mp4 -c:v h264_nvenc -preset slow 2.mp4
cu->cuInit(0) failed -> CUDA_ERROR_UNKNOWN: unknown error
Device creation failed: -1313558101.
[h264 @ 0x564db43004c0] No device available for decoder: device type cuda needed for codec h264.
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_nvenc))
Device setup failed for decoder on input stream #0:0 : Unknown error occurred
Nvidia verification is OK - url
nvidia-smi
is also OK
ffmpeg -hwaccel cuda -hwaccel_output_format cuda -i 1.mp4 -c:v h264_nvenc -preset slow 2.mp4
@Tony763 It's working for me. Did you restart the system?
This is what I did.
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu I installed everything except FFmpeg
I proceeded to install nv-codec-headers like so:
cd ~/ffmpeg_sources && \ git -C nv-codec-headers pull 2> /dev/null || git clone --depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git && \ cd nv-codec-headers && \ sudo make PREFIX="$HOME/ffmpeg_build" BINDDIR="$HOME/bin" && \ sudo make install PREFIX="$HOME/ffmpeg_build" BINDDIR="$HOME/bin"
cd ~/ffmpeg_sources && \ wget -O ffmpeg-snapshot.tar.bz2 https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && \ tar xjvf ffmpeg-snapshot.tar.bz2 && \ cd ffmpeg && \ PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/ffmpeg_build/include -I/usr/local/cuda/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib -L/usr/local/cuda/lib64" \ --extra-libs="-lpthread -lm" \ --bindir="$HOME/bin" \ --enable-gpl \ --enable-gnutls \ --enable-libaom \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libsvtav1 \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-cuda-nvcc \ --enable-nvenc \ --enable-cuda \ --enable-cuvid \ --enable-libnpp \ --enable-nonfree && \ PATH="$HOME/bin:$PATH" make -j8 && \ make install && \ hash -r
There was a needed to edit the configure file to change the nvccflags_default="-gencode arch=compute_35,code=sm_35 -O2
to nvccflags_default="-gencode arch=compute_75,code=sm_75 -O2
since I'm on a Turing architecture GPU.After that I restarted, I find that ffmpeg is installed to /usr/local (the cuda stuff) and $HOME/bin for the remainder
https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
This website may help to find which nvccflags_default to use.
for those who are lurking, you can just add --nvccflags="-gencode arch=compute_75,code=sm_75 -O2"
to configure command of ffmpeg and you don't need to change anything in the source code.
Weird! inside docker ffmpeg configured without adding nvccflags but on the host i have to add _75. docker container got cuda-10 while host is of cuda-11. same issue with container with cuda-10.
Not running ./configure with sudo worked for me
For people with problem with NVCC, try to check if CUDA is installed properly. Also, seems like nvcc is not in path, but if you look at /usr/local/cuda/bin you can find the binaries related to the Nvidia CUDA Compiler (nvcc).
So, in my Ubuntu 20.04: export PATH=$PATH:/usr/local/cuda/bin solved the problem.
Still had this issue in Ubuntu-based Pop!_OS 22.04, had done everything else and finally adding the directory to path as @caio-vinicius got it working.
NVCC may actually be installed correctly, you just need to make sure that your GCC version is < 10. If you check in the error logs, it says that versions gcc greater than 10 are not supported, but the console logged error message is that nvcc is not installed!
To fix this:
Install gcc-9, if not yet installed.
sudo apt install libgcc-9-dev
Update alternatives to be able to select gcc 9.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 60
Select gcc 9 as the used alternative.
sudo update-alternatives --config gcc
Now compile, and it should work.
Note that this is a common trend where applications report an unrelated error while the underlying error is the wrong gcc version. If you encounter mysterious errors in the future, one of the first things you should do is switch to a higher gcc version! (For example, this causes a massive headache with being unable to build nvidia-dkms drivers with lower gcc versions, and the error is only reported in the logs)
For the sake of posterity, using lmod, I solved it by getting GCC to be compatible with the loaded CUDA:
module load system/CUDA/11.8.0 module load compiler/GCC/11.3.0
for those who are lurking, you can just add
--nvccflags="-gencode arch=compute_75,code=sm_75 -O2"
to configure command of ffmpeg and you don't need to change anything in the source code.
Hi. My error was due to an incompatible version of gcc. To solve I add to add -ccbin clang-14 to the nvccflags: --nvccflags="-ccbin clang-14 -gencode arch=compute_75,code=sm_75 -O2"
System information (version)
Detailed description
I follow this instruction to install ffmpeg. But it fail to check nvcc.