animetosho / ParPar

High performance PAR2 create client for NodeJS
190 stars 19 forks source link

ParPar on RISC-V with RVV 1.0 (Armbian Ubuntu Noble) #59

Open sanderjo opened 1 month ago

sanderjo commented 1 month ago

As requested in https://github.com/animetosho/rapidyenc/issues/5#issuecomment-2118823466

sanderjo commented 1 month ago

With the standard github version: error

sander@bananapif3:~/git/ParPar$ git log | head -20
commit 9d8a607ac6ad1ec4b16fae7f8e61edc40c6f12cf
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Wed Oct 18 12:18:47 2023 +1000

    Update version

commit 30d29e16627a7dccfa701e9a4c032b3fc248dc43
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Wed Oct 18 12:17:38 2023 +1000

    Log even more info on failed ParPar execution in test

commit c30fbce361eaaa9bfd4baebf9deaf602dc443ac5
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Wed Oct 18 11:57:42 2023 +1000

    Display exit code when ParPar execution fails in test
sander@bananapif3:~/git/ParPar$ node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@9.3.0
gyp info using node@18.19.1 | linux | riscv64
gyp info find Python using Python version 3.12.3 found at "/usr/bin/python3"
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args   '/usr/share/nodejs/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/sander/git/ParPar/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/share/nodejs/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/include/nodejs/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/usr/include/nodejs',
gyp info spawn args   '-Dnode_gyp_dir=/usr/share/nodejs/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/usr/include/nodejs/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/sander/git/ParPar',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/sander/git/ParPar/build'
  CXX(target) Release/obj.target/gf16/gf16/gf16mul.o
  AR(target) Release/obj.target/gf16.a
  COPY Release/gf16.a
  CC(target) Release/obj.target/gf16_avx/gf16/gf16_shuffle_avx.o
  AR(target) Release/obj.target/gf16_avx.a
  COPY Release/gf16_avx.a
  CC(target) Release/obj.target/gf16_avx2/gf16/gf16_xor_avx2.o
  CC(target) Release/obj.target/gf16_avx2/gf16/gf16_shuffle_avx2.o
  CC(target) Release/obj.target/gf16_avx2/gf16/gf_add_avx2.o
  CC(target) Release/obj.target/gf16_avx2/gf16/gf16_cksum_avx2.o
  AR(target) Release/obj.target/gf16_avx2.a
  COPY Release/gf16_avx2.a
  CC(target) Release/obj.target/gf16_avx512/gf16/gf16_xor_avx512.o
  CC(target) Release/obj.target/gf16_avx512/gf16/gf16_shuffle_avx512.o
  CC(target) Release/obj.target/gf16_avx512/gf16/gf_add_avx512.o
  CC(target) Release/obj.target/gf16_avx512/gf16/gf16_cksum_avx512.o
  AR(target) Release/obj.target/gf16_avx512.a
  COPY Release/gf16_avx512.a
  CC(target) Release/obj.target/gf16_generic/gf16/gf16_lookup.o
  CC(target) Release/obj.target/gf16_generic/gf16/gf_add_generic.o
  CC(target) Release/obj.target/gf16_generic/gf16/gf16_cksum_generic.o
  AR(target) Release/obj.target/gf16_generic.a
  COPY Release/gf16_generic.a
  CC(target) Release/obj.target/gf16_gfni/gf16/gf16_affine_gfni.o
  AR(target) Release/obj.target/gf16_gfni.a
  COPY Release/gf16_gfni.a
  CC(target) Release/obj.target/gf16_gfni_avx2/gf16/gf16_affine_avx2.o
  CC(target) Release/obj.target/gf16_gfni_avx2/src/platform_warnings.o
  AR(target) Release/obj.target/gf16_gfni_avx2.a
  COPY Release/gf16_gfni_avx2.a
  CC(target) Release/obj.target/gf16_gfni_avx512/gf16/gf16_affine_avx512.o
  AR(target) Release/obj.target/gf16_gfni_avx512.a
  COPY Release/gf16_gfni_avx512.a
  CC(target) Release/obj.target/gf16_neon/gf16/gf16_shuffle_neon.o
  CC(target) Release/obj.target/gf16_neon/gf16/gf16_clmul_neon.o
  CC(target) Release/obj.target/gf16_neon/gf16/gf_add_neon.o
  CC(target) Release/obj.target/gf16_neon/gf16/gf16_cksum_neon.o
  AR(target) Release/obj.target/gf16_neon.a
  COPY Release/gf16_neon.a
  CC(target) Release/obj.target/gf16_rvv/gf16/gf16_shuffle128_rvv.o
In file included from ../gf16/gf16_shuffle128_rvv.c:1:
../gf16/gf16_rvv_common.h: In function ‘gf16_vec_mul2_rvv’:
../gf16/gf16_rvv_common.h:33:20: error: incompatible type for argument 3 of ‘__riscv_vxor_vx_i16m1_m’
   33 |                 v, v,
      |                    ^
      |                    |
      |                    vint16m1_t
In file included from ../gf16/gf16_rvv_common.h:9:
/usr/lib/gcc/riscv64-linux-gnu/14/include/riscv_vector.h:40:9: note: expected ‘short int’ but argument is of type ‘vint16m1_t’
   40 | #pragma riscv intrinsic "vector"
      |         ^~~~~
../gf16/gf16_rvv_common.h:13:17: error: too many arguments to function ‘__riscv_vxor_vx_i16m1_m’
   13 | #  define RV(f) __riscv_##f
      |                 ^~~~~~~~
../gf16/gf16_rvv_common.h:29:16: note: in expansion of macro ‘RV’
   29 |         return RV(vxor_vx_i16m1_m)
      |                ^~
/usr/lib/gcc/riscv64-linux-gnu/14/include/riscv_vector.h:40:9: note: declared here
   40 | #pragma riscv intrinsic "vector"
      |         ^~~~~
../gf16/gf16_shuffle128_rvv.c: In function ‘_vlseg2e8’:
../gf16/gf16_shuffle128_rvv.c:16:38: error: ‘vd’ undeclared (first use in this function); did you mean ‘d’?
   16 |         *v0 = RV(vget_v_u8m1x2_u8m1)(vd, 0);
      |                                      ^~
      |                                      d
../gf16/gf16_shuffle128_rvv.c:16:38: note: each undeclared identifier is reported only once for each function it appears in
../gf16/gf16_shuffle128_rvv.c:15:22: warning: unused variable ‘d’ [-Wunused-variable]
   15 |         vuint8m1x2_t d = RV(vlseg2e8_v_u8m1x2)(src, vl);
      |                      ^
In file included from ../gf16/gf16_shuffle128_rvv.c:244:
../gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_exp_rvv’:
../gf16/gf16_checksum_rvv.h:71:35: error: incompatible type for argument 4 of ‘__riscv_vxor_vv_i16m1_m’
   71 |                         res, res, _checksum,
      |                                   ^~~~~~~~~
      |                                   |
      |                                   vint16m1_t
/usr/lib/gcc/riscv64-linux-gnu/14/include/riscv_vector.h:40:9: note: expected ‘long unsigned int’ but argument is of type ‘vint16m1_t’
   40 | #pragma riscv intrinsic "vector"
      |         ^~~~~
../gf16/gf16_rvv_common.h:13:17: error: too many arguments to function ‘__riscv_vxor_vv_i16m1_m’
   13 | #  define RV(f) __riscv_##f
      |                 ^~~~~~~~
../gf16/gf16_checksum_rvv.h:67:23: note: in expansion of macro ‘RV’
   67 |                 res = RV(vxor_vv_i16m1_m)
      |                       ^~
/usr/lib/gcc/riscv64-linux-gnu/14/include/riscv_vector.h:40:9: note: declared here
   40 | #pragma riscv intrinsic "vector"
      |         ^~~~~
../gf16/gf16_rvv_common.h: In function ‘gf16_vec_mul2_rvv’:
../gf16/gf16_rvv_common.h:37:1: warning: control reaches end of non-void function [-Wreturn-type]
   37 | }
      | ^
make: *** [gf16_rvv.target.mk:127: Release/obj.target/gf16_rvv/gf16/gf16_shuffle128_rvv.o] Error 1
make: Leaving directory '/home/sander/git/ParPar/build'
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/share/nodejs/node-gyp/lib/build.js:203:23)
gyp ERR! stack     at ChildProcess.emit (node:events:517:28)
gyp ERR! stack     at ChildProcess._handle.onexit (node:internal/child_process:292:12)
gyp ERR! System Linux 6.1.15-legacy-k1
gyp ERR! command "/usr/bin/node" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/sander/git/ParPar
gyp ERR! node -v v18.19.1
gyp ERR! node-gyp -v v9.3.0
gyp ERR! not ok 
sander@bananapif3:~/git/ParPar$ 
sanderjo commented 1 month ago

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

This is unknown terrority for me.

The git looks older?

ander@bananapif3:~/git/ParPar$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/interface_redesign
  remotes/origin/master
sander@bananapif3:~/git/ParPar$ git checkout origin/dev
Note: switching to 'origin/dev'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 1410d77 GHA fixes
sander@bananapif3:~/git/ParPar$ 
sander@bananapif3:~/git/ParPar$ git log | head -10
commit 1410d77116404cac8190e03ef9f20657f64c99b9
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Thu May 16 10:22:56 2024 +1000

    GHA fixes

commit 37186c1eccb9d75f37b67e1ac6f79091e78328d7
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Sun May 12 19:24:02 2024 +1000

sander@bananapif3:~/git/ParPar$ 
sanderjo commented 1 month ago
sander@bananapif3:~/git/ParPar$ cd test/bench/
sander@bananapif3:~/git/ParPar/test/bench$ cmake
Usage

  cmake [options] <path-to-source>
  cmake [options] <path-to-existing-build>
  cmake [options] -S <path-to-source> -B <path-to-build>

Specify a source directory to (re-)generate a build system for it in the
current working directory.  Specify an existing build directory to
re-generate its build system.

Run 'cmake --help' for more information.

and

sander@bananapif3:~/git/ParPar/test/bench$ cmake ..
CMake Warning:
  Ignoring extra path from command line:

   ".."

CMake Error: The source directory "/home/sander/git/ParPar/test" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.
sanderjo commented 1 month ago

On the dev branch (right?), the node-gyp rebuild does not give a (real) error, so good? Where is the parpar binary now?

sander@bananapif3:~/git/ParPar$ git log | head -10
commit 1410d77116404cac8190e03ef9f20657f64c99b9
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Thu May 16 10:22:56 2024 +1000

    GHA fixes

commit 37186c1eccb9d75f37b67e1ac6f79091e78328d7
sander@bananapif3:~/git/ParPar$ node-gyp rebuild
gyp info it worked if it ends with ok
gyp info using node-gyp@9.3.0
gyp info using node@18.19.1 | linux | riscv64
gyp info find Python using Python version 3.12.3 found at "/usr/bin/python3"
gyp info spawn /usr/bin/python3
gyp info spawn args [
gyp info spawn args   '/usr/share/nodejs/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/home/sander/git/ParPar/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/share/nodejs/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/include/nodejs/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/usr/include/nodejs',
gyp info spawn args   '-Dnode_gyp_dir=/usr/share/nodejs/node-gyp',
gyp info spawn args   '-Dnode_lib_file=/usr/include/nodejs/<(target_arch)/node.lib',
gyp info spawn args   '-Dmodule_root_dir=/home/sander/git/ParPar',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/home/sander/git/ParPar/build'
  CXX(target) Release/obj.target/gf16/gf16/gf16mul.o
  AR(target) Release/obj.target/gf16.a
  COPY Release/gf16.a
  CC(target) Release/obj.target/gf16_avx/gf16/gf16_shuffle_avx.o
  AR(target) Release/obj.target/gf16_avx.a
  COPY Release/gf16_avx.a
  CC(target) Release/obj.target/gf16_avx2/gf16/gf16_xor_avx2.o
  CC(target) Release/obj.target/gf16_avx2/gf16/gf16_shuffle_avx2.o
  CC(target) Release/obj.target/gf16_avx2/gf16/gf_add_avx2.o
  CC(target) Release/obj.target/gf16_avx2/gf16/gf16_cksum_avx2.o
  AR(target) Release/obj.target/gf16_avx2.a
  COPY Release/gf16_avx2.a
  CC(target) Release/obj.target/gf16_avx512/gf16/gf16_xor_avx512.o
  CC(target) Release/obj.target/gf16_avx512/gf16/gf16_shuffle_avx512.o
  CC(target) Release/obj.target/gf16_avx512/gf16/gf_add_avx512.o
  CC(target) Release/obj.target/gf16_avx512/gf16/gf16_cksum_avx512.o
  AR(target) Release/obj.target/gf16_avx512.a
  COPY Release/gf16_avx512.a
  CC(target) Release/obj.target/gf16_generic/gf16/gf16_lookup.o
  CC(target) Release/obj.target/gf16_generic/gf16/gf_add_generic.o
  CC(target) Release/obj.target/gf16_generic/gf16/gf16_cksum_generic.o
  AR(target) Release/obj.target/gf16_generic.a
  COPY Release/gf16_generic.a
  CC(target) Release/obj.target/gf16_gfni/gf16/gf16_affine_gfni.o
  AR(target) Release/obj.target/gf16_gfni.a
  COPY Release/gf16_gfni.a
  CC(target) Release/obj.target/gf16_gfni_avx10/gf16/gf16_affine_avx10.o
  CC(target) Release/obj.target/gf16_gfni_avx10/gf16/gf_add_avx10.o
  AR(target) Release/obj.target/gf16_gfni_avx10.a
  COPY Release/gf16_gfni_avx10.a
  CC(target) Release/obj.target/gf16_gfni_avx2/gf16/gf16_affine_avx2.o
  CC(target) Release/obj.target/gf16_gfni_avx2/src/platform_warnings.o
  AR(target) Release/obj.target/gf16_gfni_avx2.a
  COPY Release/gf16_gfni_avx2.a
  CC(target) Release/obj.target/gf16_gfni_avx512/gf16/gf16_affine_avx512.o
  AR(target) Release/obj.target/gf16_gfni_avx512.a
  COPY Release/gf16_gfni_avx512.a
  CC(target) Release/obj.target/gf16_neon/gf16/gf16_shuffle_neon.o
  CC(target) Release/obj.target/gf16_neon/gf16/gf16_clmul_neon.o
  CC(target) Release/obj.target/gf16_neon/gf16/gf_add_neon.o
  CC(target) Release/obj.target/gf16_neon/gf16/gf16_cksum_neon.o
  AR(target) Release/obj.target/gf16_neon.a
  COPY Release/gf16_neon.a
  CC(target) Release/obj.target/gf16_rvv/gf16/gf16_shuffle128_rvv.o
In file included from ../gf16/gf16_shuffle128_rvv.c:238:
../gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_blocku_rvv’:
../gf16/gf16_checksum_rvv.h:35:16: warning: unused variable ‘vlmax’ [-Wunused-variable]
   35 |         size_t vlmax = RV(vsetvlmax_e8m1)();
      |                ^~~~~
  CC(target) Release/obj.target/gf16_rvv/gf16/gf_add_rvv.o
  CC(target) Release/obj.target/gf16_rvv/gf16/gf16_cksum_rvv.o
In file included from ../gf16/gf16_cksum_rvv.c:4:
../gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_blocku_rvv’:
../gf16/gf16_checksum_rvv.h:35:16: warning: unused variable ‘vlmax’ [-Wunused-variable]
   35 |         size_t vlmax = RV(vsetvlmax_e8m1)();
      |                ^~~~~
  AR(target) Release/obj.target/gf16_rvv.a
  COPY Release/gf16_rvv.a
  CC(target) Release/obj.target/gf16_rvv_zvbc/gf16/gf16_clmul_rvv.o
In file included from ../gf16/gf16_clmul_rvv.c:144:
../gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_blocku_rvv’:
../gf16/gf16_checksum_rvv.h:35:16: warning: unused variable ‘vlmax’ [-Wunused-variable]
   35 |         size_t vlmax = RV(vsetvlmax_e8m1)();
      |                ^~~~~
  AR(target) Release/obj.target/gf16_rvv_zvbc.a
  COPY Release/gf16_rvv_zvbc.a
  CC(target) Release/obj.target/gf16_sha3/gf16/gf16_clmul_sha3.o
  AR(target) Release/obj.target/gf16_sha3.a
  COPY Release/gf16_sha3.a
  CC(target) Release/obj.target/gf16_sse2/gf16/gf16_xor_sse2.o
  CC(target) Release/obj.target/gf16_sse2/gf16/gf16_lookup_sse2.o
  CC(target) Release/obj.target/gf16_sse2/gf16/gf_add_sse2.o
  CC(target) Release/obj.target/gf16_sse2/gf16/gf16_cksum_sse2.o
  AR(target) Release/obj.target/gf16_sse2.a
  COPY Release/gf16_sse2.a
  CC(target) Release/obj.target/gf16_ssse3/gf16/gf16_shuffle_ssse3.o
  AR(target) Release/obj.target/gf16_ssse3.a
  COPY Release/gf16_ssse3.a
  CC(target) Release/obj.target/gf16_sve/gf16/gf16_shuffle128_sve.o
  CC(target) Release/obj.target/gf16_sve/gf16/gf_add_sve.o
  CC(target) Release/obj.target/gf16_sve/gf16/gf16_cksum_sve.o
  AR(target) Release/obj.target/gf16_sve.a
  COPY Release/gf16_sve.a
  CC(target) Release/obj.target/gf16_sve2/gf16/gf16_shuffle128_sve2.o
  CC(target) Release/obj.target/gf16_sve2/gf16/gf16_shuffle2x128_sve2.o
  CC(target) Release/obj.target/gf16_sve2/gf16/gf16_shuffle512_sve2.o
  CC(target) Release/obj.target/gf16_sve2/gf16/gf16_clmul_sve2.o
  CC(target) Release/obj.target/gf16_sve2/gf16/gf_add_sve2.o
  AR(target) Release/obj.target/gf16_sve2.a
  COPY Release/gf16_sve2.a
  CC(target) Release/obj.target/gf16_vbmi/gf16/gf16_shuffle_vbmi.o
  AR(target) Release/obj.target/gf16_vbmi.a
  COPY Release/gf16_vbmi.a
  CXX(target) Release/obj.target/hasher/hasher/hasher.o
  CXX(target) Release/obj.target/hasher/hasher/hasher_input.o
  CXX(target) Release/obj.target/hasher/hasher/hasher_md5mb.o
  CXX(target) Release/obj.target/hasher/hasher/hasher_scalar.o
  CXX(target) Release/obj.target/hasher/hasher/tables.o
  AR(target) Release/obj.target/hasher.a
  COPY Release/hasher.a
  CXX(target) Release/obj.target/hasher_armcrc/hasher/hasher_armcrc.o
  AR(target) Release/obj.target/hasher_armcrc.a
  COPY Release/hasher_armcrc.a
  CXX(target) Release/obj.target/hasher_avx2/hasher/hasher_avx2.o
  AR(target) Release/obj.target/hasher_avx2.a
  COPY Release/hasher_avx2.a
  CXX(target) Release/obj.target/hasher_avx512/hasher/hasher_avx512.o
  AR(target) Release/obj.target/hasher_avx512.a
  COPY Release/hasher_avx512.a
  CXX(target) Release/obj.target/hasher_avx512vl/hasher/hasher_avx512vl.o
  AR(target) Release/obj.target/hasher_avx512vl.a
  COPY Release/hasher_avx512vl.a
  CXX(target) Release/obj.target/hasher_bmi1/hasher/hasher_bmi1.o
  AR(target) Release/obj.target/hasher_bmi1.a
  COPY Release/hasher_bmi1.a
  CC(target) Release/obj.target/hasher_c/hasher/crc_zeropad.o
  CC(target) Release/obj.target/hasher_c/hasher/md5-final.o
  AR(target) Release/obj.target/hasher_c.a
  COPY Release/hasher_c.a
  CXX(target) Release/obj.target/hasher_clmul/hasher/hasher_clmul.o
  AR(target) Release/obj.target/hasher_clmul.a
  COPY Release/hasher_clmul.a
  CXX(target) Release/obj.target/hasher_neon/hasher/hasher_neon.o
  AR(target) Release/obj.target/hasher_neon.a
  COPY Release/hasher_neon.a
  CXX(target) Release/obj.target/hasher_neoncrc/hasher/hasher_neoncrc.o
  AR(target) Release/obj.target/hasher_neoncrc.a
  COPY Release/hasher_neoncrc.a
  CXX(target) Release/obj.target/hasher_rvzbc/hasher/hasher_rvzbc.o
  AR(target) Release/obj.target/hasher_rvzbc.a
  COPY Release/hasher_rvzbc.a
  CXX(target) Release/obj.target/hasher_sse2/hasher/hasher_sse.o
  AR(target) Release/obj.target/hasher_sse2.a
  COPY Release/hasher_sse2.a
  CXX(target) Release/obj.target/hasher_sve2/hasher/hasher_sve2.o
  AR(target) Release/obj.target/hasher_sve2.a
  COPY Release/hasher_sve2.a
  CXX(target) Release/obj.target/hasher_xop/hasher/hasher_xop.o
  AR(target) Release/obj.target/hasher_xop.a
  COPY Release/hasher_xop.a
  CC(target) Release/obj.target/parpar_gf_c/gf16/opencl-include/cl.o
  CC(target) Release/obj.target/parpar_gf_c/gf16/gfmat_coeff.o
  AR(target) Release/obj.target/parpar_gf_c.a
  COPY Release/parpar_gf_c.a
  CXX(target) Release/obj.target/parpar_gf/src/gf.o
  CXX(target) Release/obj.target/parpar_gf/gf16/controller.o
  CXX(target) Release/obj.target/parpar_gf/gf16/controller_cpu.o
  CXX(target) Release/obj.target/parpar_gf/gf16/controller_ocl.o

  CXX(target) Release/obj.target/parpar_gf/gf16/controller_ocl_init.o
  SOLINK_MODULE(target) Release/obj.target/parpar_gf.node
  COPY Release/parpar_gf.node
make: Leaving directory '/home/sander/git/ParPar/build'
gyp info ok 
sanderjo commented 1 month ago

Ah, cmake . (so with a dot) works ?

sander@bananapif3:~/git/ParPar/test/bench$ cmake .
-- The C compiler identification is GNU 14.0.1
-- The CXX compiler identification is GNU 14.0.1
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Building for riscv64
-- Looking for posix_memalign
-- Looking for posix_memalign - found
-- Performing Test COMPILER_SUPPORTS_RVV
-- Performing Test COMPILER_SUPPORTS_RVV - Success
-- Performing Test COMPILER_SUPPORTS_RVV_ZVBC
-- Performing Test COMPILER_SUPPORTS_RVV_ZVBC - Success
-- Performing Test COMPILER_SUPPORTS_RVZBKC
-- Performing Test COMPILER_SUPPORTS_RVZBKC - Success
-- Configuring done (5.5s)
-- Generating done (0.2s)
-- Build files have been written to: /home/sander/git/ParPar/test/bench
sanderjo commented 1 month ago
sander@bananapif3:~/git/ParPar/test/bench$ ./bench-gf16 -fmuladdmp
-bash: ./bench-gf16: No such file or directory
sander@bananapif3:~/git/ParPar/test/bench$ 
sander@bananapif3:~/git/ParPar/test/bench$ 
sander@bananapif3:~/git/ParPar/test/bench$ ll
total 240
drwxrwxr-x  3 sander sander   4096 May 18 16:08 ./
drwxrwxr-x  5 sander sander   4096 May 18 15:53 ../
-rw-rw-r--  1 sander sander   4926 May 18 15:53 bench.h
-rw-rw-r--  1 sander sander  14874 May 18 16:08 CMakeCache.txt
drwxrwxr-x 17 sander sander   4096 May 18 16:08 CMakeFiles/
-rw-rw-r--  1 sander sander   1645 May 18 16:08 cmake_install.cmake
-rw-rw-r--  1 sander sander   1069 May 18 15:53 CMakeLists.txt
-rw-rw-r--  1 sander sander  36541 May 18 15:53 gf16.cpp
-rw-rw-r--  1 sander sander  16395 May 18 15:53 gf16-ctrl.cpp
-rw-rw-r--  1 sander sander   2103 May 18 15:53 gf16-inv.cpp
-rw-rw-r--  1 sander sander   2334 May 18 15:53 gf16-pmul.cpp
-rw-rw-r--  1 sander sander   5057 May 18 15:53 hasher.cpp
-rw-rw-r--  1 sander sander 124172 May 18 16:08 Makefile
sander@bananapif3:~/git/ParPar/test/bench$ 
sanderjo commented 1 month ago

Oh, after the cmake . a plain make ? Running that now ... BRB

sanderjo commented 1 month ago
sander@bananapif3:~/git/ParPar/test/bench$ make
[  1%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_avx2.c.o
[  2%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_avx10.c.o
[  3%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_avx512.c.o
[  4%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_generic.c.o
[  5%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_neon.c.o
[  6%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_rvv.c.o
[  7%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_sse2.c.o
[  8%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_sve.c.o
[  9%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_sve2.c.o
[ 10%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_affine_avx2.c.o
[ 11%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_affine_avx10.c.o
[ 12%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_affine_avx512.c.o
[ 13%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_affine_gfni.c.o
[ 14%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_avx2.c.o
[ 15%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_avx512.c.o
[ 17%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_generic.c.o
[ 18%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_neon.c.o
[ 19%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_rvv.c.o
In file included from /home/sander/git/ParPar/gf16/gf16_cksum_rvv.c:4:
/home/sander/git/ParPar/gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_blocku_rvv’:
/home/sander/git/ParPar/gf16/gf16_checksum_rvv.h:35:16: warning: unused variable ‘vlmax’ [-Wunused-variable]
   35 |         size_t vlmax = RV(vsetvlmax_e8m1)();
      |                ^~~~~
[ 20%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_sse2.c.o
[ 21%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_sve.c.o
[ 22%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_clmul_neon.c.o
[ 23%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_clmul_sha3.c.o
[ 24%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_clmul_sve2.c.o
[ 25%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_clmul_rvv.c.o
In file included from /home/sander/git/ParPar/gf16/gf16_clmul_rvv.c:144:
/home/sander/git/ParPar/gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_blocku_rvv’:
/home/sander/git/ParPar/gf16/gf16_checksum_rvv.h:35:16: warning: unused variable ‘vlmax’ [-Wunused-variable]
   35 |         size_t vlmax = RV(vsetvlmax_e8m1)();
      |                ^~~~~
[ 26%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_lookup.c.o
[ 27%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_lookup_sse2.c.o
[ 28%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle_avx.c.o
[ 29%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle_avx2.c.o
[ 30%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle_avx512.c.o
[ 31%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle_neon.c.o
[ 32%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle_ssse3.c.o
[ 34%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle_vbmi.c.o
[ 35%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle2x128_sve2.c.o
[ 36%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle128_rvv.c.o
In file included from /home/sander/git/ParPar/gf16/gf16_shuffle128_rvv.c:238:
/home/sander/git/ParPar/gf16/gf16_checksum_rvv.h: In function ‘gf16_checksum_blocku_rvv’:
/home/sander/git/ParPar/gf16/gf16_checksum_rvv.h:35:16: warning: unused variable ‘vlmax’ [-Wunused-variable]
   35 |         size_t vlmax = RV(vsetvlmax_e8m1)();
      |                ^~~~~
[ 37%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle128_sve.c.o
[ 38%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle128_sve2.c.o
[ 39%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle512_sve2.c.o
[ 40%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_xor_avx2.c.o
[ 41%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_xor_avx512.c.o
[ 42%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_xor_sse2.c.o
[ 43%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gfmat_coeff.c.o
[ 44%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/opencl-include/cl.c.o
[ 45%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/src/platform_warnings.c.o
[ 46%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_avx2.c.o
[ 47%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_neon.c.o
[ 48%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_sse.c.o
[ 50%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_sve2.c.o
[ 51%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_rvv.c.o
[ 52%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_vpclgfni.c.o
[ 53%] Building C object CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16pmul_vpclmul.c.o
[ 54%] Linking C static library libgf16_c.a
[ 54%] Built target gf16_c
[ 55%] Building CXX object CMakeFiles/gf16_base.dir/home/sander/git/ParPar/gf16/gf16mul.cpp.o
[ 56%] Linking CXX static library libgf16_base.a
[ 56%] Built target gf16_base
[ 57%] Building CXX object CMakeFiles/gf16_pmul.dir/home/sander/git/ParPar/gf16/gf16pmul.cpp.o
[ 58%] Linking CXX static library libgf16_pmul.a
[ 58%] Built target gf16_pmul
[ 59%] Building CXX object CMakeFiles/gf16_inv.dir/home/sander/git/ParPar/gf16/gfmat_inv.cpp.o
[ 60%] Linking CXX static library libgf16_inv.a
[ 60%] Built target gf16_inv
[ 61%] Building CXX object CMakeFiles/gf16_ctl.dir/home/sander/git/ParPar/gf16/controller.cpp.o
[ 62%] Building CXX object CMakeFiles/gf16_ctl.dir/home/sander/git/ParPar/gf16/controller_cpu.cpp.o
[ 63%] Building CXX object CMakeFiles/gf16_ctl.dir/home/sander/git/ParPar/gf16/controller_ocl.cpp.o

[ 64%] Building CXX object CMakeFiles/gf16_ctl.dir/home/sander/git/ParPar/gf16/controller_ocl_init.cpp.o
[ 65%] Linking CXX static library libgf16_ctl.a
[ 65%] Built target gf16_ctl
[ 67%] Building C object CMakeFiles/hasher_c.dir/home/sander/git/ParPar/hasher/crc_zeropad.c.o
[ 68%] Building C object CMakeFiles/hasher_c.dir/home/sander/git/ParPar/hasher/md5-final.c.o
[ 69%] Linking C static library libhasher_c.a
[ 69%] Built target hasher_c
[ 70%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher.cpp.o
[ 71%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_input.cpp.o
[ 72%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_md5crc.cpp.o
[ 73%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_md5mb.cpp.o
[ 74%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_armcrc.cpp.o
[ 75%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_avx2.cpp.o
[ 76%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_avx512.cpp.o
[ 77%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_avx512vl.cpp.o
[ 78%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_bmi1.cpp.o
[ 79%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_clmul.cpp.o
[ 80%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_neon.cpp.o
[ 81%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_neoncrc.cpp.o
[ 82%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_scalar.cpp.o
[ 84%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_sse.cpp.o
[ 85%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_sve2.cpp.o
[ 86%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_xop.cpp.o
[ 87%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/hasher_rvzbc.cpp.o
[ 88%] Building CXX object CMakeFiles/hasher.dir/home/sander/git/ParPar/hasher/tables.cpp.o
[ 89%] Linking CXX static library libhasher.a
[ 89%] Built target hasher
[ 90%] Building CXX object CMakeFiles/bench-gf16.dir/gf16.cpp.o
[ 91%] Linking CXX executable bench-gf16
[ 91%] Built target bench-gf16
[ 92%] Building CXX object CMakeFiles/bench-ctrl.dir/gf16-ctrl.cpp.o
/home/sander/git/ParPar/test/bench/gf16-ctrl.cpp: In function ‘int main(int, char**)’:
/home/sander/git/ParPar/test/bench/gf16-ctrl.cpp:351:14: warning: variable ‘showDefaultOclMethod’ set but not used [-Wunused-but-set-variable]
  351 |         bool showDefaultOclMethod = true;
      |              ^~~~~~~~~~~~~~~~~~~~
[ 93%] Linking CXX executable bench-ctrl
[ 93%] Built target bench-ctrl
[ 94%] Building CXX object CMakeFiles/bench-inv.dir/gf16-inv.cpp.o
[ 95%] Linking CXX executable bench-inv
[ 95%] Built target bench-inv
[ 96%] Building CXX object CMakeFiles/bench-pmul.dir/gf16-pmul.cpp.o
[ 97%] Linking CXX executable bench-pmul
[ 97%] Built target bench-pmul
[ 98%] Building CXX object CMakeFiles/bench-hasher.dir/hasher.cpp.o
[100%] Linking CXX executable bench-hasher
[100%] Built target bench-hasher
sanderjo commented 1 month ago

(intermediate)

sander@bananapif3:~/git/ParPar/test/bench$ ./bench-gf16 -fmuladdmp
Default method: Shuffle-128 (RVV) @ 16K
                 1K       2K       4K       8K      16K      32K      48K      64K      96K     128K     192K     256K     512K    1024K 
Lookup:
 MAddPk 2:    122.1    150.7    170.5    182.1    184.1    188.0    188.7    189.9    190.0    190.5    188.5    189.2    189.3    189.6 
 MAddPk 3:    122.2    150.8    170.3    179.9    184.2    187.9    189.0    189.9    189.2    189.9    188.5    189.3    189.4    189.4 
 MAddPk 4:    122.3    150.8    170.3    178.0    184.3    188.1    188.9    189.8    188.3    189.7    188.1    189.2    189.3    189.4 
 MAddPk 6:    122.3    150.8    169.7    177.9    184.2    188.1    189.2    189.4    189.2    189.3    189.4    189.3    189.2    189.3 
 MAddPk 8:    122.3    150.7    166.9    177.9    184.2    188.0    187.5    189.0    187.7    189.3    183.8    189.3    189.2    189.4 
 MAddPk16:    122.3    148.3    166.9    178.1    184.2    187.1    186.5    188.6    183.3    189.3    183.5    189.1    189.3    189.5 
3-part Lookup:
 MAddPk 2:    113.0    129.1    138.9    143.0    143.5    145.1    145.4    146.0    145.9    146.2    144.7    145.5    145.2    145.1 
animetosho commented 1 month ago

Oh sorry, I should've given clearer instructions, but it looks like you figured it out. Thanks for the effort!

Oof, probably should use a smaller test size - can add something like -z1024 to the bench-gf16 command to hopefully make the bench run faster.

sanderjo commented 1 month ago
sander@bananapif3:~/git/ParPar/test/bench$ time ./bench-gf16 -fmuladdmp
Default method: Shuffle-128 (RVV) @ 16K
                 1K       2K       4K       8K      16K      32K      48K      64K      96K     128K     192K     256K     512K    1024K 
Lookup:
 MAddPk 2:    120.9    149.7    170.0    181.8    183.9    187.6    188.7    189.6    190.0    190.7    188.4    189.8    189.8    189.8 
 MAddPk 3:    121.0    149.7    169.9    179.4    184.0    187.7    188.8    189.6    189.2    190.1    188.8    189.7    189.7    189.7 
 MAddPk 4:    121.0    149.8    169.9    177.2    184.1    187.7    188.7    189.7    188.4    189.9    188.4    189.6    189.4    189.6 
 MAddPk 6:    121.1    149.7    169.2    177.1    184.1    187.9    189.1    189.4    189.6    189.8    189.9    189.6    189.4    189.5 
 MAddPk 8:    121.0    149.7    166.5    177.6    184.2    187.9    187.4    189.1    188.0    189.7    184.0    189.4    189.4    189.4 
 MAddPk16:    121.0    147.4    166.3    177.6    184.1    187.0    186.7    188.6    183.6    189.5    183.7    189.3    189.4    189.4 
3-part Lookup:
 MAddPk 2:    112.8    129.1    138.9    142.9    143.3    144.9    145.2    145.8    145.9    146.1    144.6    145.7    145.5    145.4 
 MAddPk 3:    112.9    129.1    138.4    140.9    143.4    144.9    145.3    145.8    145.1    145.8    144.8    145.6    145.4    145.3 
 MAddPk 4:    113.0    129.1    138.3    141.1    143.4    144.9    145.2    145.7    144.7    145.7    144.5    145.5    145.2    145.2 
 MAddPk 6:    113.0    129.1    135.0    141.4    143.3    144.9    145.3    145.5    145.6    145.6    145.6    145.4    145.1    145.1 
 MAddPk 8:    112.9    128.9    136.0    141.5    143.3    144.8    144.1    145.3    144.4    145.5    141.2    145.3    145.1    145.0 
 MAddPk16:    112.9    127.3    136.5    141.5    143.3    144.3    143.7    145.0    141.0    145.4    140.9    145.1    145.0    145.0 
Shuffle-128 (RVV):
 MAddPk 2:   1167.7   1235.0   1270.9   1287.7   1270.0   1288.5   1292.6   1298.0   1298.3   1301.1   1281.1   1293.4   1295.0   1294.0 
 MAddPk 3:   1102.8   1154.7   1183.5   1151.2   1172.9   1191.5   1186.2   1187.7   1175.2   1182.9   1176.3   1180.7   1181.4   1177.3 
 MAddPk 4:   1105.1   1154.6   1181.7   1152.4   1147.5   1188.7   1187.4   1188.8   1178.0   1185.0   1173.3   1186.7   1179.0   1167.0 
 MAddPk 6:   1114.2   1161.0   1173.5   1160.1   1159.5   1193.0   1186.0   1185.5   1187.4   1182.2   1181.5   1180.4   1178.3   1173.2 
 MAddPk 8:   1136.4   1183.4   1044.5   1184.8   1183.1   1216.8   1202.5   1212.0   1201.6   1210.3   1168.9   1208.9   1202.0   1201.7 
 MAddPk16:   1118.1   1056.3   1144.3   1166.2   1151.5   1176.4   1177.0   1187.7   1149.5   1182.8   1141.4   1174.4   1173.3   1172.4 

real    3m9.426s
user    3m9.376s
sys     0m0.025s
sanderjo commented 1 month ago

And, yes, bench-gf16 contains vector commands, so looks good?

sander@bananapif3:~/git/ParPar/test/bench$ objdump -d bench-gf16  | awk '{ print $3 }' | sort -u | grep -E "^v" | head -10
vadd.vv
vand.vi
vand.vv
vfirst.m
vl1re16.v
vl1r.v
vle8.v
vlm.v
vlseg2e16.v
vlseg2e8.v
sander@bananapif3:~/git/ParPar/test/bench$ objdump -d bench-gf16  | awk '{ print $3 }' | sort -u | grep -E "^v" | wc -l
33
animetosho commented 1 month ago

Thank you! That's some interesting results.

sanderjo commented 1 month ago

I wrote a RVV detector: https://github.com/sanderjo/anything_everything/blob/main/rvv_detector/rvv_detector.py

... which I brute-force ran on ~/git/ParPar. See results below with only the files that do contain RVV code.

Is this what you expected?

NB: this is

commit 1410d77116404cac8190e03ef9f20657f64c99b9 (HEAD, origin/dev)
Author: animetosho <animetosho@users.noreply.github.com>
Date:   Thu May 16 10:22:56 2024 +1000

    GHA fixes

Binary files with RVV code in them:

sander@bananapif3:~$ cat logging_rvv_gitParPar.log  | grep -i number | grep -vi "commands 0" 
git/ParPar/test/bench/CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf_add_rvv.c.o: number of RVV commands 1224 (and 2596 non-RVV commands)
git/ParPar/test/bench/CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_cksum_rvv.c.o: number of RVV commands 434 (and 372 non-RVV commands)
git/ParPar/test/bench/CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_shuffle128_rvv.c.o: number of RVV commands 3839 (and 3944 non-RVV commands)
git/ParPar/test/bench/CMakeFiles/gf16_c.dir/home/sander/git/ParPar/gf16/gf16_clmul_rvv.c.o: number of RVV commands 965 (and 2141 non-RVV commands)
git/ParPar/test/bench/bench-gf16: number of RVV commands 6462 (and 36367 non-RVV commands)
git/ParPar/test/bench/bench-ctrl: number of RVV commands 6462 (and 73114 non-RVV commands)
git/ParPar/test/bench/bench-inv: number of RVV commands 6462 (and 45666 non-RVV commands)
git/ParPar/build/Release/obj.target/gf16_rvv_zvbc/gf16/gf16_clmul_rvv.o: number of RVV commands 939 (and 1686 non-RVV commands)
git/ParPar/build/Release/obj.target/gf16_rvv/gf16/gf16_shuffle128_rvv.o: number of RVV commands 2489 (and 2749 non-RVV commands)
git/ParPar/build/Release/obj.target/gf16_rvv/gf16/gf_add_rvv.o: number of RVV commands 813 (and 1675 non-RVV commands)
git/ParPar/build/Release/obj.target/gf16_rvv/gf16/gf16_cksum_rvv.o: number of RVV commands 434 (and 372 non-RVV commands)
git/ParPar/build/Release/obj.target/parpar_gf.node: number of RVV commands 4675 (and 91740 non-RVV commands)
git/ParPar/build/Release/parpar_gf.node: number of RVV commands 4675 (and 91740 non-RVV commands)
animetosho commented 1 month ago

The results roughly look right to me.

In terms of your script, I'm not sure if instructions starting with v are guaranteed to all be vector related. But if it's just a quick script for yourself, it's probably sufficient.