From 08fc7874551c9e388c98226c354e62cfa44b2f6a Mon Sep 17 00:00:00 2001 From: Daniel Bevenius Date: Fri, 14 Mar 2025 10:35:05 +0100 Subject: [PATCH] examples : add GGML_USE_CPU=ON flag to whisper.objc 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 d0ab491309d..ca93ff98947 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;