Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ERROR: failed checking for nvcc. #46

Closed
HoangTienDuc opened this issue Aug 18, 2020 · 21 comments
Closed

ERROR: failed checking for nvcc. #46

HoangTienDuc opened this issue Aug 18, 2020 · 21 comments

Comments

@HoangTienDuc
Copy link

System information (version)
  • OpenCV == 4.2.0.34
  • Operating System / Platform == ubuntu 18.04
  • Miniconda-python 3.7
  • Cuda 11.0
Detailed description

I follow this instruction to install ffmpeg. But it fail to check nvcc.

@mdoijade
Copy link
Collaborator

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

@katsar0v
Copy link

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.

@Tony763
Copy link

Tony763 commented Nov 25, 2020

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'

@Tony763
Copy link

Tony763 commented Nov 25, 2020

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.

@swissbeats93
Copy link

@Tony763 where do you alter the nvccflags_default ?

@Tony763
Copy link

Tony763 commented Nov 25, 2020

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

@swissbeats93
Copy link

I don't see what you altered it to @Tony763, also doesn't the presence of cuda say that you have cuvid present?

@Tony763
Copy link

Tony763 commented Nov 25, 2020

vccflags_default="-gencode arch=compute_35,code=sm_35 -O2 according to cuda-compiler-driver-nvcc

@swissbeats93
Copy link

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

@Tony763
Copy link

Tony763 commented Nov 25, 2020

@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

@swissbeats93
Copy link

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?

@swissbeats93
Copy link

This is what I did.

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"

  • I proceeded to install ffmpeg like so:
    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

pecord added a commit to pecord/FFmpeg that referenced this issue Mar 10, 2021
When I tried to compile with cuda support I got `nvcc fatal : Unsupported gpu architecture 'compute_30'`

I googled that and found this issue - NVIDIA/cuda-samples#46 - where they suggested changing it to `nvccflags_default="-gencode arch=compute_75,code=sm_75 -O2`

I wanted to try making it work for multiple versions - I found this webpage - https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/
that listed flags for max compatibility
@the-uniq-sam
Copy link

https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/

This website may help to find which nvccflags_default to use.

@mike1808
Copy link

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.

@GowthamKudupudi
Copy link

GowthamKudupudi commented Jul 21, 2021

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.

@hitanshsingla
Copy link

hitanshsingla commented Aug 2, 2021

Not running ./configure with sudo worked for me

@caio-vinicius
Copy link

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.

@juflunaca
Copy link

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.

@jeff-j-chen
Copy link

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)

@VasLem
Copy link

VasLem commented Aug 11, 2023

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

@gahadzre
Copy link

gahadzre commented Apr 1, 2024

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"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests