|
|
@@ -816,7 +816,10 @@ static void ggml_gallocr_init_tensor(ggml_gallocr_t galloc, struct ggml_tensor *
|
|
|
static bool ggml_gallocr_node_needs_realloc(ggml_gallocr_t galloc, struct ggml_tensor * node, struct tensor_alloc * talloc) {
|
|
|
size_t node_size = 0;
|
|
|
if (!node->data && !node->view_src) {
|
|
|
- GGML_ASSERT(talloc->buffer_id >= 0); // prevent segfault when misusing the API
|
|
|
+ // If we previously had data but don't now then reallocate
|
|
|
+ if (talloc->buffer_id < 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
node_size = ggml_backend_buft_get_alloc_size(galloc->bufts[talloc->buffer_id], node);
|
|
|
}
|
|
|
return talloc->size_max >= node_size;
|