[FFmpeg-devel] [PATCH 09/11] avutil/half2float: use native _Float16 if available
James Almer
jamrial at gmail.com
Thu Aug 11 01:02:18 EEST 2022
On 8/10/2022 6:58 PM, Timo Rothenpieler wrote:
> On 10.08.2022 23:03, Andreas Rheinhardt wrote:
>> Timo Rothenpieler:
>>> _Float16 support was available on arm/aarch64 for a while, and with gcc
>>> 12 was enabled on x86 as long as SSE2 is supported.
>>>
>>> If the target arch supports f16c, gcc emits fairly efficient assembly,
>>> taking advantage of it. This is the case on x86-64-v3 or higher.
>>> Without f16c, it emulates it in software using sse2 instructions.
>>
>> How is the performance of this emulation compared to our current code?
>> And how is the native _Float16 performance compared to the current code?
>
> The performance of the sse2 emulation is actually surprisingly poor, in
> a quick test:
>
> ./ffmpeg -s 512x512 -f rawvideo -pix_fmt rgbaf16 -i /dev/zero -vf
> format=yuv444p -f null -
>
> _Float16 full SSE2 emulation:
> frame=50074 fps=848 q=-0.0 size=N/A time=00:33:22.96 bitrate=N/A
> speed=33.9x
>
> _Float16 f16c accelerated (Zen2, --cpu=znver2):
> frame=50636 fps=1965 q=-0.0 Lsize=N/A time=00:33:45.40 bitrate=N/A
> speed=78.6x
>
> classic half2float full software implementation:
> frame=49926 fps=1605 q=-0.0 Lsize=N/A time=00:33:17.00 bitrate=N/A
> speed=64.2x
>
> Unfortunately I don't see a good way to runtime-detect the presence of
> f16c without going full self-written assembly, which would diminish the
> compilers ability to take advantage of f16c only ever operating on 4 or
> 8 values at a time.
> But the HAVE_FLOAT16 checks could be paired with a check for __F16C__,
> which seems to universally be the established define for "the code is
> being built f16c optimizations".
That should do it, yes. We do check for __SSE__ and similar for some
other lavu functions after all.
>
> That at least avoids the case of the apparently quite slow sse2 emulation.
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
More information about the ffmpeg-devel
mailing list