diff --git a/CMakeLists.txt b/CMakeLists.txt index c4c7aa88..f17bb24b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,6 +64,7 @@ if (APPLE) else() option(WHISPER_OPENBLAS "whisper: support for OpenBLAS" OFF) option(WHISPER_CUBLAS "whisper: support for cuBLAS" OFF) + option(WHISPER_CLBLAST "whisper: use CLBlast" OFF) endif() option(WHISPER_PERF "whisper: enable perf timings" OFF) @@ -167,6 +168,21 @@ if (WHISPER_CUBLAS) endif() endif() +if (WHISPER_CLBLAST) + find_package(CLBlast) + if (CLBlast_FOUND) + message(STATUS "CLBlast found") + + set(GGML_OPENCL_SOURCES ggml-opencl.c ggml-opencl.h) + + add_compile_definitions(GGML_USE_CLBLAST) + + set(WHISPER_EXTRA_LIBS ${WHISPER_EXTRA_LIBS} clblast) + else() + message(WARNING "CLBlast not found") + endif() +endif() + # compiler flags if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) @@ -274,6 +290,7 @@ add_library(${TARGET} ggml.h ggml.c ${GGML_CUDA_SOURCES} + ${GGML_OPENCL_SOURCES} whisper.h whisper.cpp ) diff --git a/Makefile b/Makefile index 87ce8c41..07871362 100644 --- a/Makefile +++ b/Makefile @@ -171,6 +171,15 @@ ggml-cuda.o: ggml-cuda.cu ggml-cuda.h $(NVCC) $(NVCCFLAGS) $(CXXFLAGS) -Wno-pedantic -c $< -o $@ endif +ifdef WHISPER_CLBLAST + CFLAGS += -DGGML_USE_CLBLAST + LDFLAGS += -lclblast -lOpenCL + WHISPER_OBJ += ggml-opencl.o + +ggml-opencl.o: ggml-opencl.c ggml-opencl.h + $(CC) $(CFLAGS) -c $< -o $@ +endif + ifdef WHISPER_GPROF CFLAGS += -pg CXXFLAGS += -pg