sched yield fix again

This commit is contained in:
Concedo 2023-09-23 10:44:41 +08:00
parent 1f9e36c733
commit a64d182b8b

14
ggml.c
View file

@ -17290,18 +17290,14 @@ static thread_ret_t ggml_graph_compute_thread(void * data) {
} else {
// wait for other threads to finish
const int last = node_n;
while (true) {
// TODO: this sched_yield can have significant impact on the performance - either positive or negative
// depending on the workload and the operating system.
// since it is not clear what is the best approach, it should potentially become user-configurable
// ref: https://github.com/ggerganov/ggml/issues/291
#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_OPENBLAS)
do {
#if defined(GGML_USE_ACCELERATE) || defined(GGML_USE_METAL)
//apple does nothing
#else
sched_yield();
#endif
node_n = atomic_load(&state->shared->node_n);
if (node_n != last) break;
};
} while (node_n == last);
}
// check if we should stop