Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.5, 10.6, 10.11
-
AMD64
Description
MDEV-22749 introduced faster checksum calculation on AMD64 by means of the 128-bit carry-less multiplication (pclmul) of the AVX ISA extension. Some recent ISA extensions include wider vpclmulqdq as well as vmovdqu8, which allows unaligned loads of up to 64 bytes at a time. Making use of these instructions could greatly improve performance.
Some reference implementations exist in NASM format in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called gzip, and the Castagnoli polynomial is referred to as SCTP or iSCSI.
Attachments
Issue Links
- causes
-
MDEV-34510 UBSAN: crc32 x86 - integer overflow
-
- Closed
-
-
MDEV-34565 MariaDB crashes with SIGILL because the OS does not support AVX512
-
- Closed
-
- is blocked by
-
MDEV-22749 Implement portable PCLMUL accelerated crc32() with Intel intrinsics
-
- Closed
-
- relates to
-
MDEV-34062 mariadb-backup --backup is extremely slow at copying ib_logfile0
-
- Closed
-
-
MDEV-34070 mariadb-backup --prepare with larger --use-memory may be slower
-
- Confirmed
-
Activity
Field | Original Value | New Value |
---|---|---|
Link |
This issue is blocked by |
Description |
Some reference implementations exist in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called {{gzip}}, and the Castagnoli polynomial is referred to as SCTP or iSCSI. |
Some reference implementations exist in NASM format in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called {{gzip}}, and the Castagnoli polynomial is referred to as SCTP or iSCSI. The header file {{<immintrin.h>}} should define {{_mm512_clmulepi64_epi128()}} in recent enough compilers. In recent enough versions of {{clang}} there is {{__builtin_ia32_pclmulqdq512()}}. |
Summary | Implement AVX-512 vpclmul based checksums | Implement AVX-512 vpclmulqdq based checksums |
Status | Open [ 1 ] | In Progress [ 3 ] |
Summary | Implement AVX-512 vpclmulqdq based checksums | Implement AVX512BW and VPCLMULQDQ based CRC-32 algorithms |
Description |
Some reference implementations exist in NASM format in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called {{gzip}}, and the Castagnoli polynomial is referred to as SCTP or iSCSI. The header file {{<immintrin.h>}} should define {{_mm512_clmulepi64_epi128()}} in recent enough compilers. In recent enough versions of {{clang}} there is {{__builtin_ia32_pclmulqdq512()}}. |
, which could greatly improve performance. Some reference implementations exist in NASM format in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called {{gzip}}, and the Castagnoli polynomial is referred to as SCTP or iSCSI. The header file {{<immintrin.h>}} should define {{_mm512_clmulepi64_epi128()}} in recent enough compilers. In recent enough versions of {{clang}} there is {{__builtin_ia32_pclmulqdq512()}}. |
Description |
, which could greatly improve performance. Some reference implementations exist in NASM format in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called {{gzip}}, and the Castagnoli polynomial is referred to as SCTP or iSCSI. The header file {{<immintrin.h>}} should define {{_mm512_clmulepi64_epi128()}} in recent enough compilers. In recent enough versions of {{clang}} there is {{__builtin_ia32_pclmulqdq512()}}. |
Some reference implementations exist in NASM format in https://github.com/intel/intel-ipsec-mb/ and https://github.com/intel/isa-l/ under the BSD 3-clause license. CRC-32 with the ISO 3309 polynomical is called {{gzip}}, and the Castagnoli polynomial is referred to as SCTP or iSCSI. |
Assignee | Marko Mäkelä [ marko ] | Vladislav Vaintroub [ wlad ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Link |
This issue relates to |
Assignee | Vladislav Vaintroub [ wlad ] | Marko Mäkelä [ marko ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Link | This issue relates to MDEV-34070 [ MDEV-34070 ] |
issue.field.resolutiondate | 2024-05-03 13:29:22.0 | 2024-05-03 13:29:21.584 |
Fix Version/s | 10.5.25 [ 29626 ] | |
Fix Version/s | 10.6.18 [ 29627 ] | |
Fix Version/s | 10.11.8 [ 29630 ] | |
Fix Version/s | 11.0.6 [ 29628 ] | |
Fix Version/s | 11.1.5 [ 29629 ] | |
Fix Version/s | 11.2.4 [ 29631 ] | |
Fix Version/s | 11.4.2 [ 29633 ] | |
Fix Version/s | 10.5 [ 23123 ] | |
Fix Version/s | 10.6 [ 24028 ] | |
Fix Version/s | 10.11 [ 27614 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Link |
This issue causes |
Link |
This issue causes |
Starting with GCC 8, clang 6, and MSVC 19.15, the following test program compiles into something that includes the vpclmulqdq instruction:
#include <immintrin.h>
#ifdef __GNUC__
#endif
unsigned f()
{
__m512i a= _mm512_setzero_si512();
}