[Bf-blender-cvs] [3ecb692b433] functions: fix task scheduling
Jacques Lucke
noreply at git.blender.org
Fri Nov 15 16:04:11 CET 2019
Commit: 3ecb692b4336cf6f3ca5fae1afdc9d8af3833500
Author: Jacques Lucke
Date: Fri Nov 15 16:03:19 2019 +0100
Branches: functions
https://developer.blender.org/rB3ecb692b4336cf6f3ca5fae1afdc9d8af3833500
fix task scheduling
===================================================================
M source/blender/blenlib/BLI_task_cxx.h
M source/blender/simulations/bparticles/simulate.cpp
===================================================================
diff --git a/source/blender/blenlib/BLI_task_cxx.h b/source/blender/blenlib/BLI_task_cxx.h
index 045df2ebdda..d224390c21f 100644
--- a/source/blender/blenlib/BLI_task_cxx.h
+++ b/source/blender/blenlib/BLI_task_cxx.h
@@ -41,6 +41,7 @@ namespace Task {
template<typename T, typename ProcessElement>
static void parallel_array_elements(ArrayRef<T> array,
ProcessElement process_element,
+ int min_iterations_per_thread,
bool use_threading = true)
{
if (!use_threading) {
@@ -52,24 +53,26 @@ static void parallel_array_elements(ArrayRef<T> array,
TaskParallelSettings settings = {0};
BLI_parallel_range_settings_defaults(&settings);
- settings.scheduling_mode = TASK_SCHEDULING_DYNAMIC;
+ settings.scheduling_mode = TASK_SCHEDULING_STATIC;
+ settings.min_iter_per_thread = min_iterations_per_thread;
struct ParallelData {
ArrayRef<T> array;
ProcessElement &process_element;
} data = {array, process_element};
- BLI_task_parallel_range(0,
- array.size(),
- (void *)&data,
- [](void *__restrict userdata,
- const int index,
- const TaskParallelTLS *__restrict UNUSED(tls)) {
- ParallelData &data = *(ParallelData *)userdata;
- const T &element = data.array[index];
- data.process_element(element);
- },
- &settings);
+ BLI_task_parallel_range(
+ 0,
+ array.size(),
+ (void *)&data,
+ [](void *__restrict userdata,
+ const int index,
+ const TaskParallelTLS *__restrict UNUSED(tls)) {
+ ParallelData &data = *(ParallelData *)userdata;
+ const T &element = data.array[index];
+ data.process_element(element);
+ },
+ &settings);
}
template<typename ProcessRange>
@@ -91,17 +94,18 @@ static void parallel_range(IndexRange total_range,
ProcessRange &process_range;
} data = {ChunkedIndexRange(total_range, chunk_size), process_range};
- BLI_task_parallel_range(0,
- data.chunks.chunks(),
- (void *)&data,
- [](void *__restrict userdata,
- const int index,
- const TaskParallelTLS *__restrict UNUSED(tls)) {
- ParallelData &data = *(ParallelData *)userdata;
- IndexRange range = data.chunks.chunk_range(index);
- data.process_range(range);
- },
- &settings);
+ BLI_task_parallel_range(
+ 0,
+ data.chunks.chunks(),
+ (void *)&data,
+ [](void *__restrict userdata,
+ const int index,
+ const TaskParallelTLS *__restrict UNUSED(tls)) {
+ ParallelData &data = *(ParallelData *)userdata;
+ IndexRange range = data.chunks.chunk_range(index);
+ data.process_range(range);
+ },
+ &settings);
}
} // namespace Task
diff --git a/source/blender/simulations/bparticles/simulate.cpp b/source/blender/simulations/bparticles/simulate.cpp
index d4515255a6f..85ceb9591d5 100644
--- a/source/blender/simulations/bparticles/simulate.cpp
+++ b/source/blender/simulations/bparticles/simulate.cpp
@@ -401,6 +401,7 @@ BLI_NOINLINE static void simulate_blocks_for_time_span(
delete_tagged_particles_and_reorder(*block);
},
+ 1,
USE_THREADING);
}
@@ -434,6 +435,7 @@ BLI_NOINLINE static void simulate_blocks_from_birth_to_current_time(
delete_tagged_particles_and_reorder(*block);
},
+ 1,
USE_THREADING);
}
More information about the Bf-blender-cvs
mailing list