metal : fix build(#17799)
* metal : fix build * tests : fix context destruction
This commit is contained in:
parent
67788f6846
commit
8ce774a102
|
|
@ -241,6 +241,12 @@ int main(int argc, char ** argv) {
|
||||||
|
|
||||||
llama_batch_free(batch);
|
llama_batch_free(batch);
|
||||||
|
|
||||||
|
// this one is managed by common_init_result
|
||||||
|
//llama_free(ctx);
|
||||||
|
|
||||||
|
llama_free(ctx2);
|
||||||
|
llama_free(ctx3);
|
||||||
|
|
||||||
if (result0 != result2) {
|
if (result0 != result2) {
|
||||||
fprintf(stderr, "\n%s : error : the seq restore generation is different\n", __func__);
|
fprintf(stderr, "\n%s : error : the seq restore generation is different\n", __func__);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -574,6 +574,8 @@ ggml_metal_rsets_t ggml_metal_rsets_init(void) {
|
||||||
// the requests stop after a certain amount of time (keep_alive_s) of inactivity
|
// the requests stop after a certain amount of time (keep_alive_s) of inactivity
|
||||||
dispatch_queue_t d_queue = dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0);
|
dispatch_queue_t d_queue = dispatch_get_global_queue(QOS_CLASS_DEFAULT, 0);
|
||||||
dispatch_group_async(res->d_group, d_queue, ^{
|
dispatch_group_async(res->d_group, d_queue, ^{
|
||||||
|
#if defined(GGML_METAL_HAS_RESIDENCY_SETS)
|
||||||
|
if (@available(macOS 15.0, iOS 18.0, tvOS 18.0, visionOS 2.0, *)) {
|
||||||
while (!atomic_load_explicit(&res->d_stop, memory_order_relaxed)) {
|
while (!atomic_load_explicit(&res->d_stop, memory_order_relaxed)) {
|
||||||
if (atomic_load_explicit(&res->d_loop, memory_order_relaxed) > 0) {
|
if (atomic_load_explicit(&res->d_loop, memory_order_relaxed) > 0) {
|
||||||
[res->lock lock];
|
[res->lock lock];
|
||||||
|
|
@ -590,6 +592,8 @@ ggml_metal_rsets_t ggml_metal_rsets_init(void) {
|
||||||
// half a second
|
// half a second
|
||||||
usleep(500 * 1000);
|
usleep(500 * 1000);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
});
|
});
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
|
@ -600,6 +604,7 @@ void ggml_metal_rsets_free(ggml_metal_rsets_t rsets) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// note: if you hit this assert, most likely you haven't deallocated all Metal resources before exiting
|
||||||
GGML_ASSERT([rsets->data count] == 0);
|
GGML_ASSERT([rsets->data count] == 0);
|
||||||
|
|
||||||
atomic_store_explicit(&rsets->d_stop, true, memory_order_relaxed);
|
atomic_store_explicit(&rsets->d_stop, true, memory_order_relaxed);
|
||||||
|
|
@ -787,9 +792,6 @@ ggml_metal_device_t ggml_metal_device_init(void) {
|
||||||
dev->rsets = nil;
|
dev->rsets = nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------
|
|
||||||
|
|
||||||
// print MTL GPU family:
|
// print MTL GPU family:
|
||||||
GGML_LOG_INFO("%s: GPU name: %s\n", __func__, dev->props.name);
|
GGML_LOG_INFO("%s: GPU name: %s\n", __func__, dev->props.name);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue