mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-11-04 09:32:00 +00:00 
			
		
		
		
	whisper : use ggml_backend_sched (whisper/2239)
* whisper : use ggml_backend_sched (wip) * use sched in whisper_allocr * whisper : single backend in whisper_context * whisper : remove whisper_state->backends_used * whisper : remove whisper_context->backend * whisper : reset scheduler after init * whisper : fix external encoder (e.g. CoreML) * whisper : cleanup * whisper : handle null GPU buffer types + fix sycl --------- Co-authored-by: slaren <slarengh@gmail.com>
This commit is contained in:
		@@ -1706,14 +1706,16 @@ static void ggml_backend_sched_split_graph(ggml_backend_sched_t sched, struct gg
 | 
				
			|||||||
static bool ggml_backend_sched_alloc_splits(ggml_backend_sched_t sched) {
 | 
					static bool ggml_backend_sched_alloc_splits(ggml_backend_sched_t sched) {
 | 
				
			||||||
    bool backend_ids_changed = false;
 | 
					    bool backend_ids_changed = false;
 | 
				
			||||||
    for (int i = 0; i < sched->graph->n_nodes; i++) {
 | 
					    for (int i = 0; i < sched->graph->n_nodes; i++) {
 | 
				
			||||||
        if (sched->node_backend_ids[i] != sched->prev_node_backend_ids[i]) {
 | 
					        if (sched->node_backend_ids[i] != sched->prev_node_backend_ids[i] &&
 | 
				
			||||||
 | 
					            sched->bufts[sched->node_backend_ids[i]] != sched->bufts[sched->prev_node_backend_ids[i]]) {
 | 
				
			||||||
            backend_ids_changed = true;
 | 
					            backend_ids_changed = true;
 | 
				
			||||||
            break;
 | 
					            break;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (!backend_ids_changed) {
 | 
					    if (!backend_ids_changed) {
 | 
				
			||||||
        for (int i = 0; i < sched->graph->n_leafs; i++) {
 | 
					        for (int i = 0; i < sched->graph->n_leafs; i++) {
 | 
				
			||||||
            if (sched->leaf_backend_ids[i] != sched->prev_leaf_backend_ids[i]) {
 | 
					            if (sched->leaf_backend_ids[i] != sched->prev_leaf_backend_ids[i] &&
 | 
				
			||||||
 | 
					                sched->bufts[sched->leaf_backend_ids[i]] != sched->bufts[sched->prev_leaf_backend_ids[i]]) {
 | 
				
			||||||
                backend_ids_changed = true;
 | 
					                backend_ids_changed = true;
 | 
				
			||||||
                break;
 | 
					                break;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -1977,6 +1979,15 @@ int ggml_backend_sched_get_n_copies(ggml_backend_sched_t sched) {
 | 
				
			|||||||
    return sched->n_copies;
 | 
					    return sched->n_copies;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int ggml_backend_sched_get_n_backends(ggml_backend_sched_t sched) {
 | 
				
			||||||
 | 
					    return sched->n_backends;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ggml_backend_t ggml_backend_sched_get_backend(ggml_backend_sched_t sched, int i) {
 | 
				
			||||||
 | 
					    GGML_ASSERT(i >= 0 && i < sched->n_backends);
 | 
				
			||||||
 | 
					    return sched->backends[i];
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
size_t ggml_backend_sched_get_buffer_size(ggml_backend_sched_t sched, ggml_backend_t backend) {
 | 
					size_t ggml_backend_sched_get_buffer_size(ggml_backend_sched_t sched, ggml_backend_t backend) {
 | 
				
			||||||
    int backend_index = ggml_backend_sched_backend_id(sched, backend);
 | 
					    int backend_index = ggml_backend_sched_backend_id(sched, backend);
 | 
				
			||||||
    GGML_ASSERT(backend_index >= 0 && backend_index < sched->n_backends);
 | 
					    GGML_ASSERT(backend_index >= 0 && backend_index < sched->n_backends);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -182,6 +182,9 @@ extern "C" {
 | 
				
			|||||||
    // Initialize backend buffers from a measure graph
 | 
					    // Initialize backend buffers from a measure graph
 | 
				
			||||||
    GGML_API bool                 ggml_backend_sched_reserve(ggml_backend_sched_t sched, struct ggml_cgraph * measure_graph);
 | 
					    GGML_API bool                 ggml_backend_sched_reserve(ggml_backend_sched_t sched, struct ggml_cgraph * measure_graph);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    GGML_API int                  ggml_backend_sched_get_n_backends(ggml_backend_sched_t sched);
 | 
				
			||||||
 | 
					    GGML_API ggml_backend_t       ggml_backend_sched_get_backend(ggml_backend_sched_t sched, int i);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Get the number of splits of the last graph
 | 
					    // Get the number of splits of the last graph
 | 
				
			||||||
    GGML_API int                  ggml_backend_sched_get_n_splits(ggml_backend_sched_t sched);
 | 
					    GGML_API int                  ggml_backend_sched_get_n_splits(ggml_backend_sched_t sched);
 | 
				
			||||||
    GGML_API int                  ggml_backend_sched_get_n_copies(ggml_backend_sched_t sched);
 | 
					    GGML_API int                  ggml_backend_sched_get_n_copies(ggml_backend_sched_t sched);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user