@@ -29,27 +29,6 @@ endif()
2929unset (GGML_EXTRA_LIBS_PRIVATE)
3030unset (GGML_EXTRA_LIBS_PUBLIC)
3131
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-
5332if (GGML_HIPBLAS)
5433 if (NOT EXISTS $ENV{ROCM_PATH} )
5534 if (NOT EXISTS /opt/rocm)
@@ -159,156 +138,6 @@ if (GGML_HIPBLAS)
159138 list (APPEND GGML_EXTRA_LIBS_PUBLIC hip::host roc::rocblas roc::hipblas)
160139endif ()
161140
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-
312141function (get_flags CCID CCVER)
313142 set (C_FLAGS "" )
314143 set (CXX_FLAGS "" )
@@ -485,15 +314,10 @@ if (WIN32)
485314 endif ()
486315endif ()
487316
488- #
489- # libraries
490- #
491-
492317# ggml
493318
494319add_library (ggml-base
495320 ../include /ggml.h
496- ../include /ggml-alloc
497321 ../include /ggml-alloc.h
498322 ../include /ggml-backend.h
499323 ../include /ggml-cpp.h
@@ -505,42 +329,43 @@ add_library(ggml-base
505329 ggml-quants.c
506330 ggml-quants.h
507331 ggml-aarch64.c
508- ggml-aarch64.h
509- )
332+ ggml-aarch64.h)
510333
511334add_library (ggml
512- ggml-backend-reg.cpp
513- )
514- add_subdirectory (ggml-cpu)
335+ ggml-backend-reg.cpp)
515336
516- target_link_libraries (ggml PUBLIC ggml-base ggml-cpu )
337+ target_link_libraries (ggml PUBLIC ggml-base)
517338
518339function (ggml_add_backend backend)
519340 string (TOUPPER "GGML_${backend} " backend_id)
520341 if (${backend_id} )
521342 string (TOLOWER "ggml-${backend} " backend_target)
522343 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} )
526353 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} )
531354 endif ()
532355endfunction ()
533356
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)
534362ggml_add_backend(CUDA)
363+ ggml_add_backend(Kompute)
535364ggml_add_backend(METAL)
536- ggml_add_backend(BLAS)
537365ggml_add_backend(RPC)
366+ ggml_add_backend(SYCL)
538367ggml_add_backend(Vulkan)
539368
540- if (EMSCRIPTEN)
541- set_target_properties (ggml PROPERTIES COMPILE_FLAGS "-msimd128" )
542- endif ()
543-
544369target_compile_definitions (ggml-base PUBLIC ${GGML_CDEF_PUBLIC} )
545370target_include_directories (ggml-base PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} /../include > $<INSTALL_INTERFACE:include >)
546371target_compile_features (ggml-base PRIVATE c_std_11) # don't bump
@@ -574,5 +399,7 @@ if (BUILD_SHARED_LIBS)
574399 set_target_properties (ggml-base PROPERTIES POSITION_INDEPENDENT_CODE ON )
575400 set_target_properties (ggml PROPERTIES POSITION_INDEPENDENT_CODE ON )
576401 target_compile_definitions (ggml-base PRIVATE GGML_BUILD)
402+ target_compile_definitions (ggml PRIVATE GGML_BUILD)
577403 target_compile_definitions (ggml-base PUBLIC GGML_SHARED)
404+ target_compile_definitions (ggml PUBLIC GGML_SHARED)
578405endif ()
0 commit comments