@@ -1168,7 +1168,6 @@ static struct ggml_backend_meta_split_state ggml_backend_meta_get_split_state(
11681168}
11691169
11701170static struct ggml_backend_meta_split_state ggml_backend_meta_get_split_state (const struct ggml_tensor * tensor, bool assume_sync) {
1171- GGML_ASSERT (ggml_backend_buffer_is_meta (tensor->buffer ));
11721171 ggml_backend_meta_buffer_context * buf_ctx = (ggml_backend_meta_buffer_context *) tensor->buffer ->context ;
11731172 return ggml_backend_meta_get_split_state (buf_ctx->get_simple_tensor_container (tensor), tensor, assume_sync);
11741173}
@@ -1259,7 +1258,14 @@ static enum ggml_status ggml_backend_meta_buffer_init_tensor_impl(ggml_backend_m
12591258 t_ij->data = (char *) ggml_backend_buffer_get_base (simple_buf)
12601259 + size_t (tensor->data ) - size_t (ggml_backend_buffer_get_base (tensor->buffer ));
12611260 }
1262- t_ij->extra = tensor->extra ;
1261+
1262+ if (simple_buf) {
1263+ // the backend that owns the buffer will set .extra
1264+ ggml_backend_buffer_init_tensor (simple_buf, t_ij);
1265+ } else {
1266+ t_ij->extra = tensor->extra ;
1267+ }
1268+
12631269 for (int i = 0 ; i < GGML_MAX_SRC ; i++) {
12641270 t_ij->src [i] = tensor->src [i];
12651271 if (tensor->src [i] == tensor) {
@@ -1668,6 +1674,16 @@ bool ggml_backend_buffer_is_meta(ggml_backend_buffer_t buf) {
16681674 return buf != nullptr && buf->iface .free_buffer == ggml_backend_meta_buffer_iface.free_buffer ;
16691675}
16701676
1677+ void ggml_backend_meta_buffer_set_usage (ggml_backend_buffer_t buffer, enum ggml_backend_buffer_usage usage) {
1678+ GGML_ASSERT (ggml_backend_buffer_is_meta (buffer));
1679+ ggml_backend_meta_buffer_context * buf_ctx = (ggml_backend_meta_buffer_context *) buffer->context ;
1680+ for (size_t i = 0 ; i < buf_ctx->bufs .size (); i++) {
1681+ if (buf_ctx->bufs [i]) {
1682+ ggml_backend_buffer_set_usage (buf_ctx->bufs [i].get (), usage);
1683+ }
1684+ }
1685+ }
1686+
16711687static ggml_backend_buffer_t ggml_backend_meta_buffer_type_alloc_buffer (ggml_backend_buffer_type_t buft, size_t size) {
16721688 const size_t n_simple_bufts = ggml_backend_meta_buft_n_bufts (buft);
16731689
0 commit comments