Commit 250ea6e for stable-diffusion.cpp

commit 250ea6e3857133d8d99c551490a31cdb37182b1e
Author: cumal <43264640+cumal@users.noreply.github.com>
Date:   Mon Nov 2 17:03:43 2026 +0100

    fix: layer split across cuda (#2262)

diff --git a/src/core/layer_split_partition.cpp b/src/core/layer_split_partition.cpp
index e19f47b..6ef2435 100644
--- a/src/core/layer_split_partition.cpp
+++ b/src/core/layer_split_partition.cpp
@@ -206,23 +206,23 @@ namespace sd {
         for (size_t seg_idx = 0; seg_idx < plan.segments.size(); seg_idx++) {
             ggml_backend_t backend = backend_by_segment[seg_idx];
             const auto& segment    = plan.segments[seg_idx];
-            for (int node_index : segment.internal_node_indices) {
+            auto assign_node = [&](int node_index) {
                 if (node_index < 0 || node_index >= n_nodes) {
-                    continue;
+                    return;
                 }
                 ggml_tensor* node = ggml_graph_node(gf, node_index);
-                if (node != nullptr) {
+                if (node == nullptr) {
+                    return;
+                }
+                if (assignment.node_assignments.find(node) == assignment.node_assignments.end()) {
                     assignment.node_assignments[node] = backend;
                 }
+            };
+            for (int node_index : segment.internal_node_indices) {
+                assign_node(node_index);
             }
             for (int node_index : segment.output_node_indices) {
-                if (node_index < 0 || node_index >= n_nodes) {
-                    continue;
-                }
-                ggml_tensor* node = ggml_graph_node(gf, node_index);
-                if (node != nullptr) {
-                    assignment.node_assignments[node] = backend;
-                }
+                assign_node(node_index);
             }
         }