Open sanderjo opened 6 months ago
sander@bananapif3:~/git/rapidyenc/build$ ./rapidyenc_bench
Encode (unknown): 608.665 MB/s
Decode (unknown): 778.601 MB/s
CRC32 (generic): 418.045 MB/s
CRC32 256^n: 0.413567 Mop/s
For reference: on my laptop with 11th Gen Intel(R) Core(TM) i3-1115G4 @ 3.00GHz:
(base) sander@zwart2204:~/git/rapidyenc/build$ ./rapidyenc_bench
Encode (VBMI2): 8118.54 MB/s
Decode (VBMI2): 14876.9 MB/s
CRC32 (VPCLMUL): 20696.9 MB/s
CRC32 256^n: 63.5324 Mop/s
Thanks for testing.
I think they compare the K1 against a Cortex A55 - so that seems to be respectable. This page says it should be around a 1.3GHz A55.
Testing on a 1.8GHz Kryo Silver (A55 derivative):
Encode (NEON): 837.907 MB/s
Decode (NEON): 850.552 MB/s
CRC32 (generic): 5196.66 MB/s
CRC32 256^n: 9.89022 Mop/s
So roughly in the same ballpark. Not quite their "2x NEON" claim, though the RVV code probably has some optimisation opportunities.
(also, do you know the clockspeed? they don't seem to advertise that)
I think the CRC32 kernel displayed above is incorrect as it should be using ARM-CRC acceleration.
I don't think your CPU supports scalar crypto (Zbc/Zbkc), so your CRC32 result is likely for the generic implementation.
(also, do you know the clockspeed? they don't seem to advertise that)
CPU: Spacemit X60 (8) @ 1.600GHz
sander@bananapif3:~$ neofetch
sander@bananapif3
-----------------
█ █ █ █ █ █ █ █ █ █ █ OS: Armbian (24.5.0-trunk) riscv64
███████████████████████ Host: spacemit k1-x deb1 board
▄▄██ ██▄▄ Kernel: 6.1.15-legacy-k1
▄▄██ ███████████ ██▄▄ Uptime: 2 hours, 13 mins
▄▄██ ██ ██ ██▄▄ Packages: 1321 (dpkg)
▄▄██ ██ ██ ██▄▄ Shell: bash 5.2.21
▄▄██ ██ ██ ██▄▄ Resolution: 1920x1080
▄▄██ █████████████ ██▄▄ Terminal: /dev/pts/1
▄▄██ ██ ██ ██▄▄ CPU: Spacemit X60 (8) @ 1.600GHz
▄▄██ ██ ██ ██▄▄ Memory: 224MiB / 3809MiB
▄▄██ ██ ██ ██▄▄
▄▄██ ██▄▄
███████████████████████
█ █ █ █ █ █ █ █ █ █ █
sander@bananapif3:~$
I think the CRC32 kernel displayed above is incorrect as it should be using ARM-CRC acceleration. I don't think your CPU supports scalar crypto (Zbc/Zbkc), so your CRC32 result is likely for the generic implementation.
Some other z-options, but not zbc nor zbkc
sander@bananapif3:~$ cat /proc/cpuinfo
processor : 0
hart : 0
model name : Spacemit(R) X60
isa : rv64imafdcv_sscofpmf_sstc_svpbmt_zicbom_zicboz_zicbop_zihintpause
mmu : sv39
mvendorid : 0x710
marchid : 0x8000000058000001
mimpid : 0x1000000049772200
Thanks for the info!
By the way, if there's something else you want to test with your new board, there is RVV code in ParPar as well (which is also used as a base for par2cmdline-turbo).
If you want to test, you'll need the dev branch of the code, do a cmake in the test/bench folder, then run ./bench-gf16 -fmuladdmp
Following your advice on https://github.com/sabnzbd/sabctools/issues/116#issuecomment-2117749041 ... work with rapidyenc ... and ...
Bingo! v-commands in the deassembled library