[[docs:funcstructs:ggml-cpu.c]] == ggml-cpu.c [[docs:funcstructs:ggml-cpu.c:ggml_compute_forward]] === ggml_compute_forward Signature: [.codebit]#`static void ggml_compute_forward(struct ggml_compute_params * params, struct ggml_tensor * tensor)`# Calls a specific computation function depending on the tensor's operation. (ex: [.codebit]#`ggml_compute_forward_add(...)`#, [.codebit]#`ggml_compute_forward_mul(...)`#) [[docs:funcstructs:ggml-cpu.c:ggml_graph_compute_thread]] === ggml_graph_compute_thread Signature: [.codebit]#`static thread_ret_t ggml_graph_compute_thread(void * data)`# Calls [.codebit]#`ggml_compute_forward(...)`# on each node in the [.codebit]#`+((struct ggml_compute_state *)data)->threadpool->cgraph+`#. Also handles thread abortion. [[docs:funcstructs:ggml-cpu.c:ggml_graph_compute]] === ggml_graph_compute Signature: [.codebit]#`enum ggml_status ggml_graph_compute(struct ggml_cgraph * cgraph, struct ggml_cplan * cplan)`# Calls [.codebit]#`ggml_cpu_init()`#, then adjusts [.codebit]#`+cplan->threadpool+`# (of type [.codebit]#`struct ggml_threadpool`#) if needed and uses it to call [.codebit]#`ggml_graph_compute_thread(...)`# for each worker thread.