NVIDIA / cuda-samples

Samples for CUDA Developers which demonstrates features in CUDA Toolkit
Other
6.24k stars 1.79k forks source link

ERROR: failed checking for nvcc. #46

Closed HoangTienDuc closed 4 years ago

HoangTienDuc commented 4 years ago
System information (version)
Detailed description

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

mdoijade commented 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

katsar0v commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

@Tony763 where do you alter the nvccflags_default ?

Tony763 commented 3 years ago

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 commented 3 years ago

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

Tony763 commented 3 years ago

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

swissbeats93 commented 3 years ago

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 commented 3 years ago

@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 commented 3 years ago

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 commented 3 years ago

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"

After that I restarted, I find that ffmpeg is installed to /usr/local (the cuda stuff) and $HOME/bin for the remainder

the-uniq-sam commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

Not running ./configure with sudo worked for me

caio-vinicius commented 3 years ago

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 commented 2 years ago

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 commented 1 year ago

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 commented 1 year ago

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 commented 6 months ago

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"