Add SBGEMV and SHGEMV routines to RISC-V#5481
Add SBGEMV and SHGEMV routines to RISC-V#5481martin-frbg merged 7 commits intoOpenMathLib:developfrom
Conversation
|
Can't tie in SHGEMV since there is no support in the system as of yet. |
|
can probably tie that into interface/sbgemv.c and copy driver/level2/sbgemv_thread.c, then needs adding to common_s.h , common_level2.h , cblas.h , common_interface.h , common_param.h (two times there - once for single target and once for dynamic_arch) , kernel/setparam-ref.c plus exports/gensymbol and the (c)makefile additions. |
|
almost done but stuck on a prototype mismatch that doesn't immediately make sense. I'll try to get back to it tomorrow night |
|
prototype mismatch is a direct consequence of the kernel function signature being wrong - no support for parameter "beta", and an extraneous "buffer" argument ? (Please compare the CNAME line in generic/gemv_n.c or the x86_64 sbgemv_n.c ) |
|
I think that RISC-V used the same GEMV kernel function signature as ARM did - without beta and with extra buffer parameter. |
|
I think the older variants use the buffer and do beta separately, newer ones seem to be doing beta updates as part of the kernel: |
|
Is the kernel function signature different for GEMV vs SBGEMV? The original GEMV (FP32/FP64) for RISC-V seems to use the non-beta format. |
Yip, those are the two kernel signatures I linked to 😸 BGEMV also uses the SBGEMV signature. |
|
Yes, for some "historic" reason the kernel interface for SBGEMV is different from SGEMV. Not entirely sure whose "fault" it was, probably the Intel folks were first - arguably the "beta and no buffer" version has a clear majority now, so it is probably easier to consolidate on that. |
|
@martin-frbg Ok, I changed the signature of SBGEMV for RISCV to the appropriate one. |
|
Thank you - I was on it but got interrupted by the chimney sweep :) |
Add SBGEMV and SHGEMV routines to RISC-V - up to 32X faster.