ffmpeg CUDA fails

trying to use a quadro p2000 to do hardware accelerated ffmpeg processes - says I need updated driver, but just installed all updated software…

anyone know how I can work this?

Thanks - SDC

sdcoston@CFS:/mnt/NFS/CFS_tank/CFS_Media/DVR_TV/Treadstone (2019)/Season 01$ sudo ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i ‘Treadstone (2019) - S01E03 - The Berlin Proposal.ts’ -c:a copy -c:v h264_nvenc -b:v 5M ‘Treadstone.2019-S01E03.mkv’
[sudo] password for sdcoston:
ffmpeg version N-95673-g007e03348d Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --enable-nonfree --enable-cuda-sdk --enable-libnpp --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64
libavutil 56. 35.101 / 56. 35.101
libavcodec 58. 60.100 / 58. 60.100
libavformat 58. 34.101 / 58. 34.101
libavdevice 58. 9.100 / 58. 9.100
libavfilter 7. 66.100 / 7. 66.100
libswscale 5. 6.100 / 5. 6.100
libswresample 3. 6.100 / 3. 6.100
[h264 @ 0x56099a755780] Increasing reorder buffer to 2
Input #0, mpegts, from ‘Treadstone (2019) - S01E03 - The Berlin Proposal.ts’:
Duration: 01:05:56.71, start: 1.400000, bitrate: 4131 kb/s
Program 1
Metadata:
service_name : Service01
service_provider: FFmpeg
Stream #0:0[0x100]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p(progressive), 1280x720 [SAR 1:1 DAR 16:9], Closed Captions, 59.94 fps, 59.94 tbr, 90k tbn, 119.88 tbc
Stream #0:10x101: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, 5.1(side), fltp, 384 kb/s
Stream #0:20x102: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 192 kb/s
File ‘Treadstone.2019-S01E03.mkv’ already exists. Overwrite? [y/N] y
Stream mapping:
Stream #0:0#0:0 (h264 (h264_cuvid) → h264 (h264_nvenc))
Stream #0:1#0:1 (copy)
Press [q] to stop, [?] for help
[h264_nvenc @ 0x56099a814500] Driver does not support the required nvenc API version. Required: 9.1 Found: 9.0
[h264_nvenc @ 0x56099a814500] The minimum required Nvidia driver for nvenc is 435.21 or newer
Error initializing output stream 0:0 – Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
sdcoston@CFS:/mnt/NFS/CFS_tank/CFS_Media/DVR_TV/Treadstone (2019)/Season 01$ nvidia-smi
Sat Nov 9 14:28:54 2019
±----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.00 Driver Version: 418.87.00 CUDA Version: 10.1 |
|-------------------------------±---------------------±---------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro P2000 On | 00000000:81:00.0 On | N/A |
| 47% 35C P8 5W / 75W | 182MiB / 5057MiB | 0% Default |
±------------------------------±---------------------±---------------------+

±----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 3688 G /usr/lib/xorg/Xorg 85MiB |
| 0 4114 G /usr/bin/gnome-shell 94MiB |
±----------------------------------------------------------------------------+
sdcoston@CFS:/mnt/NFS/CFS_tank/CFS_Media/DVR_TV/Treadstone (2019)/Season 01$

It says you need driver 435.21 or newer

You have 418.87.00

That won’t work. To get the latest driver for your GPU, go to:

http://www.nvidia.com/drivers

and follow the wizard there. Select the ODE setting. It will take you to a 440.31 driver (currently - may be newer in the future) for your Quadro P2000, which will satisfy the 435.21 or newer requirement.

The driver bundled with the latest CUDA toolkit is not guaranteed to be the latest driver for your GPU.

I have the same problem and the provided answer doesn’t solve the issue. I’m experiencing the issue on a Ubuntu 16.04 installation which provides nvidia-418 as the latest driver when combined with an installation of CUDA. Yes, it’s possible to install 440.31 when purging everything 418 related and all of CUDA, but then it’s no longer possible to build a working ffmpeg using CUDA. It doesn’t seem possible to reinstall CUDA after installing 440.31 (without going back to 418.87.00).

After installing the 440.31 driver, then install CUDA toolkit only either via:

package manager: install the cuda-toolkit package instead of the cuda package. You may need to be specific: cuda-toolkit-10-1

runfile installer: deselect the option to install the bundled driver

I suggest reading the CUDA linux install guide.

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

Thanks Robert!

I actually figured it out early this am - and this is exactly what I did.
First, I uninstalled all drivers and cuda from my 18.04 server,
then installed the newest nvidia driver downloaded from the nvidia.com site and rebooted,
then checked the driver using

nvidia-smi 

command,
then I installed cuda-toolkit using the runfile installer (.deb file did not work for me) and deselecting the option to install the bundled driver.

the cuda installation guide was helpful for pre-install and post-install tasks and assuring proper PATH alterations and post-install testing.

Hi Robert,

Unfortunately for my ubuntu 16.04 system this doesn’t result in a working solution. I’ve removed (purged) all installed nvidia and cuda packages, rebooted the system and verified no nvidia drivers where active. Then installed the 440 driver by running NVIDIA-Linux-x86_64-440.31.run, rebooted again. Then re-installed cuda-toolkit-10-1 through apt-get.

nvidia-smi provides this output:

root@fractal:~# nvidia-smi Wed Nov 13 10:04:15 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 440.31 Driver Version: 440.31 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 GeForce GT 710 Off | 00000000:01:00.0 N/A | N/A | | 40% 39C P0 N/A / N/A | 0MiB / 979MiB | N/A Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 Not Supported | +-----------------------------------------------------------------------------+ 

… but my custom built ffmpeg can’t open a cuda device:

[AVHWDeviceContext @ 0x3ae97c0] cu->cuInit(0) failed -> CUDA_ERROR_UNKNOWN: unknown error [h264_cuvid @ 0x3aeb5c0] Error creating a CUDA device cuvid hwaccel requested for input stream #0:0, but cannot be initialized. 

Your GeForce GT 710 appears to be a Fermi device.

https://www.techpowerup.com/gpu-specs/geforce-gt-710.c2614

Fermi GPUs have not been supported for CUDA since CUDA 8, and the last driver that officially supported them was 390.xx

Your GPU is too old to be used with any modern software.

To confirm this, build and run the CUDA deviceQuery and vectorAdd sample codes.

https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#verify-installation

(they are likely to simply throw the same error - CUDA error unknown)

To fully confirm lack of support, i.e. Fermi, you would need to purge the system of all NVIDIA software and reload CUDA 8. If the deviceQuery in CUDA 8 shows a cc2.x GPU, then your GPU is too old to be used with any of this.

Running deviceQuery works and shows this output:

./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "GeForce GT 710" CUDA Driver Version / Runtime Version 10.2 / 10.1 CUDA Capability Major/Minor version number: 3.5 Total amount of global memory: 979 MBytes (1026883584 bytes) ( 1) Multiprocessors, (192) CUDA Cores/MP: 192 CUDA Cores GPU Max Clock rate: 954 MHz (0.95 GHz) Memory Clock rate: 800 Mhz Memory Bus Width: 64-bit L2 Cache Size: 524288 bytes Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096) Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 65536 Warp size: 32 Maximum number of threads per multiprocessor: 2048 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): (1024, 1024, 64) Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 1 copy engine(s) Run time limit on kernels: No Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device supports Compute Preemption: No Supports Cooperative Kernel Launch: No Supports MultiDevice Co-op Kernel Launch: No Device PCI Domain ID / Bus ID / location ID: 0 / 1 / 0 Compute Mode: < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.1, NumDevs = 1 Result = PASS 

To my knowledge my card is based on Kepler architecture: https://www.zotac.com/us/product/graphics_card/geforce®-gt-710-1gb-pcie-x-1

Forgot to run vectorAdd, but that also runs successful.

[Vector addition of 50000 elements] Copy input data from the host memory to the CUDA device CUDA kernel launch with 196 blocks of 256 threads Copy output data from the CUDA device to the host memory Test PASSED Done 

Errrr, okay… …I don’t know what changed, but I am now able to run my custom ffmpeg as well. The issue has disappeared, although I’m not aware of making changes in the mean time. Thanks for your efforts.