HomeFreeBSD

Implementation of AVX2 optimized Fletcher-4

Description

Implementation of AVX2 optimized Fletcher-4

New functionality:

  • Preserves existing scalar implementation.
  • Adds AVX2 optimized Fletcher-4 computation.
  • Fastest routines selected on module load (benchmark).
  • Test case for Fletcher-4 added to ztest.

New zcommon module parameters:

  • zfs_fletcher_4_impl (str): selects the implementation to use. "fastest" - use the fastest version available "cycle" - cycle trough all available impl for ztest "scalar" - use the original version "avx2" - new AVX2 implementation if available

Performance comparison (Intel i7 CPU, 1MB data buffers):

  • Scalar: 4216 MB/s
  • AVX2: 14499 MB/s

See contents of /sys/module/zcommon/parameters/zfs_fletcher_4_impl
to get list of supported values. If an implementation is not supported
on the system, it will not be shown. Currently selected option is
enclosed in [].

Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Signed-off-by: Andreas Dilger <andreas.dilger@intel.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #4330

Details

Provenance
Jinshan Xiong <jinshan.xiong@intel.com>Authored on Dec 9 2015, 11:34 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Jun 2 2016, 9:30 PM
Parents
rG8fbbc6b4cf13: Linux 4.7 compat: handler->set() takes both dentry and inode
Branches
Unknown
Tags
Unknown