32#ifndef CK_THREADPOOL_H
33#define CK_THREADPOOL_H
48#define CK_THREADPOOL_MAX_THREADS 64
51#define CK_THREADPOOL_SPIN_COUNT 1024
54#define CK_CACHE_LINE 64
76typedef struct ck_threadpool ck_threadpool_t;
132 int capacity_threads);
void ck_threadpool_pause(ck_threadpool_t *pool)
int ck_threadpool_capacity(const ck_threadpool_t *pool)
void ck_threadpool_parallel_for_n(ck_threadpool_t *pool, int active_threads, int begin, int end, int grain_size, ck_range_fn_t fn, void *args)
void ck_threadpool_profile_reset(ck_threadpool_t *pool)
void ck_threadpool_resume(ck_threadpool_t *pool)
@ CK_GEMM_SCHEDULE_STATIC
@ CK_GEMM_SCHEDULE_DYNAMIC
int ck_set_gemm_schedule(int policy)
void ck_threadpool_dispatch_n(ck_threadpool_t *pool, int active_threads, ck_work_fn_t fn, void *args)
ck_threadpool_t * ck_threadpool_global(void)
void ck_threadpool_global_destroy(void)
void ck_threadpool_destroy(ck_threadpool_t *pool)
void ck_threadpool_barrier(ck_threadpool_t *pool)
void ck_threadpool_profile_snapshot(const ck_threadpool_t *pool, ck_threadpool_profile_t *profile)
void(* ck_range_fn_t)(int begin, int end, void *args)
ck_threadpool_t * ck_threadpool_create(int n_threads)
ck_threadpool_t * ck_threadpool_create_capacity(int default_threads, int capacity_threads)
int ck_gemm_dynamic_schedule_enabled(void)
void(* ck_work_fn_t)(int ith, int nth, void *args)
void ck_threadpool_dispatch(ck_threadpool_t *pool, ck_work_fn_t fn, void *args)
int ck_threadpool_bounded_capacity(int default_threads, int logical_threads)
int ck_threadpool_thread_id(const ck_threadpool_t *pool)
int ck_get_gemm_schedule(void)
int ck_threadpool_n_threads(const ck_threadpool_t *pool)
uint64_t completion_wait_ns
uint64_t dispatch_total_ns