On 11/23/24 23:10, Jerome Martinez wrote:

Le 23/11/2024 à 20:58, Lynne via ffmpeg-devel a écrit :
This allows the encoder to fully saturate all queues the GPU
has, giving a good 10% in certain cases and resolutions.


Using a RTX 4070:
+50% (!!!) with 2K 10-bit content.
+17% with 4K 16-bit content.
Also the speed with 2K content is now 4x the speed of 4K content which is similar to the SW encoder (with similar count of slices) and which is the expected result, it seems that a bottleneck with smaller resolutions is removed.


Unfortunatly, it has a drawback, a 6K5K content which was well handled without this patch is now having an immediate error: [vost#0:0/ffv1_vulkan @ 0x10467840] [enc:ffv1_vulkan @ 0x12c011c0] Error submitting video frame to the encoder [vost#0:0/ffv1_vulkan @ 0x10467840] [enc:ffv1_vulkan @ 0x12c011c0] Error encoding a frame: Cannot allocate memory [vost#0:0/ffv1_vulkan @ 0x10467840] Task finished with error code: -12 (Cannot allocate memory) [vost#0:0/ffv1_vulkan @ 0x10467840] Terminating thread with return code -12 (Cannot allocate memory)

Which is a problem, the handling of 6K5K being good on the RTX 4070 (3x faster than a CPU at the same price) before this patch. Is it possible to keep the handling of bigger resolutions on such card while keeping the performance boost of this patch?


To an extent. At high resolutions, -async_depth 0 (maximum) harms performance for higher

resolution. I get the best results with it set to 2 or 3 for 6k content, on my odd setup.

Increasing async_depth increases the amount of VRAM used, so that's the tradeoff.

Automatically detecting it is difficult, as Vulkan doesn't give you metrics on how much free

VRAM there is, so there's nothing we can do than to document it and hope users follow

the instructions in case they run out of memory.

The good news is that -async_depth 1 uses less VRAM than before this patch.

Must of the VRAM used is from somewhere within Nvidia's black-box driver, as RADV

uses 1/3rd of the VRAM at the same content and async_depth settings. Nothing we

can do about this too.


This also improves error resilience if an allocation fails,
and properly cleans up after itself if it does.

Looks like that this part does not work, still a freeze if an allocation fails.


This is due to Nvidia's drivers. If you switch to using their GSP

firmware, recovery is instant, pretty much.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to