mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-26 06:10:29 +01:00
* Fix issue with ggml-metal.metal path * Add ggml-metal.metal as a resource for llama target * Update flake.nix metal kernel substitution
This commit is contained in:
parent
059e99066d
commit
303f5809f1
@ -218,6 +218,9 @@ if (LLAMA_METAL)
|
|||||||
|
|
||||||
# copy ggml-metal.metal to bin directory
|
# copy ggml-metal.metal to bin directory
|
||||||
configure_file(ggml-metal.metal bin/ggml-metal.metal COPYONLY)
|
configure_file(ggml-metal.metal bin/ggml-metal.metal COPYONLY)
|
||||||
|
if (LLAMA_METAL)
|
||||||
|
set_target_properties(llama PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS}
|
set(LLAMA_EXTRA_LIBS ${LLAMA_EXTRA_LIBS}
|
||||||
${FOUNDATION_LIBRARY}
|
${FOUNDATION_LIBRARY}
|
||||||
@ -432,6 +435,9 @@ target_link_libraries(llama PRIVATE
|
|||||||
if (BUILD_SHARED_LIBS)
|
if (BUILD_SHARED_LIBS)
|
||||||
set_target_properties(llama PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
set_target_properties(llama PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
target_compile_definitions(llama PRIVATE LLAMA_SHARED LLAMA_BUILD)
|
target_compile_definitions(llama PRIVATE LLAMA_SHARED LLAMA_BUILD)
|
||||||
|
if (LLAMA_METAL)
|
||||||
|
set_target_properties(llama PROPERTIES RESOURCE "${CMAKE_CURRENT_SOURCE_DIR}/ggml-metal.metal")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (GGML_SOURCES_CUDA)
|
if (GGML_SOURCES_CUDA)
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
postPatch =
|
postPatch =
|
||||||
if isM1 then ''
|
if isM1 then ''
|
||||||
substituteInPlace ./ggml-metal.m \
|
substituteInPlace ./ggml-metal.m \
|
||||||
--replace '[[NSBundle mainBundle] pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/ggml-metal.metal\";"
|
--replace '[bundle pathForResource:@"ggml-metal" ofType:@"metal"];' "@\"$out/ggml-metal.metal\";"
|
||||||
'' else "";
|
'' else "";
|
||||||
nativeBuildInputs = with pkgs; [ cmake ];
|
nativeBuildInputs = with pkgs; [ cmake ];
|
||||||
buildInputs = osSpecific;
|
buildInputs = osSpecific;
|
||||||
|
@ -73,6 +73,12 @@ struct ggml_metal_context {
|
|||||||
// for now it is easier to work in a separate file
|
// for now it is easier to work in a separate file
|
||||||
static NSString * const msl_library_source = @"see metal.metal";
|
static NSString * const msl_library_source = @"see metal.metal";
|
||||||
|
|
||||||
|
// Here to assist with NSBundle Path Hack
|
||||||
|
@interface GGMLMetalClass : NSObject
|
||||||
|
@end
|
||||||
|
@implementation GGMLMetalClass
|
||||||
|
@end
|
||||||
|
|
||||||
struct ggml_metal_context * ggml_metal_init(void) {
|
struct ggml_metal_context * ggml_metal_init(void) {
|
||||||
fprintf(stderr, "%s: allocating\n", __func__);
|
fprintf(stderr, "%s: allocating\n", __func__);
|
||||||
|
|
||||||
@ -108,7 +114,8 @@ struct ggml_metal_context * ggml_metal_init(void) {
|
|||||||
NSError * error = nil;
|
NSError * error = nil;
|
||||||
|
|
||||||
//NSString * path = [[NSBundle mainBundle] pathForResource:@"../../examples/metal/metal" ofType:@"metal"];
|
//NSString * path = [[NSBundle mainBundle] pathForResource:@"../../examples/metal/metal" ofType:@"metal"];
|
||||||
NSString * path = [[NSBundle mainBundle] pathForResource:@"ggml-metal" ofType:@"metal"];
|
NSBundle * bundle = [NSBundle bundleForClass:[GGMLMetalClass class]];
|
||||||
|
NSString * path = [bundle pathForResource:@"ggml-metal" ofType:@"metal"];
|
||||||
fprintf(stderr, "%s: loading '%s'\n", __func__, [path UTF8String]);
|
fprintf(stderr, "%s: loading '%s'\n", __func__, [path UTF8String]);
|
||||||
|
|
||||||
NSString * src = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
|
NSString * src = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];
|
||||||
|
Loading…
Reference in New Issue
Block a user