summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJhen-Jie Hong <iainst0409@gmail.com>2023-09-09 16:46:04 +0800
committerGitHub <noreply@github.com>2023-09-09 11:46:04 +0300
commit4fd54779550e43e2a29f6840ebcf8f395a2f879e (patch)
treef407a8ab161255c16fe63dc6c0528e2b72abacb1
parentec2a24fedf1de8ebd5f170016953b09ff2806924 (diff)
metal : support build for iOS/tvOS (#3089)
-rw-r--r--ggml-metal.m15
1 files changed, 12 insertions, 3 deletions
diff --git a/ggml-metal.m b/ggml-metal.m
index 7e2355ce..1e6845b9 100644
--- a/ggml-metal.m
+++ b/ggml-metal.m
@@ -117,14 +117,17 @@ static NSString * const msl_library_source = @"see metal.metal";
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();
@@ -247,13 +250,15 @@ struct ggml_metal_context * ggml_metal_init(int n_cb) {
#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;
}
@@ -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);
@@ -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;