Skip to content

Commit 152dbce

Browse files
committed
sync ggml to llama @ 5fd160bbd9d70b94b5b11b0001fd7f477005e4a0
1 parent 73b3c6b commit 152dbce

File tree

169 files changed

+17712
-8320
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

169 files changed

+17712
-8320
lines changed

ggml/CMakeLists.txt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,9 @@ if (WIN32)
3939
set(CMAKE_SHARED_MODULE_PREFIX "")
4040
endif()
4141

42-
option(BUILD_SHARED_LIBS "ggml: build shared libraries" ${BUILD_SHARED_LIBS_DEFAULT})
43-
option(GGML_BACKEND_DL "ggml: build backends as dynamic libraries (requires BUILD_SHARED_LIBS)" OFF)
42+
option(BUILD_SHARED_LIBS "ggml: build shared libraries" ${BUILD_SHARED_LIBS_DEFAULT})
43+
option(GGML_BACKEND_DL "ggml: build backends as dynamic libraries (requires BUILD_SHARED_LIBS)" OFF)
44+
set(GGML_BACKEND_DIR "" CACHE PATH "ggml: directory to load dynamic backends from (requires GGML_BACKEND_DL")
4445

4546
#
4647
# option list
@@ -131,7 +132,7 @@ option(GGML_RVV "ggml: enable rvv" ON)
131132
option(GGML_RV_ZFH "ggml: enable riscv zfh" OFF)
132133
option(GGML_XTHEADVECTOR "ggml: enable xtheadvector" OFF)
133134
option(GGML_VXE "ggml: enable vxe" ON)
134-
option(GGML_NNPA "ggml: enable nnpa" ON)
135+
option(GGML_NNPA "ggml: enable nnpa" OFF) # temp disabled by default, see: https://github.com/ggml-org/llama.cpp/issues/14877
135136

136137
option(GGML_CPU_ALL_VARIANTS "ggml: build all variants of the CPU backend (requires GGML_BACKEND_DL)" OFF)
137138
set(GGML_CPU_ARM_ARCH "" CACHE STRING "ggml: CPU architecture for ARM")
@@ -174,13 +175,18 @@ option(GGML_HIP_GRAPHS "ggml: use HIP graph, experimental,
174175
option(GGML_HIP_NO_VMM "ggml: do not try to use HIP VMM" ON)
175176
option(GGML_HIP_ROCWMMA_FATTN "ggml: enable rocWMMA for FlashAttention" OFF)
176177
option(GGML_HIP_FORCE_ROCWMMA_FATTN_GFX12 "ggml: enable rocWMMA FlashAttention on GFX12" OFF)
178+
option(GGML_HIP_MMQ_MFMA "ggml: enable MFMA MMA for CDNA in MMQ" ON)
179+
option(GGML_MUSA_GRAPHS "ggml: use MUSA graph, experimental, unstable" OFF)
180+
option(GGML_MUSA_MUDNN_COPY "ggml: enable muDNN for accelerated copy" OFF)
177181
option(GGML_VULKAN "ggml: use Vulkan" OFF)
178182
option(GGML_VULKAN_CHECK_RESULTS "ggml: run Vulkan op checks" OFF)
179183
option(GGML_VULKAN_DEBUG "ggml: enable Vulkan debug output" OFF)
180184
option(GGML_VULKAN_MEMORY_DEBUG "ggml: enable Vulkan memory debug output" OFF)
181185
option(GGML_VULKAN_SHADER_DEBUG_INFO "ggml: enable Vulkan shader debug info" OFF)
182186
option(GGML_VULKAN_VALIDATE "ggml: enable Vulkan validation" OFF)
183187
option(GGML_VULKAN_RUN_TESTS "ggml: run Vulkan tests" OFF)
188+
option(GGML_WEBGPU "ggml: use WebGPU" OFF)
189+
option(GGML_WEBGPU_DEBUG "ggml: enable WebGPU debug output" OFF)
184190
option(GGML_METAL "ggml: use Metal" ${GGML_METAL_DEFAULT})
185191
option(GGML_METAL_USE_BF16 "ggml: use bfloat if available" OFF)
186192
option(GGML_METAL_NDEBUG "ggml: disable Metal debugging" OFF)
@@ -270,6 +276,7 @@ set(GGML_PUBLIC_HEADERS
270276
include/ggml-rpc.h
271277
include/ggml-sycl.h
272278
include/ggml-vulkan.h
279+
include/ggml-webgpu.h
273280
include/gguf.h)
274281

275282
set_target_properties(ggml PROPERTIES PUBLIC_HEADER "${GGML_PUBLIC_HEADERS}")

ggml/cmake/ggml-config.cmake.in

Lines changed: 128 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,152 +1,189 @@
1-
2-
@GGML_VARIABLES_EXPANDED@
3-
41
@PACKAGE_INIT@
52

6-
set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")
7-
set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
8-
#set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@")
9-
10-
find_package(Threads REQUIRED)
11-
12-
find_library(GGML_LIBRARY ggml
13-
REQUIRED
14-
HINTS ${GGML_LIB_DIR}
15-
NO_CMAKE_FIND_ROOT_PATH)
16-
17-
add_library(ggml::ggml UNKNOWN IMPORTED)
18-
set_target_properties(ggml::ggml
19-
PROPERTIES
20-
IMPORTED_LOCATION "${GGML_LIBRARY}")
21-
22-
find_library(GGML_BASE_LIBRARY ggml-base
23-
REQUIRED
24-
HINTS ${GGML_LIB_DIR}
25-
NO_CMAKE_FIND_ROOT_PATH)
26-
27-
add_library(ggml::ggml-base UNKNOWN IMPORTED)
28-
set_target_properties(ggml::ggml-base
29-
PROPERTIES
30-
IMPORTED_LOCATION "${GGML_BASE_LIBRARY}")
3+
@GGML_VARIABLES_EXPANDED@
314

5+
# Find all dependencies before creating any target.
6+
include(CMakeFindDependencyMacro)
7+
find_dependency(Threads)
328
if (NOT GGML_SHARED_LIB)
9+
set(GGML_CPU_INTERFACE_LINK_LIBRARIES "")
10+
set(GGML_CPU_INTERFACE_LINK_OPTIONS "")
11+
3312
if (APPLE AND GGML_ACCELERATE)
34-
find_library(ACCELERATE_FRAMEWORK Accelerate REQUIRED)
13+
find_library(ACCELERATE_FRAMEWORK Accelerate)
14+
if(NOT ACCELERATE_FRAMEWORK)
15+
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
16+
return()
17+
endif()
3518
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${ACCELERATE_FRAMEWORK})
3619
endif()
3720

38-
if (GGML_OPENMP)
39-
find_package(OpenMP REQUIRED)
21+
if (GGML_OPENMP_ENABLED)
22+
find_dependency(OpenMP)
4023
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES OpenMP::OpenMP_C OpenMP::OpenMP_CXX)
4124
endif()
4225

4326
if (GGML_CPU_HBM)
44-
find_library(memkind memkind REQUIRED)
27+
find_library(memkind memkind)
28+
if(NOT memkind)
29+
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
30+
return()
31+
endif()
4532
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES memkind)
4633
endif()
4734

4835
if (GGML_BLAS)
49-
find_package(BLAS REQUIRED)
50-
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
51-
list(APPEND GGML_CPU_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS})
36+
find_dependency(BLAS)
37+
list(APPEND GGML_BLAS_INTERFACE_LINK_LIBRARIES ${BLAS_LIBRARIES})
38+
list(APPEND GGML_BLAS_INTERFACE_LINK_OPTIONS ${BLAS_LINKER_FLAGS})
5239
endif()
5340

5441
if (GGML_CUDA)
55-
find_package(CUDAToolkit REQUIRED)
42+
set(GGML_CUDA_INTERFACE_LINK_LIBRARIES "")
43+
find_dependency(CUDAToolkit)
44+
if (GGML_STATIC)
45+
list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cudart_static>)
46+
if (WIN32)
47+
list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas> $<LINK_ONLY:CUDA::cublasLt>)
48+
else()
49+
list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cublas_static> $<LINK_ONLY:CUDA::cublasLt_static>)
50+
endif()
51+
endif()
52+
if (NOT GGML_CUDA_NO_VMM)
53+
list(APPEND GGML_CUDA_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:CUDA::cuda_driver>)
54+
endif()
5655
endif()
5756

5857
if (GGML_METAL)
59-
find_library(FOUNDATION_LIBRARY Foundation REQUIRED)
60-
find_library(METAL_FRAMEWORK Metal REQUIRED)
61-
find_library(METALKIT_FRAMEWORK MetalKit REQUIRED)
58+
find_library(FOUNDATION_LIBRARY Foundation)
59+
find_library(METAL_FRAMEWORK Metal)
60+
find_library(METALKIT_FRAMEWORK MetalKit)
61+
if(NOT FOUNDATION_LIBRARY OR NOT METAL_FRAMEWORK OR NOT METALKIT_FRAMEWORK)
62+
set(${CMAKE_FIND_PACKAGE_NAME}_FOUND 0)
63+
return()
64+
endif()
65+
set(GGML_METAL_INTERFACE_LINK_LIBRARIES
66+
${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
67+
endif()
6268

63-
list(APPEND GGML_METAL_INTERFACE_LINK_LIBRARIES
64-
${FOUNDATION_LIBRARY} ${METAL_FRAMEWORK} ${METALKIT_FRAMEWORK})
69+
if (GGML_OPENCL)
70+
find_dependency(OpenCL)
71+
set(GGML_OPENCL_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:OpenCL::OpenCL>)
6572
endif()
6673

6774
if (GGML_VULKAN)
68-
find_package(Vulkan REQUIRED)
69-
list(APPEND GGML_VULKAN_INTERFACE_LINK_LIBRARIES Vulkan::Vulkan)
75+
find_dependency(Vulkan)
76+
set(GGML_VULKAN_INTERFACE_LINK_LIBRARIES $<LINK_ONLY:Vulkan::Vulkan>)
7077
endif()
7178

7279
if (GGML_HIP)
73-
find_package(hip REQUIRED)
74-
find_package(hipblas REQUIRED)
75-
find_package(rocblas REQUIRED)
76-
list(APPEND GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas)
80+
find_dependency(hip)
81+
find_dependency(hipblas)
82+
find_dependency(rocblas)
83+
set(GGML_HIP_INTERFACE_LINK_LIBRARIES hip::host roc::rocblas roc::hipblas)
7784
endif()
7885

7986
if (GGML_SYCL)
87+
set(GGML_SYCL_INTERFACE_LINK_LIBRARIES "")
8088
find_package(DNNL)
8189
if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL")
8290
list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES DNNL::dnnl)
8391
endif()
8492
if (WIN32)
85-
find_package(IntelSYCL REQUIRED)
86-
find_package(MKL REQUIRED)
93+
find_dependency(IntelSYCL)
94+
find_dependency(MKL)
8795
list(APPEND GGML_SYCL_INTERFACE_LINK_LIBRARIES IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
8896
endif()
8997
endif()
9098
endif()
9199

92-
set(_ggml_all_targets "")
93-
foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
94-
string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
95-
string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
100+
set_and_check(GGML_INCLUDE_DIR "@PACKAGE_GGML_INCLUDE_INSTALL_DIR@")
101+
set_and_check(GGML_LIB_DIR "@PACKAGE_GGML_LIB_INSTALL_DIR@")
102+
#set_and_check(GGML_BIN_DIR "@PACKAGE_GGML_BIN_INSTALL_DIR@")
103+
104+
if(NOT TARGET ggml::ggml)
105+
find_package(Threads REQUIRED)
96106

97-
find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
107+
find_library(GGML_LIBRARY ggml
98108
REQUIRED
99-
HINTS ${GGML_LIB_DIR}
109+
HINTS ${GGML_LIB_DIR} ${GGML_BACKEND_DIR}
100110
NO_CMAKE_FIND_ROOT_PATH)
101111

102-
message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
112+
add_library(ggml::ggml UNKNOWN IMPORTED)
113+
set_target_properties(ggml::ggml
114+
PROPERTIES
115+
IMPORTED_LOCATION "${GGML_LIBRARY}")
103116

104-
add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
105-
set_target_properties(ggml::${_ggml_backend}
117+
find_library(GGML_BASE_LIBRARY ggml-base
118+
REQUIRED
119+
HINTS ${GGML_LIB_DIR}
120+
NO_CMAKE_FIND_ROOT_PATH)
121+
122+
add_library(ggml::ggml-base UNKNOWN IMPORTED)
123+
set_target_properties(ggml::ggml-base
106124
PROPERTIES
107-
INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
108-
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
109-
IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
110-
INTERFACE_COMPILE_FEATURES c_std_90
111-
POSITION_INDEPENDENT_CODE ON)
112-
113-
string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
114-
if(is_cpu_variant)
115-
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
116-
set_target_properties(ggml::${_ggml_backend}
117-
PROPERTIES
118-
INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
125+
IMPORTED_LOCATION "${GGML_BASE_LIBRARY}")
119126

120-
if(GGML_CPU_INTERFACE_LINK_OPTIONS)
121-
set_target_properties(ggml::${_ggml_backend}
122-
PROPERTIES
123-
INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
124-
endif()
127+
set(_ggml_all_targets "")
128+
foreach(_ggml_backend ${GGML_AVAILABLE_BACKENDS})
129+
string(REPLACE "-" "_" _ggml_backend_pfx "${_ggml_backend}")
130+
string(TOUPPER "${_ggml_backend_pfx}" _ggml_backend_pfx)
125131

126-
else()
127-
list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
132+
find_library(${_ggml_backend_pfx}_LIBRARY ${_ggml_backend}
133+
REQUIRED
134+
HINTS ${GGML_LIB_DIR}
135+
NO_CMAKE_FIND_ROOT_PATH)
136+
137+
message(STATUS "Found ${${_ggml_backend_pfx}_LIBRARY}")
138+
139+
add_library(ggml::${_ggml_backend} UNKNOWN IMPORTED)
128140
set_target_properties(ggml::${_ggml_backend}
129141
PROPERTIES
130-
INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
142+
INTERFACE_INCLUDE_DIRECTORIES "${GGML_INCLUDE_DIR}"
143+
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
144+
IMPORTED_LOCATION "${${_ggml_backend_pfx}_LIBRARY}"
145+
INTERFACE_COMPILE_FEATURES c_std_90
146+
POSITION_INDEPENDENT_CODE ON)
147+
148+
string(REGEX MATCH "^ggml-cpu" is_cpu_variant "${_ggml_backend}")
149+
if(is_cpu_variant)
150+
list(APPEND GGML_CPU_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
151+
set_target_properties(ggml::${_ggml_backend}
152+
PROPERTIES
153+
INTERFACE_LINK_LIBRARIES "${GGML_CPU_INTERFACE_LINK_LIBRARIES}")
154+
155+
if(GGML_CPU_INTERFACE_LINK_OPTIONS)
156+
set_target_properties(ggml::${_ggml_backend}
157+
PROPERTIES
158+
INTERFACE_LINK_OPTIONS "${GGML_CPU_INTERFACE_LINK_OPTIONS}")
159+
endif()
131160

132-
if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
161+
else()
162+
list(APPEND ${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES "ggml::ggml-base")
133163
set_target_properties(ggml::${_ggml_backend}
134164
PROPERTIES
135-
INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
165+
INTERFACE_LINK_LIBRARIES "${${_ggml_backend_pfx}_INTERFACE_LINK_LIBRARIES}")
166+
167+
if(${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS)
168+
set_target_properties(ggml::${_ggml_backend}
169+
PROPERTIES
170+
INTERFACE_LINK_OPTIONS "${${_ggml_backend_pfx}_INTERFACE_LINK_OPTIONS}")
171+
endif()
136172
endif()
137-
endif()
138173

139-
list(APPEND _ggml_all_targets ggml::${_ggml_backend})
140-
endforeach()
174+
list(APPEND _ggml_all_targets ggml::${_ggml_backend})
175+
endforeach()
141176

142-
list(APPEND GGML_INTERFACE_LINK_LIBRARIES ggml::ggml-base "${_ggml_all_targets}")
143-
set_target_properties(ggml::ggml
144-
PROPERTIES
145-
INTERFACE_LINK_LIBRARIES "${GGML_INTERFACE_LINK_LIBRARIES}")
177+
list(APPEND GGML_INTERFACE_LINK_LIBRARIES ggml::ggml-base "${_ggml_all_targets}")
178+
set_target_properties(ggml::ggml
179+
PROPERTIES
180+
INTERFACE_LINK_LIBRARIES "${GGML_INTERFACE_LINK_LIBRARIES}")
146181

147-
add_library(ggml::all INTERFACE IMPORTED)
148-
set_target_properties(ggml::all
149-
PROPERTIES
150-
INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}")
182+
add_library(ggml::all INTERFACE IMPORTED)
183+
set_target_properties(ggml::all
184+
PROPERTIES
185+
INTERFACE_LINK_LIBRARIES "${_ggml_all_targets}")
186+
187+
endif()
151188

152189
check_required_components(ggml)

ggml/include/ggml-rpc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ GGML_BACKEND_API ggml_backend_buffer_type_t ggml_backend_rpc_buffer_type(const c
2525
GGML_BACKEND_API void ggml_backend_rpc_get_device_memory(const char * endpoint, size_t * free, size_t * total);
2626

2727
GGML_BACKEND_API void ggml_backend_rpc_start_server(ggml_backend_t backend, const char * endpoint,
28-
const char * cache_dir,
28+
const char * cache_dir,
2929
size_t free_mem, size_t total_mem);
3030

3131
GGML_BACKEND_API ggml_backend_reg_t ggml_backend_rpc_reg(void);

ggml/include/ggml-webgpu.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#pragma once
2+
3+
#include "ggml.h"
4+
#include "ggml-backend.h"
5+
6+
#ifdef __cplusplus
7+
extern "C" {
8+
#endif
9+
10+
#define GGML_WEBGPU_NAME "WebGPU"
11+
12+
// Needed for examples in ggml
13+
GGML_BACKEND_API ggml_backend_t ggml_backend_webgpu_init(void);
14+
15+
GGML_BACKEND_API ggml_backend_reg_t ggml_backend_webgpu_reg(void);
16+
17+
#ifdef __cplusplus
18+
}
19+
#endif

0 commit comments

Comments
 (0)