]> git.proxmox.com Git - mirror_zfs.git/commit - cmd/ztest/ztest.c
Implementation of AVX2 optimized Fletcher-4
authorJinshan Xiong <jinshan.xiong@intel.com>
Wed, 9 Dec 2015 23:34:16 +0000 (15:34 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 2 Jun 2016 21:30:51 +0000 (14:30 -0700)
commit1eeb4562a72ab29345572609e1e4315ecd26c5a1
tree457bee35c73a92c056b5000671b18875b507c1e4
parent8fbbc6b4cf13f73d517ec4e826a7069a958fa5ba
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
12 files changed:
cmd/ztest/ztest.c
include/sys/Makefile.am
include/sys/spa.h
include/sys/spa_checksum.h [new file with mode: 0644]
include/zfs_fletcher.h
lib/libzpool/Makefile.am
lib/libzpool/kernel.c
man/man5/zfs-module-parameters.5
module/zcommon/Makefile.in
module/zcommon/zfs_fletcher.c
module/zcommon/zfs_fletcher_intel.c [new file with mode: 0644]
module/zcommon/zfs_prop.c