Xilinx / video-sdk

https://xilinx.github.io/video-sdk
Other
31 stars 14 forks source link

High PCIe loads on card combined with manual job assignment to both devices can lead to slower encodes #83

Closed shaunclimbon closed 1 year ago

shaunclimbon commented 1 year ago

A single ffmpeg command can be used to split large jobs (e.g. ABR ladder with many outputs) across multiple devices with the "-lxlnx_hwdev" flag. However, when a single card is subject to high PCIe loads, such as encode-only at near maximum capacity on both devices of the card, using two separate ffmpeg commands to target each card individually yields faster overall encode speeds.

Suggest adding a note about this to documentation. For example, maybe under "Assigning Jobs to Specific Devices" or "Known Issues".

NastoohX commented 1 year ago

Hi, Thank you for your input. The primary use case for "-lxlnx_hwdev" flag is in ABR ladders, where preserving frame timing is important, as this allows for distributed processing, while ensuring proper synchronisation across distributed tasks, e.g., a HLS ladder, where frame accurate timing among different rungs is necessary. Ensuring this synchronisation does impose a performance penalty. Therefore, as you've noted, if synchronisation between 2 different FFmpeg tasks is not needed, they should be run independently. Cheers,