diff options
Diffstat (limited to 'ggml/src')
-rw-r--r-- | ggml/src/ggml.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ggml/src/ggml.c b/ggml/src/ggml.c index 73054bfe..e7f1ae61 100644 --- a/ggml/src/ggml.c +++ b/ggml/src/ggml.c @@ -3581,6 +3581,11 @@ GGML_CALL bool ggml_is_empty(const struct ggml_tensor * tensor) { return false; } +GGML_CALL bool ggml_is_noop(const struct ggml_tensor * tensor) { + return tensor->op == GGML_OP_NONE || tensor->op == GGML_OP_RESHAPE || tensor->op == GGML_OP_VIEW || tensor->op == GGML_OP_PERMUTE || tensor->op == GGML_OP_TRANSPOSE || + ggml_is_empty(tensor) ? true : false; +} + bool ggml_are_same_shape(const struct ggml_tensor * t0, const struct ggml_tensor * t1) { static_assert(GGML_MAX_DIMS == 4, "GGML_MAX_DIMS is not 4 - update this function"); @@ -19208,6 +19213,8 @@ static thread_ret_t ggml_graph_compute_thread(void * data) { for (int node_n = 0; node_n < cgraph->n_nodes; node_n++) { struct ggml_tensor * node = cgraph->nodes[node_n]; + if (ggml_is_noop(node)) continue; + ggml_compute_forward(¶ms, node); if (state->ith == 0 && cplan->abort_callback && cplan->abort_callback(cplan->abort_callback_data)) { |