Spaces:
Running
Running
Diego Devesa
commited on
Commit
·
9ac3c7e
1
Parent(s):
1ca87a8
ggml-backend : only offload from host buffers (fix) (llama/11124)
Browse files
ggml/src/ggml-backend.cpp
CHANGED
|
@@ -761,10 +761,10 @@ static int ggml_backend_sched_backend_id_from_cur(ggml_backend_sched_t sched, st
|
|
| 761 |
}
|
| 762 |
// skip ROPE since the rope freqs tensor is too small to choose a backend based on it
|
| 763 |
// not an ideal solution
|
| 764 |
-
if (tensor->op != GGML_OP_ROPE && src->buffer != NULL && src->buffer->usage == GGML_BACKEND_BUFFER_USAGE_WEIGHTS
|
| 765 |
int src_backend_id = ggml_backend_sched_backend_from_buffer(sched, src, tensor);
|
| 766 |
// check if a backend with higher prio wants to offload the op
|
| 767 |
-
if (src_backend_id == sched->n_backends - 1) {
|
| 768 |
for (int b = 0; b < src_backend_id; b++) {
|
| 769 |
if (ggml_backend_supports_op(sched->backends[b], tensor) && ggml_backend_offload_op(sched->backends[b], tensor)) {
|
| 770 |
SET_CAUSE(tensor, "1.off");
|
|
|
|
| 761 |
}
|
| 762 |
// skip ROPE since the rope freqs tensor is too small to choose a backend based on it
|
| 763 |
// not an ideal solution
|
| 764 |
+
if (tensor->op != GGML_OP_ROPE && src->buffer != NULL && src->buffer->usage == GGML_BACKEND_BUFFER_USAGE_WEIGHTS) {
|
| 765 |
int src_backend_id = ggml_backend_sched_backend_from_buffer(sched, src, tensor);
|
| 766 |
// check if a backend with higher prio wants to offload the op
|
| 767 |
+
if (src_backend_id == sched->n_backends - 1 && ggml_backend_buffer_is_host(src->buffer)) {
|
| 768 |
for (int b = 0; b < src_backend_id; b++) {
|
| 769 |
if (ggml_backend_supports_op(sched->backends[b], tensor) && ggml_backend_offload_op(sched->backends[b], tensor)) {
|
| 770 |
SET_CAUSE(tensor, "1.off");
|
ggml/src/ggml-cpu/ggml-cpu-aarch64.cpp
CHANGED
|
@@ -4169,6 +4169,8 @@ static ggml_backend_buffer_t ggml_backend_cpu_aarch64_buffer_type_alloc_buffer(g
|
|
| 4169 |
buffer->buft = buft;
|
| 4170 |
buffer->iface.init_tensor = ggml_backend_cpu_aarch64_buffer_init_tensor;
|
| 4171 |
buffer->iface.set_tensor = ggml_backend_cpu_aarch64_buffer_set_tensor;
|
|
|
|
|
|
|
| 4172 |
return buffer;
|
| 4173 |
}
|
| 4174 |
|
|
|
|
| 4169 |
buffer->buft = buft;
|
| 4170 |
buffer->iface.init_tensor = ggml_backend_cpu_aarch64_buffer_init_tensor;
|
| 4171 |
buffer->iface.set_tensor = ggml_backend_cpu_aarch64_buffer_set_tensor;
|
| 4172 |
+
buffer->iface.get_tensor = nullptr;
|
| 4173 |
+
buffer->iface.cpy_tensor = nullptr;
|
| 4174 |
return buffer;
|
| 4175 |
}
|
| 4176 |
|