Skip to content

Commit 05c0380

Browse files
authored
ggml-cpu : optimize RVV kernels (#15720)
* ggml-cpu : optimize rvv ggml_vec_dot_f32 * ggml-cpu : optimize 128-bit rvv ggml_vec_dot_q4_K_q8_K * ggml-cpu : fix riscv arch flags * ggml-cpu : add more rvv ops * ggml-cpu : optimize rvv ggml_vec_dot_q4_K_q8_K * ggml-cpu : optimize rvv ggml_vec_dot_q6_K_q8_K * ggml-cpu : minor rvv adjustments * ggml-cpu : fix riscv include
1 parent 8c3fdf4 commit 05c0380

File tree

6 files changed

+289
-114
lines changed

6 files changed

+289
-114
lines changed

ggml/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,9 @@ endif()
129129
option(GGML_LASX "ggml: enable lasx" ON)
130130
option(GGML_LSX "ggml: enable lsx" ON)
131131
option(GGML_RVV "ggml: enable rvv" ON)
132-
option(GGML_RV_ZFH "ggml: enable riscv zfh" OFF)
132+
option(GGML_RV_ZFH "ggml: enable riscv zfh" ON)
133+
option(GGML_RV_ZVFH "ggml: enable riscv zvfh" ON)
134+
option(GGML_RV_ZICBOP "ggml: enable riscv zicbop" ON)
133135
option(GGML_XTHEADVECTOR "ggml: enable xtheadvector" OFF)
134136
option(GGML_VXE "ggml: enable vxe" ON)
135137
option(GGML_NNPA "ggml: enable nnpa" OFF) # temp disabled by default, see: https://github.com/ggml-org/llama.cpp/issues/14877

ggml/src/ggml-cpu/CMakeLists.txt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -433,15 +433,22 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
433433
ggml-cpu/arch/riscv/quants.c
434434
ggml-cpu/arch/riscv/repack.cpp
435435
)
436-
if (GGML_RVV)
437-
if (GGML_XTHEADVECTOR)
438-
list(APPEND ARCH_FLAGS -march=rv64gc_zfhmin_xtheadvector -mabi=lp64d)
439-
elseif (GGML_RV_ZFH)
440-
list(APPEND ARCH_FLAGS -march=rv64gcv_zfhmin -mabi=lp64d)
441-
else()
442-
list(APPEND ARCH_FLAGS -march=rv64gcv -mabi=lp64d)
436+
set(MARCH_STR "rv64gc")
437+
if (GGML_RV_ZFH)
438+
string(APPEND MARCH_STR "_zfh")
439+
endif()
440+
if (GGML_XTHEADVECTOR)
441+
string(APPEND MARCH_STR "_xtheadvector")
442+
elseif (GGML_RVV)
443+
string(APPEND MARCH_STR "_v")
444+
if (GGML_RV_ZVFH)
445+
string(APPEND MARCH_STR "_zvfh")
443446
endif()
444447
endif()
448+
if (GGML_RV_ZICBOP)
449+
string(APPEND MARCH_STR "_zicbop")
450+
endif()
451+
list(APPEND ARCH_FLAGS "-march=${MARCH_STR}" -mabi=lp64d)
445452
elseif (GGML_SYSTEM_ARCH STREQUAL "s390x")
446453
message(STATUS "s390x detected")
447454
list(APPEND GGML_CPU_SOURCES ggml-cpu/arch/s390/quants.c)

0 commit comments

Comments
 (0)