mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	ggml-backend : only offload from host buffers (fix) (#11124)
This commit is contained in:
		| @@ -761,10 +761,10 @@ static int ggml_backend_sched_backend_id_from_cur(ggml_backend_sched_t sched, st | |||||||
|         } |         } | ||||||
|         // skip ROPE since the rope freqs tensor is too small to choose a backend based on it |         // skip ROPE since the rope freqs tensor is too small to choose a backend based on it | ||||||
|         // not an ideal solution |         // not an ideal solution | ||||||
|         if (tensor->op != GGML_OP_ROPE && src->buffer != NULL && src->buffer->usage == GGML_BACKEND_BUFFER_USAGE_WEIGHTS && ggml_backend_buffer_is_host(src->buffer)) { |         if (tensor->op != GGML_OP_ROPE && src->buffer != NULL && src->buffer->usage == GGML_BACKEND_BUFFER_USAGE_WEIGHTS) { | ||||||
|             int src_backend_id = ggml_backend_sched_backend_from_buffer(sched, src, tensor); |             int src_backend_id = ggml_backend_sched_backend_from_buffer(sched, src, tensor); | ||||||
|             // check if a backend with higher prio wants to offload the op |             // check if a backend with higher prio wants to offload the op | ||||||
|             if (src_backend_id == sched->n_backends - 1) { |             if (src_backend_id == sched->n_backends - 1 && ggml_backend_buffer_is_host(src->buffer)) { | ||||||
|                 for (int b = 0; b < src_backend_id; b++) { |                 for (int b = 0; b < src_backend_id; b++) { | ||||||
|                     if (ggml_backend_supports_op(sched->backends[b], tensor) && ggml_backend_offload_op(sched->backends[b], tensor)) { |                     if (ggml_backend_supports_op(sched->backends[b], tensor) && ggml_backend_offload_op(sched->backends[b], tensor)) { | ||||||
|                         SET_CAUSE(tensor, "1.off"); |                         SET_CAUSE(tensor, "1.off"); | ||||||
|   | |||||||
| @@ -4169,6 +4169,8 @@ static ggml_backend_buffer_t ggml_backend_cpu_aarch64_buffer_type_alloc_buffer(g | |||||||
|     buffer->buft              = buft; |     buffer->buft              = buft; | ||||||
|     buffer->iface.init_tensor = ggml_backend_cpu_aarch64_buffer_init_tensor; |     buffer->iface.init_tensor = ggml_backend_cpu_aarch64_buffer_init_tensor; | ||||||
|     buffer->iface.set_tensor  = ggml_backend_cpu_aarch64_buffer_set_tensor; |     buffer->iface.set_tensor  = ggml_backend_cpu_aarch64_buffer_set_tensor; | ||||||
|  |     buffer->iface.get_tensor  = nullptr; | ||||||
|  |     buffer->iface.cpy_tensor  = nullptr; | ||||||
|     return buffer; |     return buffer; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Diego Devesa
					Diego Devesa