From e0f3c9d4dd2564dca34dac5a6c9457c7d857518d Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Fri, 14 Mar 2025 15:40:20 +0100 Subject: [PATCH] examples : add GGML_USE_CPU=ON flag to whisper.objc (#2880) This commit adds the GGML_USE_CPU=ON flag to the whisper.objc project in order to enable the CPU backend for the whisper.objc project. The motivation for this change is that currently the following error is generated when running the example: ```console ggml_backend_buffer_type_t ggml_backend_get_default_buffer_type(ggml_backend_t backend) { return ggml_backend_dev_buffer_type(backend->device); <- Thread 1: EXC_BAD_ACCESS (code=1, address=0x70) } ``` If we inspect the `backend` variable we can see that it is a `nullptr`. ```console (lldb) p backend (ggml_backend_t) nullptr ``` When running in a simulator and that automatically means that there will be no gpu as there is a check for this in the code. But the CPU backend should still be present. The objective-c code will compile the whisper sources including the ggml sources. And if `-DGGMLL_USE_CPU` is not defined then there will be no CPU backend, and in this particular case of backend at all. Resolves: https://github.com/ggerganov/whisper.cpp/issues/2870 --- examples/whisper.objc/whisper.objc.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/whisper.objc/whisper.objc.xcodeproj/project.pbxproj b/examples/whisper.objc/whisper.objc.xcodeproj/project.pbxproj index d0ab4913..ca93ff98 100644 --- a/examples/whisper.objc/whisper.objc.xcodeproj/project.pbxproj +++ b/examples/whisper.objc/whisper.objc.xcodeproj/project.pbxproj @@ -450,6 +450,7 @@ ); MARKETING_VERSION = 1.0; MTL_HEADER_SEARCH_PATHS = ""; + OTHER_CFLAGS = "-DGGML_USE_CPU=ON"; PRODUCT_BUNDLE_IDENTIFIER = "com.ggerganov.whisper-objc"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES; @@ -481,6 +482,7 @@ ); MARKETING_VERSION = 1.0; MTL_HEADER_SEARCH_PATHS = ""; + OTHER_CFLAGS = "-DGGML_USE_CPU=ON"; PRODUCT_BUNDLE_IDENTIFIER = "com.ggerganov.whisper-objc"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = YES;