@@ -1706,14 +1706,16 @@ static void ggml_backend_sched_split_graph(ggml_backend_sched_t sched, struct gg
1706
1706
static bool ggml_backend_sched_alloc_splits (ggml_backend_sched_t sched ) {
1707
1707
bool backend_ids_changed = false;
1708
1708
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 ]]) {
1710
1711
backend_ids_changed = true;
1711
1712
break ;
1712
1713
}
1713
1714
}
1714
1715
if (!backend_ids_changed ) {
1715
1716
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 ]]) {
1717
1719
backend_ids_changed = true;
1718
1720
break ;
1719
1721
}
@@ -1977,6 +1979,15 @@ int ggml_backend_sched_get_n_copies(ggml_backend_sched_t sched) {
1977
1979
return sched -> n_copies ;
1978
1980
}
1979
1981
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
+
1980
1991
size_t ggml_backend_sched_get_buffer_size (ggml_backend_sched_t sched , ggml_backend_t backend ) {
1981
1992
int backend_index = ggml_backend_sched_backend_id (sched , backend );
1982
1993
GGML_ASSERT (backend_index >= 0 && backend_index < sched -> n_backends );
0 commit comments