Re: [FFmpeg-devel] [PATCH] libavfilter/af_afir: R-V V dcmul_add
Le perjantaina 22. joulukuuta 2023, 3.41.29 EET flow gg a écrit : > It's at c908 > > According to the benchmark results, if vlseg2e64 is used, the speed is > almost as slow as C language (dcmul_add_rvv_f64: 86.2), if vsseg2e64 is > used, it will be only a bit slower (dcmul_add_rvv_f64: 50.2). Fair enough but yikes. I doubt that this is going to turn out well on other vendors' upcoming IPs. -- 雷米‧德尼-库尔蒙 http://www.remlab.net/ ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH] libavfilter/af_afir: R-V V dcmul_add
It's at c908 According to the benchmark results, if vlseg2e64 is used, the speed is almost as slow as C language (dcmul_add_rvv_f64: 86.2), if vsseg2e64 is used, it will be only a bit slower (dcmul_add_rvv_f64: 50.2). Rémi Denis-Courmont 于2023年12月22日周五 04:52写道: > Le tiistaina 19. joulukuuta 2023, 4.53.12 EET flow gg a écrit : > > c908: > > dcmul_add_c: 88.0 > > dcmul_add_rvv_f64: 46.2 > > > > Did not use vlseg2e64, because it is much slower than vlse64 > > Did not use vsseg2e64, because it is slightly slower than vsse64 > > Is this about C910 or C908? I have not checked this specific function, but > the > general understanding for C908 has been the exact opposite so far, i.e. > segmented accesses are fast, while strided accesses are (unsurprisingly) > slow. > > See also > https://camel-cdr.github.io/rvv-bench-results/canmv_k230/index.html > > -- > レミ・デニ-クールモン > http://www.remlab.net/ > > > > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH] libavfilter/af_afir: R-V V dcmul_add
Le tiistaina 19. joulukuuta 2023, 4.53.12 EET flow gg a écrit : > c908: > dcmul_add_c: 88.0 > dcmul_add_rvv_f64: 46.2 > > Did not use vlseg2e64, because it is much slower than vlse64 > Did not use vsseg2e64, because it is slightly slower than vsse64 Is this about C910 or C908? I have not checked this specific function, but the general understanding for C908 has been the exact opposite so far, i.e. segmented accesses are fast, while strided accesses are (unsurprisingly) slow. See also https://camel-cdr.github.io/rvv-bench-results/canmv_k230/index.html -- レミ・デニ-クールモン http://www.remlab.net/ ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
[FFmpeg-devel] [PATCH] libavfilter/af_afir: R-V V dcmul_add
c908: dcmul_add_c: 88.0 dcmul_add_rvv_f64: 46.2 Did not use vlseg2e64, because it is much slower than vlse64 Did not use vsseg2e64, because it is slightly slower than vsse64 From 80b6694bc29ed1c37852dc079a6d91a24dd6f18e Mon Sep 17 00:00:00 2001 From: sunyuechi Date: Tue, 19 Dec 2023 09:11:28 +0800 Subject: [PATCH] libavfilter/af_afir: R-V V dcmul_add c908: dcmul_add_c: 88.0 dcmul_add_rvv_f64: 46.2 --- libavfilter/riscv/af_afir_init.c | 3 +++ libavfilter/riscv/af_afir_rvv.S | 41 2 files changed, 44 insertions(+) diff --git a/libavfilter/riscv/af_afir_init.c b/libavfilter/riscv/af_afir_init.c index 52aa18c126..f9a76f108b 100644 --- a/libavfilter/riscv/af_afir_init.c +++ b/libavfilter/riscv/af_afir_init.c @@ -27,6 +27,8 @@ void ff_fcmul_add_rvv(float *sum, const float *t, const float *c, ptrdiff_t len); +void ff_dcmul_add_rvv(double *sum, const double *t, const double *c, + ptrdiff_t len); av_cold void ff_afir_init_riscv(AudioFIRDSPContext *s) { @@ -36,6 +38,7 @@ av_cold void ff_afir_init_riscv(AudioFIRDSPContext *s) if (flags & AV_CPU_FLAG_RVV_F64) { if (flags & AV_CPU_FLAG_RVB_ADDR) { s->fcmul_add = ff_fcmul_add_rvv; +s->dcmul_add = ff_dcmul_add_rvv; } } #endif diff --git a/libavfilter/riscv/af_afir_rvv.S b/libavfilter/riscv/af_afir_rvv.S index 04ec2e50d8..d1fa6e22e5 100644 --- a/libavfilter/riscv/af_afir_rvv.S +++ b/libavfilter/riscv/af_afir_rvv.S @@ -53,3 +53,44 @@ func ff_fcmul_add_rvv, zve64f ret endfunc + +func ff_dcmul_add_rvv, zve64f +1: +vsetvli t0, a3, e64, m4, ta, ma +lit1, 16 +lit2, 8 +vlse64.v v0, (a1), t1 +add a1, a1, t2 +vlse64.v v4, (a2), t1 +add a2, a2, t2 +vlse64.v v12, (a0), t1 +add a0, a0, t2 +vfmacc.vv v12, v0, v4 +sub a3, a3, t0 +vlse64.v v8, (a2), t1 +sub a2, a2, t2 +sh3adda2, t0, a2 +vlse64.v v16, (a0), t1 +sub a0, a0, t2 +vfmacc.vv v16, v0, v8 +sh3adda2, t0, a2 +vlse64.v v0, (a1), t1 +sub a1, a1, t2 +sh3adda1, t0, a1 +vfnmsac.vvv12, v0, v8 +sh3adda1, t0, a1 +vfmacc.vv v16, v0, v4 +vsse64.v v12, (a0), t1 +add a0, a0, t2 +vsse64.v v16, (a0), t1 +sub a0, a0, t2 +sh3adda0, t0, a0 +sh3adda0, t0, a0 +bgtz a3, 1b +fld fa0, 0(a1) +fld fa1, 0(a2) +fld fa2, 0(a0) +fmadd.d fa2, fa0, fa1, fa2 +fsd fa2, 0(a0) +ret +endfunc -- 2.43.0 ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".