Skip to content
Snippets Groups Projects
Commit 1b555c0e authored by Pedro Gonnet's avatar Pedro Gonnet
Browse files

Use a named value `threadpool_auto_chunk_size` instead of just passing zero to `threadpool_map`.

parent 2b948447
Branches
Tags
1 merge request!1018Threadpool auto chunk size
...@@ -252,7 +252,7 @@ void threadpool_init(struct threadpool *tp, int num_threads) { ...@@ -252,7 +252,7 @@ void threadpool_init(struct threadpool *tp, int num_threads) {
* @param N Number of elements in @c map_data. * @param N Number of elements in @c map_data.
* @param stride Size, in bytes, of each element of @c map_data. * @param stride Size, in bytes, of each element of @c map_data.
* @param chunk Number of map data elements to pass to the function at a time, * @param chunk Number of map data elements to pass to the function at a time,
* or zero to choose the number automatically. * or #threadpool_auto_chunk_size to choose the number automatically.
* @param extra_data Addtitional pointer that will be passed to the mapping * @param extra_data Addtitional pointer that will be passed to the mapping
* function, may contain additional data. * function, may contain additional data.
*/ */
...@@ -278,10 +278,8 @@ void threadpool_map(struct threadpool *tp, threadpool_map_function map_function, ...@@ -278,10 +278,8 @@ void threadpool_map(struct threadpool *tp, threadpool_map_function map_function,
tp->map_data_stride = stride; tp->map_data_stride = stride;
tp->map_data_size = N; tp->map_data_size = N;
tp->map_data_count = 0; tp->map_data_count = 0;
tp->map_data_chunk = tp->map_data_chunk = (chunk == threadpool_auto_chunk_size) ?
chunk ? chunk max((int)(N / (tp->num_threads * threadpool_default_chunk_ratio)), 1) : chunk;
: max((int)(N / (tp->num_threads * threadpool_default_chunk_ratio)),
1);
tp->map_function = map_function; tp->map_function = map_function;
tp->map_data = map_data; tp->map_data = map_data;
tp->map_extra_data = extra_data; tp->map_extra_data = extra_data;
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
/* Local defines. */ /* Local defines. */
#define threadpool_log_initial_size 1000 #define threadpool_log_initial_size 1000
#define threadpool_default_chunk_ratio 7 #define threadpool_default_chunk_ratio 7
#define threadpool_auto_chunk_size 0
/* Function type for mappings. */ /* Function type for mappings. */
typedef void (*threadpool_map_function)(void *map_data, int num_elements, typedef void (*threadpool_map_function)(void *map_data, int num_elements,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment