Skip to content

Commit 9ea2bcd

Browse files
committed
synchronize after get tensor from backend
1 parent fd5726c commit 9ea2bcd

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

stable-diffusion.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,11 @@ std::pair<std::unordered_map<std::string, float>, std::string> extract_and_remov
605605
return std::make_pair(filename2multiplier, text);
606606
}
607607

608+
void ggml_backend_tensor_get_and_sync(ggml_backend_t backend, const struct ggml_tensor * tensor, void * data, size_t offset, size_t size) {
609+
ggml_backend_tensor_get(tensor, data, offset, size);
610+
ggml_backend_synchronize(backend);
611+
}
612+
608613
/*================================================== CLIPTokenizer ===================================================*/
609614

610615
const std::string UNK_TOKEN = "<|endoftext|>";
@@ -1410,7 +1415,7 @@ struct CLIPTextModel {
14101415
#ifdef GGML_PERF
14111416
ggml_graph_print(gf);
14121417
#endif
1413-
ggml_backend_tensor_get(gf->nodes[gf->n_nodes - 1], work_output->data, 0, ggml_nbytes(work_output));
1418+
ggml_backend_tensor_get_and_sync(backend, gf->nodes[gf->n_nodes - 1], work_output->data, 0, ggml_nbytes(work_output));
14141419
return work_output;
14151420
}
14161421

@@ -2688,7 +2693,7 @@ struct UNetModel {
26882693
ggml_graph_print(gf);
26892694
#endif
26902695

2691-
ggml_backend_tensor_get(gf->nodes[gf->n_nodes - 1], work_latent->data, 0, ggml_nbytes(work_latent));
2696+
ggml_backend_tensor_get_and_sync(backend, gf->nodes[gf->n_nodes - 1], work_latent->data, 0, ggml_nbytes(work_latent));
26922697
}
26932698

26942699
void end() {
@@ -3499,7 +3504,7 @@ struct AutoEncoderKL {
34993504
ggml_graph_print(gf);
35003505
#endif
35013506

3502-
ggml_backend_tensor_get(gf->nodes[gf->n_nodes - 1], work_result->data, 0, ggml_nbytes(work_result));
3507+
ggml_backend_tensor_get_and_sync(backend, gf->nodes[gf->n_nodes - 1], work_result->data, 0, ggml_nbytes(work_result));
35033508
}
35043509

35053510
void end() {
@@ -4182,7 +4187,7 @@ struct TinyAutoEncoder {
41824187
ggml_graph_print(gf);
41834188
#endif
41844189

4185-
ggml_backend_tensor_get(gf->nodes[gf->n_nodes - 1], work_result->data, 0, ggml_nbytes(work_result));
4190+
ggml_backend_tensor_get_and_sync(backend, gf->nodes[gf->n_nodes - 1], work_result->data, 0, ggml_nbytes(work_result));
41864191
}
41874192

41884193
void end() {
@@ -4705,7 +4710,7 @@ struct ESRGAN {
47054710
ggml_graph_print(gf);
47064711
#endif
47074712
ggml_tensor* out = gf->nodes[gf->n_nodes - 1];
4708-
ggml_backend_tensor_get(out, work_result->data, 0, ggml_nbytes(out));
4713+
ggml_backend_tensor_get_and_sync(backend, out, work_result->data, 0, ggml_nbytes(out));
47094714
}
47104715

47114716
void end() {

0 commit comments

Comments
 (0)