|
|
@@ -116,6 +116,7 @@ option(LLAMA_MPI "llama: use MPI"
|
|
|
option(LLAMA_QKK_64 "llama: use super-block size of 64 for k-quants" OFF)
|
|
|
option(LLAMA_SYCL "llama: use SYCL" OFF)
|
|
|
option(LLAMA_SYCL_F16 "llama: use 16 bit floats for sycl calculations" OFF)
|
|
|
+set(LLAMA_SYCL_TARGET "INTEL" CACHE STRING "llama: sycl target device")
|
|
|
option(LLAMA_CPU_HBM "llama: use memkind for CPU HBM" OFF)
|
|
|
|
|
|
option(LLAMA_BUILD_TESTS "llama: build tests" ${LLAMA_STANDALONE})
|
|
|
@@ -534,6 +535,10 @@ if (LLAMA_HIPBLAS)
|
|
|
endif()
|
|
|
|
|
|
if (LLAMA_SYCL)
|
|
|
+ if (NOT LLAMA_SYCL_TARGET MATCHES "^(INTEL|NVIDIA)$")
|
|
|
+ message(FATAL_ERROR "Invalid backend chosen, supported options are INTEL or NVIDIA")
|
|
|
+ endif()
|
|
|
+
|
|
|
if ( NOT DEFINED ENV{ONEAPI_ROOT})
|
|
|
message(FATAL_ERROR "Not detect ENV {ONEAPI_ROOT}, please install oneAPI & source it, like: source /opt/intel/oneapi/setvars.sh")
|
|
|
endif()
|
|
|
@@ -555,6 +560,9 @@ if (LLAMA_SYCL)
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl -L${MKLROOT}/lib")
|
|
|
+ if (LLAMA_SYCL_TARGET STREQUAL "NVIDIA")
|
|
|
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsycl-targets=nvptx64-nvidia-cuda")
|
|
|
+ endif()
|
|
|
|
|
|
set(GGML_HEADERS_SYCL ggml-sycl.h)
|
|
|
set(GGML_SOURCES_SYCL ggml-sycl.cpp)
|
|
|
@@ -562,7 +570,11 @@ if (LLAMA_SYCL)
|
|
|
if (WIN32)
|
|
|
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl sycl7 OpenCL mkl_sycl_blas_dll.lib mkl_intel_ilp64_dll.lib mkl_sequential_dll.lib mkl_core_dll.lib)
|
|
|
else()
|
|
|
- set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl OpenCL mkl_core pthread m dl mkl_sycl_blas mkl_intel_ilp64 mkl_tbb_thread)
|
|
|
+ if (LLAMA_SYCL_TARGET STREQUAL "INTEL")
|
|
|
+ set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl OpenCL mkl_core pthread m dl mkl_sycl_blas mkl_intel_ilp64 mkl_tbb_thread)
|
|
|
+ elseif (LLAMA_SYCL_TARGET STREQUAL "NVIDIA")
|
|
|
+ set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS} -fsycl pthread m dl onemkl)
|
|
|
+ endif()
|
|
|
endif()
|
|
|
endif()
|
|
|
|