Skip to content

Commit

Permalink
metal : support build for iOS/tvOS (ggerganov#3089)
Browse files Browse the repository at this point in the history
  • Loading branch information
jhen0409 authored Sep 9, 2023
1 parent ec2a24f commit 4fd5477
Showing 1 changed file with 12 additions and 3 deletions.
15 changes: 12 additions & 3 deletions ggml-metal.m
Original file line number Diff line number Diff line change
Expand Up @@ -117,14 +117,17 @@ @implementation GGMLMetalClass
struct ggml_metal_context * ggml_metal_init(int n_cb) {
metal_printf("%s: allocating\n", __func__);

// Show all the Metal device instances in the system
NSArray * devices = MTLCopyAllDevices();
id <MTLDevice> device;
NSString * s;

#if TARGET_OS_OSX
// Show all the Metal device instances in the system
NSArray * devices = MTLCopyAllDevices();
for (device in devices) {
s = [device name];
metal_printf("%s: found device: %s\n", __func__, [s UTF8String]);
}
#endif

// Pick and show default Metal device
device = MTLCreateSystemDefaultDevice();
Expand Down Expand Up @@ -247,13 +250,15 @@ @implementation GGMLMetalClass
#undef GGML_METAL_ADD_KERNEL
}

metal_printf("%s: recommendedMaxWorkingSetSize = %8.2f MB\n", __func__, ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0);
metal_printf("%s: hasUnifiedMemory = %s\n", __func__, ctx->device.hasUnifiedMemory ? "true" : "false");
#if TARGET_OS_OSX
metal_printf("%s: recommendedMaxWorkingSetSize = %8.2f MB\n", __func__, ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0);
if (ctx->device.maxTransferRate != 0) {
metal_printf("%s: maxTransferRate = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0);
} else {
metal_printf("%s: maxTransferRate = built-in GPU\n", __func__);
}
#endif

return ctx;
}
Expand Down Expand Up @@ -454,6 +459,7 @@ bool ggml_metal_add_buffer(
}
}

#if TARGET_OS_OSX
metal_printf(", (%8.2f / %8.2f)",
ctx->device.currentAllocatedSize / 1024.0 / 1024.0,
ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0);
Expand All @@ -463,6 +469,9 @@ bool ggml_metal_add_buffer(
} else {
metal_printf("\n");
}
#else
metal_printf(", (%8.2f)\n", ctx->device.currentAllocatedSize / 1024.0 / 1024.0);
#endif
}

return true;
Expand Down

0 comments on commit 4fd5477

Please sign in to comment.