Details
-
Bug
-
Status: Closed (View Workflow)
-
Critical
-
Resolution: Fixed
-
10.5(EOL), 10.6(EOL), 10.11, 11.4, 11.8, 12.3
-
Not for Release Notes
-
The AVX512 implementation of CRC-32 was aligned between clang and other compilers to avoid using AVX512DQ instructions.
Description
-
- Summary
`AVX512DQ` is not needed in this case because `AVX512VL` and `AVX512F` generate the same assembly code: https://godbolt.org/z/15M4ds9x5
I found this while running benchmarks in my [Python library](https://github.com/lava-sh/crc32c-rs); on [my hardware](https://github.com/lava-sh/crc32c-rs/tree/main/benchmarks/python#system-information), the MariaDB CRC32C version was faster for the following sizes: `1..48 B`, `256 B..2 KiB`, `4 KiB..16 KiB`; yes, I know that performance depends heavily on the CPU, and each CPU will have its own potentially fastest implementation (info from this repo: https://github.com/corsix/fast-crc32)
Attachments
Issue Links
- is caused by
-
MDEV-33817 Implement AVX512BW and VPCLMULQDQ based CRC-32 algorithms
-
- Closed
-
- relates to
-
MDEV-39058 Suboptimal performance of crc32_avx512()
-
- Stalled
-