summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAT <manyoso@users.noreply.github.com>2024-02-13 15:44:25 -0600
committerGitHub <noreply@github.com>2024-02-13 22:44:25 +0100
commitf5ca054855dea83f424003162f26de376e5643f6 (patch)
tree96771bf70158e325a8029eabe0184e248547c02a
parent6c00a066928b0475b865a2e3e709e2166e02d548 (diff)
Early return for zero size calls to get_tensor. (#5482)
* Early return for zero size calls to get_tensor. Signed-off-by: Adam Treat <treat.adam@gmail.com> * Update ggml-kompute.cpp Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> * Update ggml-kompute.cpp Co-authored-by: Georgi Gerganov <ggerganov@gmail.com> * Add an early return to the get/set tensor when the size is null. Signed-off-by: Adam Treat <treat.adam@gmail.com> * Early return after the assertions. Signed-off-by: Adam Treat <treat.adam@gmail.com> * Since we do the early return in the generic backend now no reason to do so here as well. Signed-off-by: Adam Treat <treat.adam@gmail.com> --------- Signed-off-by: Adam Treat <treat.adam@gmail.com> Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
-rw-r--r--ggml-backend.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/ggml-backend.c b/ggml-backend.c
index 9ee81b76..87eea844 100644
--- a/ggml-backend.c
+++ b/ggml-backend.c
@@ -219,6 +219,10 @@ GGML_CALL void ggml_backend_tensor_set(struct ggml_tensor * tensor, const void *
GGML_ASSERT(buf != NULL && "tensor buffer not set");
GGML_ASSERT(offset + size <= ggml_nbytes(tensor) && "tensor write out of bounds");
+ if (!size) {
+ return;
+ }
+
tensor->buffer->iface.set_tensor(buf, tensor, data, offset, size);
}
@@ -229,6 +233,10 @@ GGML_CALL void ggml_backend_tensor_get(const struct ggml_tensor * tensor, void *
GGML_ASSERT(tensor->buffer != NULL && "tensor buffer not set");
GGML_ASSERT(offset + size <= ggml_nbytes(tensor) && "tensor read out of bounds");
+ if (!size) {
+ return;
+ }
+
tensor->buffer->iface.get_tensor(buf, tensor, data, offset, size);
}