]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
erasure-code/isa/xor_op: add neon-based region_xor implementation
authorchenxuqiang <chenxuqiang3@hisilicon.com>
Thu, 18 May 2023 06:34:19 +0000 (14:34 +0800)
committerRongqi Sun <sunrongqi@huawei.com>
Wed, 13 Dec 2023 02:21:39 +0000 (10:21 +0800)
commit66b2e34d368d0bc9d03e6a5dc666159815d800bf
tree39453e31ecf0ee291a7a50d4797b1442584127a8
parent330161855eee74f99ca01cce964e6dcd3726853d
erasure-code/isa/xor_op: add neon-based region_xor implementation

The load instruction of NEON can load 128 bits. Generally, the CPU has
two load channels. Therefore, the 32-byte Region_xor can be implemented.
According to the test by ceph_erasure_code_benchmark, the performance
is improved by more than 20% ~ 50% on average.

loop = 10000

    (k, m, size)   |   base(s)  |   neon(s)
 ------------------------------------------
   (4, 1, 16384)   |   0.018    |   0.015
 ------------------------------------------
   (4, 1, 65536)   |   0.043    |   0.037
 ------------------------------------------
   (4, 1, 102400)  |   0.058    |   0.049
 ------------------------------------------
   (8, 1, 32768)   |   0.034    |   0.029
 ------------------------------------------
   (8, 1, 65536)   |   0.052    |   0.045
 ------------------------------------------
   (8, 1, 102400)  |   0.068    |   0.061
 ------------------------------------------
   (8, 1, 524288)  |   0.631    |   0.420
 ------------------------------------------
   (8, 1, 1048576) |   1.561    |   0.931
 ------------------------------------------
   (8, 1, 8388608) |   16.70    |   8.244
 ------------------------------------------

Signed-off-by: chenxuqiang <chenxuqiang3@hisilicon.com>
src/erasure-code/isa/xor_op.cc
src/erasure-code/isa/xor_op.h