1#ifndef TOOL_THREADING_H
2#define TOOL_THREADING_H
17template <
typename T_task,
typename T_out>
27 const T_task tlen = ntask / nworker;
28 const T_task trem = ntask - tlen * nworker;
31 start = tlen * iworker + iworker;
36 start = tlen * iworker + trem;
42template <
typename T_task,
typename T_out>
52 const T_task nblock = (ntask + block_size - 1) / block_size;
53 const T_task blen = nblock / nworker;
54 const T_task brem = nblock - blen * nworker;
57 start = blen * iworker + iworker;
62 start = blen * iworker + brem;
73 if (
start + len > ntask)
85 f(omp_get_num_threads(), omp_get_thread_num());
95 if (!omp_in_parallel())
Definition array_pool.h:6
void BLOCK_TASK_DIST_1D(int nworker, int iworker, T_task ntask, T_task block_size, T_out &start, T_out &len)
Definition tool_threading.h:43
void TASK_DIST_1D(int nworker, int iworker, T_task ntask, T_out &start, T_out &len)
Definition tool_threading.h:18
void TRY_OMP_PARALLEL(const std::function< void(int, int)> &f)
Definition tool_threading.h:92
void OMP_PARALLEL(const std::function< void(int, int)> &f)
Definition tool_threading.h:80
iclock::time_point start
Definition test_partition.cpp:22