@@ -1706,14 +1706,16 @@ static void ggml_backend_sched_split_graph(ggml_backend_sched_t sched, struct gg
17061706static 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+
19801991size_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 );
0 commit comments