Skip to content

Commit

Permalink
Merge branch '1842' into testing
Browse files Browse the repository at this point in the history
  • Loading branch information
Jason Livingston authored and Jason Livingston committed Feb 8, 2024
2 parents 9f7244d + 962a540 commit 8e67e17
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 0 deletions.
7 changes: 7 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ if (APPLE)
option(WHISPER_METAL_NDEBUG "whisper: disable Metal debugging" OFF)
option(WHISPER_COREML "whisper: enable Core ML framework" OFF)
option(WHISPER_COREML_ALLOW_FALLBACK "whisper: allow non-CoreML fallback" OFF)
option(WHISPER_EMBED_METAL_LIBRARY "whisper: embed Metal library" OFF)
else()
option(WHISPER_BLAS "whisper: use BLAS libraries" OFF)
option(WHISPER_BLAS_VENDOR "whisper: BLAS library vendor" Generic)
Expand Down Expand Up @@ -149,6 +150,12 @@ if (APPLE)

# copy ggml-metal.metal to bin directory
configure_file(ggml-metal.metal bin/ggml-metal.metal COPYONLY)

if (WHISPER_EMBED_METAL_LIBRARY)
enable_language(ASM)
set(WHISPER_EXTRA_FLAGS ${WHISPER_EXTRA_FLAGS} -DGGML_EMBED_METAL_LIBRARY)
set(GGML_SOURCES_METAL ${GGML_SOURCES_METAL} ggml-metal-embed.s)
endif()
endif()

if (WHISPER_COREML)
Expand Down
9 changes: 9 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,15 @@ ggml-metal.o: ggml-metal.m ggml-metal.h
$(CC) $(CFLAGS) -c $< -o $@

WHISPER_OBJ += ggml-metal.o

ifdef WHISPER_EMBED_METAL_LIBRARY
CFLAGS += -DGGML_EMBED_METAL_LIBRARY

ggml-metal-embed.o: ggml-metal-embed.s
$(AS) $< -o $@

WHISPER_OBJ += ggml-metal-embed.o
endif
endif

libwhisper.a: $(WHISPER_OBJ)
Expand Down
7 changes: 7 additions & 0 deletions ggml-metal-embed.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
.section __DATA, __ggml_metallib
.globl _ggml_metallib_start
_ggml_metallib_start:
.incbin "ggml-metal.metal"
.globl _ggml_metallib_end
_ggml_metallib_end:

9 changes: 9 additions & 0 deletions ggml-metal.m
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,14 @@ static void ggml_metal_log(enum ggml_log_level level, const char * format, ...){
return NULL;
}
} else {
#if GGML_EMBED_METAL_LIBRARY
GGML_METAL_LOG_INFO("%s: using embedded metal library\n", __func__);

extern const char ggml_metallib_start[];
extern const char ggml_metallib_end[];

NSString * src = [[NSString alloc] initWithBytes:ggml_metallib_start length:(ggml_metallib_end-ggml_metallib_start) encoding:NSUTF8StringEncoding];
#else
GGML_METAL_LOG_INFO("%s: default.metallib not found, loading from source\n", __func__);

NSString * sourcePath;
Expand All @@ -293,6 +301,7 @@ static void ggml_metal_log(enum ggml_log_level level, const char * format, ...){
GGML_METAL_LOG_ERROR("%s: error: %s\n", __func__, [[error description] UTF8String]);
return NULL;
}
#endif

@autoreleasepool {
// dictionary of preprocessor macros
Expand Down

0 comments on commit 8e67e17

Please sign in to comment.