mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-28 08:31:25 +00:00 
			
		
		
		
	metal : support build for iOS/tvOS (#3089)
This commit is contained in:
		
							
								
								
									
										15
									
								
								ggml-metal.m
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								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) { | struct ggml_metal_context * ggml_metal_init(int n_cb) { | ||||||
|     metal_printf("%s: allocating\n", __func__); |     metal_printf("%s: allocating\n", __func__); | ||||||
|  |  | ||||||
|     // Show all the Metal device instances in the system |  | ||||||
|     NSArray * devices = MTLCopyAllDevices(); |  | ||||||
|     id <MTLDevice> device; |     id <MTLDevice> device; | ||||||
|     NSString * s; |     NSString * s; | ||||||
|  |  | ||||||
|  | #if TARGET_OS_OSX | ||||||
|  |     // Show all the Metal device instances in the system | ||||||
|  |     NSArray * devices = MTLCopyAllDevices(); | ||||||
|     for (device in devices) { |     for (device in devices) { | ||||||
|         s = [device name]; |         s = [device name]; | ||||||
|         metal_printf("%s: found device: %s\n", __func__, [s UTF8String]); |         metal_printf("%s: found device: %s\n", __func__, [s UTF8String]); | ||||||
|     } |     } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     // Pick and show default Metal device |     // Pick and show default Metal device | ||||||
|     device = MTLCreateSystemDefaultDevice(); |     device = MTLCreateSystemDefaultDevice(); | ||||||
| @@ -247,13 +250,15 @@ struct ggml_metal_context * ggml_metal_init(int n_cb) { | |||||||
| #undef GGML_METAL_ADD_KERNEL | #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"); |     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) { |     if (ctx->device.maxTransferRate != 0) { | ||||||
|         metal_printf("%s: maxTransferRate               = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0); |         metal_printf("%s: maxTransferRate               = %8.2f MB/s\n", __func__, ctx->device.maxTransferRate / 1024.0 / 1024.0); | ||||||
|     } else { |     } else { | ||||||
|         metal_printf("%s: maxTransferRate               = built-in GPU\n", __func__); |         metal_printf("%s: maxTransferRate               = built-in GPU\n", __func__); | ||||||
|     } |     } | ||||||
|  | #endif | ||||||
|  |  | ||||||
|     return ctx; |     return ctx; | ||||||
| } | } | ||||||
| @@ -454,6 +459,7 @@ bool ggml_metal_add_buffer( | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | #if TARGET_OS_OSX | ||||||
|         metal_printf(", (%8.2f / %8.2f)", |         metal_printf(", (%8.2f / %8.2f)", | ||||||
|                 ctx->device.currentAllocatedSize / 1024.0 / 1024.0, |                 ctx->device.currentAllocatedSize / 1024.0 / 1024.0, | ||||||
|                 ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0); |                 ctx->device.recommendedMaxWorkingSetSize / 1024.0 / 1024.0); | ||||||
| @@ -463,6 +469,9 @@ bool ggml_metal_add_buffer( | |||||||
|         } else { |         } else { | ||||||
|             metal_printf("\n"); |             metal_printf("\n"); | ||||||
|         } |         } | ||||||
|  | #else | ||||||
|  |         metal_printf(", (%8.2f)\n", ctx->device.currentAllocatedSize / 1024.0 / 1024.0); | ||||||
|  | #endif | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     return true; |     return true; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jhen-Jie Hong
					Jhen-Jie Hong