@@ -29,27 +29,6 @@ endif()
29
29
unset (GGML_EXTRA_LIBS_PRIVATE)
30
30
unset (GGML_EXTRA_LIBS_PUBLIC)
31
31
32
- if (GGML_AMX)
33
- if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 11.0)
34
- else ()
35
- set (GGML_AMX OFF )
36
- message (WARNING "AMX requires gcc version > 11.0. Turning off GGML_AMX." )
37
- endif ()
38
-
39
- if (GGML_AMX)
40
- message (STATUS "Using AMX" )
41
-
42
- list (APPEND GGML_CDEF_PUBLIC GGML_USE_AMX)
43
-
44
- file (GLOB GGML_HEADERS_AMX "ggml-amx/*.h" )
45
- list (APPEND GGML_HEADERS_AMX "../include/ggml-amx.h" )
46
-
47
- file (GLOB GGML_SOURCES_AMX "ggml-amx/*.cpp" )
48
- list (APPEND GGML_SOURCES_AMX "ggml-amx.cpp" )
49
- endif ()
50
- endif ()
51
-
52
-
53
32
if (GGML_HIPBLAS)
54
33
if (NOT EXISTS $ENV{ROCM_PATH} )
55
34
if (NOT EXISTS /opt/rocm)
@@ -159,156 +138,6 @@ if (GGML_HIPBLAS)
159
138
list (APPEND GGML_EXTRA_LIBS_PUBLIC hip::host roc::rocblas roc::hipblas)
160
139
endif ()
161
140
162
- if (GGML_SYCL)
163
- if (NOT GGML_SYCL_TARGET MATCHES "^(INTEL|NVIDIA|AMD)$" )
164
- message (FATAL_ERROR "Invalid backend chosen, supported options are INTEL, NVIDIA, or AMD" )
165
- endif ()
166
-
167
- check_cxx_compiler_flag("-fsycl" SUPPORTS_SYCL)
168
-
169
- if (DEFINED ENV{ONEAPI_ROOT})
170
- message (STATUS "Using oneAPI Release SYCL compiler (icpx)." )
171
- elseif (SUPPORTS_SYCL)
172
- message (WARNING "Using open-source SYCL compiler (clang++). Didn't detect ENV {ONEAPI_ROOT}.
173
- If you expected the oneAPI Release compiler, please install oneAPI & source it, like:
174
- source /opt/intel/oneapi/setvars.sh" )
175
- else ()
176
- message (FATAL_ERROR, "C++ compiler lacks SYCL support." )
177
- endif ()
178
- message (STATUS "SYCL found" )
179
- #todo: AOT
180
-
181
- list (APPEND GGML_CDEF_PUBLIC GGML_USE_SYCL)
182
-
183
- if (GGML_SYCL_F16)
184
- if (GGML_SYCL_TARGET STREQUAL "AMD" )
185
- message (WARNING "AMD target does not entirely support FP16 in the SYCL backend." )
186
- endif ()
187
- add_compile_definitions (GGML_SYCL_F16)
188
- endif ()
189
-
190
- if (GGML_CUDA_FORCE_MMQ)
191
- add_compile_definitions (GGML_SYCL_FORCE_MMQ)
192
- endif ()
193
-
194
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing -fsycl" )
195
-
196
- if (GGML_SYCL_TARGET STREQUAL "NVIDIA" )
197
- add_compile_definitions (GGML_SYCL_WARP_SIZE=32)
198
- elseif (GGML_SYCL_TARGET STREQUAL "AMD" )
199
- # INFO: Allowed Sub_group_sizes are not consistent through all
200
- # hip targets. For example, 64 is used for certain models, but the backend
201
- # does not support it.
202
- # Target archs tested working: gfx1030, gfx1031, (Only tested sub_group_size = 32)
203
- add_compile_definitions (GGML_SYCL_WARP_SIZE=32)
204
- else ()
205
- add_compile_definitions (GGML_SYCL_WARP_SIZE=16)
206
- endif ()
207
-
208
- file (GLOB GGML_HEADERS_SYCL "ggml-sycl/*.hpp" )
209
- list (APPEND GGML_HEADERS_SYCL "../include/ggml-sycl.h" )
210
-
211
- file (GLOB GGML_SOURCES_SYCL "ggml-sycl/*.cpp" )
212
- list (APPEND GGML_SOURCES_SYCL "ggml-sycl.cpp" )
213
-
214
- find_package (DNNL)
215
- message ("-- DNNL found:" ${DNNL_FOUND} )
216
-
217
- if (GGML_SYCL_TARGET STREQUAL "INTEL" )
218
- add_compile_definitions (GGML_SYCL_DNNL=${DNNL_FOUND} )
219
- else ()
220
- add_compile_definitions (GGML_SYCL_DNNL=0)
221
- endif ()
222
-
223
- if (${DNNL_FOUND} AND GGML_SYCL_TARGET STREQUAL "INTEL" )
224
- list (APPEND GGML_EXTRA_LIBS_PRIVATE DNNL::dnnl)
225
- endif ()
226
-
227
- if (WIN32 )
228
- find_package (IntelSYCL REQUIRED)
229
- find_package (MKL REQUIRED)
230
- list (APPEND GGML_EXTRA_LIBS_PRIVATE IntelSYCL::SYCL_CXX MKL::MKL MKL::MKL_SYCL)
231
- else ()
232
- if (GGML_SYCL_TARGET STREQUAL "INTEL" )
233
- list (APPEND GGML_EXTRA_LIBS_PRIVATE sycl OpenCL mkl_core pthread m dl mkl_sycl_blas mkl_intel_ilp64 mkl_tbb_thread)
234
- elseif (GGML_SYCL_TARGET STREQUAL "NVIDIA" )
235
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl-targets=nvptx64-nvidia-cuda" )
236
- list (APPEND GGML_EXTRA_LIBS_PRIVATE sycl pthread m dl onemkl)
237
- elseif (GGML_SYCL_TARGET STREQUAL "AMD" )
238
- if (GGML_SYCL_HIP_TARGET STREQUAL "" )
239
- message (ERROR "Can't enable SYCL hip backend, GGML_SYCL_HIP_TARGET has not been set." )
240
- endif ()
241
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend --offload-arch=${GGML_SYCL_HIP_TARGET} " )
242
- list (APPEND GGML_EXTRA_LIBS_PRIVATE sycl pthread m dl onemkl)
243
- endif ()
244
- endif ()
245
- endif ()
246
-
247
- if (GGML_CANN)
248
- if ("cann${CANN_INSTALL_DIR} " STREQUAL "cann" AND DEFINED ENV{ASCEND_TOOLKIT_HOME})
249
- set (CANN_INSTALL_DIR $ENV{ASCEND_TOOLKIT_HOME} )
250
- message (STATUS "CANN: updated CANN_INSTALL_DIR from ASCEND_TOOLKIT_HOME=$ENV{ASCEND_TOOLKIT_HOME} " )
251
- endif ()
252
-
253
- if (CANN_INSTALL_DIR)
254
- # Only Support Linux.
255
- if (GGML_CANN)
256
- if (NOT UNIX )
257
- set (GGML_CANN OFF )
258
- message (WARNING "CANN: CANN toolkit supports unix but not ${CMAKE_SYSTEM_NAME} . Turning off GGML_CANN" )
259
- endif ()
260
- endif ()
261
-
262
- # Supported platforms: x86-64, arm64
263
- if (GGML_CANN)
264
- if (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64" )
265
- elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64" )
266
- else ()
267
- set (GGML_CANN OFF )
268
- message (WARNING "CANN: CANN toolkit supports x86-64 and arm64 but not ${CMAKE_SYSTEM_PROCESSOR} . Turning off GGML_CANN" )
269
- endif ()
270
- endif ()
271
-
272
- # Set header and libs
273
- if (GGML_CANN)
274
- set (CANN_INCLUDE_DIRS
275
- ${CANN_INSTALL_DIR} /include
276
- ${CANN_INSTALL_DIR} /include /aclnn
277
- ${CANN_INSTALL_DIR} /acllib/include
278
- )
279
-
280
- add_subdirectory (ggml-cann/kernels)
281
- list (APPEND CANN_LIBRARIES
282
- ascendcl
283
- nnopbase
284
- opapi
285
- acl_op_compiler
286
- ascendc_kernels
287
- )
288
-
289
- set (GGML_HEADERS_CANN "../include/ggml-cann.h" )
290
- file (GLOB GGML_SOURCES_CANN "ggml-cann/*.cpp" )
291
- list (APPEND GGML_SOURCES_CANN "ggml-cann.cpp" )
292
-
293
- message (STATUS "CANN: CANN_INCLUDE_DIRS = ${CANN_INCLUDE_DIRS} " )
294
- message (STATUS "CANN: CANN_LIBRARIES = ${CANN_LIBRARIES} " )
295
-
296
- list (APPEND GGML_EXTRA_LIBS_PRIVATE ${CANN_LIBRARIES} )
297
- list (APPEND GGML_EXTRA_INCLUDES ${CANN_INCLUDE_DIRS} )
298
- list (APPEND GGML_EXTRA_LIBDIRS ${CANN_INSTALL_DIR} /lib64)
299
-
300
- list (APPEND GGML_CDEF_PUBLIC GGML_USE_CANN)
301
- endif ()
302
- else ()
303
- set (GGML_CANN OFF )
304
- message (WARNING "CANN: Can't find CANN_INSTALL_DIR, do you forget to source set_var.sh. Turning off GGML_CANN" )
305
- endif ()
306
-
307
- if (NOT GGML_CANN)
308
- message (WARNING "CANN: GGML_CANN is turned OFF, see above for details." )
309
- endif ()
310
- endif ()
311
-
312
141
function (get_flags CCID CCVER)
313
142
set (C_FLAGS "" )
314
143
set (CXX_FLAGS "" )
@@ -485,15 +314,10 @@ if (WIN32)
485
314
endif ()
486
315
endif ()
487
316
488
- #
489
- # libraries
490
- #
491
-
492
317
# ggml
493
318
494
319
add_library (ggml-base
495
320
../include /ggml.h
496
- ../include /ggml-alloc
497
321
../include /ggml-alloc.h
498
322
../include /ggml-backend.h
499
323
../include /ggml-cpp.h
@@ -505,42 +329,43 @@ add_library(ggml-base
505
329
ggml-quants.c
506
330
ggml-quants.h
507
331
ggml-aarch64.c
508
- ggml-aarch64.h
509
- )
332
+ ggml-aarch64.h)
510
333
511
334
add_library (ggml
512
- ggml-backend-reg.cpp
513
- )
514
- add_subdirectory (ggml-cpu)
335
+ ggml-backend-reg.cpp)
515
336
516
- target_link_libraries (ggml PUBLIC ggml-base ggml-cpu )
337
+ target_link_libraries (ggml PUBLIC ggml-base)
517
338
518
339
function (ggml_add_backend backend)
519
340
string (TOUPPER "GGML_${backend} " backend_id)
520
341
if (${backend_id} )
521
342
string (TOLOWER "ggml-${backend} " backend_target)
522
343
add_subdirectory (${backend_target} )
523
- if (${BUILD_SHARED_LIBS} )
524
- target_compile_definitions (${backend_target} PRIVATE GGML_BACKEND_BUILD)
525
- target_compile_definitions (${backend_target} PUBLIC GGML_BACKEND_SHARED)
344
+ if (${backend_id} )
345
+ message (STATUS "Including ${backend} backend" )
346
+ if (${BUILD_SHARED_LIBS} )
347
+ target_compile_definitions (${backend_target} PRIVATE GGML_BACKEND_BUILD)
348
+ target_compile_definitions (${backend_target} PUBLIC GGML_BACKEND_SHARED)
349
+ endif ()
350
+ target_link_libraries (ggml PUBLIC ${backend_target} )
351
+ string (TOUPPER "GGML_USE_${backend} " backend_use)
352
+ target_compile_definitions (ggml PUBLIC ${backend_use} )
526
353
endif ()
527
- target_link_libraries (ggml PUBLIC ${backend_target} )
528
- string (TOUPPER "GGML_USE_${backend} " backend_use)
529
- #set(GGML_CDEF_PUBLIC ${GGML_CDEF_PUBLIC} ${backend_use} PARENT_SCOPE)
530
- target_compile_definitions (ggml PUBLIC ${backend_use} )
531
354
endif ()
532
355
endfunction ()
533
356
357
+ set (GGML_CPU ON )
358
+ ggml_add_backend(CPU)
359
+ ggml_add_backend(AMX)
360
+ ggml_add_backend(BLAS)
361
+ ggml_add_backend(CANN)
534
362
ggml_add_backend(CUDA)
363
+ ggml_add_backend(Kompute)
535
364
ggml_add_backend(METAL)
536
- ggml_add_backend(BLAS)
537
365
ggml_add_backend(RPC)
366
+ ggml_add_backend(SYCL)
538
367
ggml_add_backend(Vulkan)
539
368
540
- if (EMSCRIPTEN)
541
- set_target_properties (ggml PROPERTIES COMPILE_FLAGS "-msimd128" )
542
- endif ()
543
-
544
369
target_compile_definitions (ggml-base PUBLIC ${GGML_CDEF_PUBLIC} )
545
370
target_include_directories (ggml-base PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /../include > $<INSTALL_INTERFACE:include >)
546
371
target_compile_features (ggml-base PRIVATE c_std_11) # don't bump
@@ -574,5 +399,7 @@ if (BUILD_SHARED_LIBS)
574
399
set_target_properties (ggml-base PROPERTIES POSITION_INDEPENDENT_CODE ON )
575
400
set_target_properties (ggml PROPERTIES POSITION_INDEPENDENT_CODE ON )
576
401
target_compile_definitions (ggml-base PRIVATE GGML_BUILD)
402
+ target_compile_definitions (ggml PRIVATE GGML_BUILD)
577
403
target_compile_definitions (ggml-base PUBLIC GGML_SHARED)
404
+ target_compile_definitions (ggml PUBLIC GGML_SHARED)
578
405
endif ()
0 commit comments