Skip to content

Commit e6ecc2b

Browse files
ggerganovslaren
andcommitted
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 <[email protected]>
1 parent a94e6ff commit e6ecc2b

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

ggml-backend.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1706,14 +1706,16 @@ static void ggml_backend_sched_split_graph(ggml_backend_sched_t sched, struct gg
17061706
static bool ggml_backend_sched_alloc_splits(ggml_backend_sched_t sched) {
17071707
bool backend_ids_changed = false;
17081708
for (int i = 0; i < sched->graph->n_nodes; i++) {
1709-
if (sched->node_backend_ids[i] != sched->prev_node_backend_ids[i]) {
1709+
if (sched->node_backend_ids[i] != sched->prev_node_backend_ids[i] &&
1710+
sched->bufts[sched->node_backend_ids[i]] != sched->bufts[sched->prev_node_backend_ids[i]]) {
17101711
backend_ids_changed = true;
17111712
break;
17121713
}
17131714
}
17141715
if (!backend_ids_changed) {
17151716
for (int i = 0; i < sched->graph->n_leafs; i++) {
1716-
if (sched->leaf_backend_ids[i] != sched->prev_leaf_backend_ids[i]) {
1717+
if (sched->leaf_backend_ids[i] != sched->prev_leaf_backend_ids[i] &&
1718+
sched->bufts[sched->leaf_backend_ids[i]] != sched->bufts[sched->prev_leaf_backend_ids[i]]) {
17171719
backend_ids_changed = true;
17181720
break;
17191721
}
@@ -1977,6 +1979,15 @@ int ggml_backend_sched_get_n_copies(ggml_backend_sched_t sched) {
19771979
return sched->n_copies;
19781980
}
19791981

1982+
int ggml_backend_sched_get_n_backends(ggml_backend_sched_t sched) {
1983+
return sched->n_backends;
1984+
}
1985+
1986+
ggml_backend_t ggml_backend_sched_get_backend(ggml_backend_sched_t sched, int i) {
1987+
GGML_ASSERT(i >= 0 && i < sched->n_backends);
1988+
return sched->backends[i];
1989+
}
1990+
19801991
size_t ggml_backend_sched_get_buffer_size(ggml_backend_sched_t sched, ggml_backend_t backend) {
19811992
int backend_index = ggml_backend_sched_backend_id(sched, backend);
19821993
GGML_ASSERT(backend_index >= 0 && backend_index < sched->n_backends);

ggml-backend.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ extern "C" {
182182
// Initialize backend buffers from a measure graph
183183
GGML_API bool ggml_backend_sched_reserve(ggml_backend_sched_t sched, struct ggml_cgraph * measure_graph);
184184

185+
GGML_API int ggml_backend_sched_get_n_backends(ggml_backend_sched_t sched);
186+
GGML_API ggml_backend_t ggml_backend_sched_get_backend(ggml_backend_sched_t sched, int i);
187+
185188
// Get the number of splits of the last graph
186189
GGML_API int ggml_backend_sched_get_n_splits(ggml_backend_sched_t sched);
187190
GGML_API int ggml_backend_sched_get_n_copies(ggml_backend_sched_t sched);

0 commit comments

Comments
 (0)