mirror_zfs/module/zcommon
Gvozden Neskovic 70b258fc96 Fletcher4 implementation using avx512f instruction set
Algorithm runs 8 parallel sums, consuming 8x uint32_t elements per
loop iteration. Size alignment of main fletcher4 methods is adjusted
accordingly. New implementation is called 'avx512f'.

Note: byteswap method can be implemented more efficiently when avx512bw hardware
becomes available. Currently, it is ~ 2x slower than native method.

Table shows result of full (native) fletcher4 calculation for different buffer size:

fletcher4   4KB     16KB    64KB    128KB   256KB   1MB     16MB
--------------------------------------------------------------------
[scalar]    1213    1228    1231    1231    1225    1200    1160
[sse2]      2374    2442    2459    2456    2462    2250    2220
[avx2]      4288    4753    4871    4893    4900    4050    3882
[avx512f]   5975    8445    9196    9221    9262    6307    5620

Signed-off-by: Gvozden Neskovic <neskovic@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #4952
2016-08-16 14:11:14 -07:00
..
Makefile.in Fletcher4 implementation using avx512f instruction set 2016-08-16 14:11:14 -07:00
zfs_comutil.c Illumos #2882, #2883, #2900 2013-09-04 15:49:00 -07:00
zfs_deleg.c Change ASSERT(!"...") to cmn_err(CE_PANIC, ...) 2015-03-03 13:22:21 -08:00
zfs_fletcher_avx512.c Fletcher4 implementation using avx512f instruction set 2016-08-16 14:11:14 -07:00
zfs_fletcher_intel.c Implementation of AVX2 optimized Fletcher-4 2016-06-02 14:30:51 -07:00
zfs_fletcher_sse.c Prevent segfaults in SSE optimized Fletcher-4 2016-07-19 09:03:44 -07:00
zfs_fletcher.c Fletcher4 implementation using avx512f instruction set 2016-08-16 14:11:14 -07:00
zfs_namecheck.c OpenZFS 6314 - buffer overflow in dsl_dataset_name 2016-06-28 13:47:03 -07:00
zfs_prop.c OpenZFS 2605, 6980, 6902 2016-06-28 13:47:02 -07:00
zfs_uio.c Fix uio_prefaultpages for 0 length iovec 2015-12-15 16:19:55 -08:00
zpool_prop.c Implement large_dnode pool feature 2016-06-24 13:13:21 -07:00
zprop_common.c Change KM_PUSHPAGE -> KM_SLEEP 2015-01-16 14:41:26 -08:00