Merge branch 'upstream' into concedo_experimental

# Conflicts:
#	README.md
#	docs/backend/SYCL.md
#	docs/docker.md
#	ggml/src/ggml-webgpu/CMakeLists.txt
#	ggml/src/ggml-webgpu/ggml-webgpu-shader-lib.hpp
#	ggml/src/ggml-webgpu/ggml-webgpu.cpp
#	ggml/src/ggml-webgpu/pre_wgsl.hpp
#	ggml/src/ggml-webgpu/wgsl-shaders/flash_attn.wgsl
#	ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_tile.wgsl
#	ggml/src/ggml-webgpu/wgsl-shaders/flash_attn_vec_split.wgsl
#	ggml/src/ggml-webgpu/wgsl-shaders/mul_mat_decls.tmpl
#	tests/test-backend-ops.cpp
#	tests/test-save-load-state.cpp
#	tools/CMakeLists.txt
This commit is contained in:
Concedo
2026-06-04 23:42:40 +08:00
4 changed files with 3036 additions and 988 deletions
File diff suppressed because it is too large Load Diff
+8 -4
View File
@@ -547,6 +547,8 @@ struct ggml_metal_rsets {
// number of seconds since the last graph computation
// keep the residency sets wired for that amount of time to avoid being collected by the OS
int keep_alive_s;
int loops_per_s;
int time_per_loop_ms;
// background heartbeat thread to keep the residency sets alive
atomic_bool d_stop;
@@ -573,10 +575,13 @@ ggml_metal_rsets_t ggml_metal_rsets_init(void) {
res->keep_alive_s = 3*60;
}
res->time_per_loop_ms = 5;
res->loops_per_s = 1000/res->time_per_loop_ms;
GGML_LOG_INFO("%s: creating a residency set collection (keep_alive = %d s)\n", __func__, res->keep_alive_s);
atomic_store_explicit(&res->d_stop, false, memory_order_relaxed);
atomic_store_explicit(&res->d_loop, 2*res->keep_alive_s, memory_order_relaxed);
atomic_store_explicit(&res->d_loop, res->loops_per_s*res->keep_alive_s, memory_order_relaxed);
res->d_group = dispatch_group_create();
@@ -599,8 +604,7 @@ ggml_metal_rsets_t ggml_metal_rsets_init(void) {
[res->lock unlock];
}
// half a second
usleep(500 * 1000);
usleep(res->time_per_loop_ms * 1000);
}
}
#endif
@@ -985,7 +989,7 @@ void ggml_metal_device_rsets_keep_alive(ggml_metal_device_t dev) {
return;
}
atomic_store_explicit(&dev->rsets->d_loop, 2*dev->rsets->keep_alive_s, memory_order_relaxed);
atomic_store_explicit(&dev->rsets->d_loop, dev->rsets->loops_per_s*dev->rsets->keep_alive_s, memory_order_relaxed);
}
struct ggml_metal_event {
+2 -2
View File
@@ -5080,6 +5080,8 @@ int clip_n_mmproj_embd(const struct clip_ctx * ctx) {
return ctx->model.mm_input_proj_w->ne[0];
case PROJECTOR_TYPE_GEMMA4V:
case PROJECTOR_TYPE_GEMMA4UV:
case PROJECTOR_TYPE_GEMMA4A:
case PROJECTOR_TYPE_GEMMA4UA:
return ctx->model.mm_input_proj_w->ne[1];
case PROJECTOR_TYPE_IDEFICS3:
return ctx->model.mm_fc_w->ne[1];
@@ -5114,8 +5116,6 @@ int clip_n_mmproj_embd(const struct clip_ctx * ctx) {
return ctx->model.mm_fc_w->ne[1];
case PROJECTOR_TYPE_LFM2A:
return ctx->model.position_embeddings->ne[0];
case PROJECTOR_TYPE_GEMMA4UA:
return ctx->model.hparams.projection_dim;
case PROJECTOR_TYPE_GRANITE_SPEECH:
return ctx->model.qf_proj_linear_w->ne[1];
case PROJECTOR_TYPE_GLM4V:
+1
View File
@@ -7,6 +7,7 @@
#include <thread>
#include <vector>
#include <cstdint>
#include <unordered_map>
struct common_params;