[Bf-blender-cvs] [50f1c9a8afe] master: Task scheduler: Start with suspended pool to avoid threading overhead on push

Sergey Sharybin noreply at git.blender.org
Fri Dec 22 17:35:33 CET 2017


Commit: 50f1c9a8afeffc81580bc12a19d8ffd01c3a9e6f
Author: Sergey Sharybin
Date:   Fri Dec 22 12:25:11 2017 +0100
Branches: master
https://developer.blender.org/rB50f1c9a8afeffc81580bc12a19d8ffd01c3a9e6f

Task scheduler: Start with suspended pool to avoid threading overhead on push

The idea is to avoid any threading overhead when we start pushing tasks in a
loop. Similarly to how we do it from the new dependency graph. Gives couple of
percent of speedup here, but also improves scalability.

===================================================================

M	source/blender/blenlib/intern/task.c

===================================================================

diff --git a/source/blender/blenlib/intern/task.c b/source/blender/blenlib/intern/task.c
index eb7f186702b..311be1dd151 100644
--- a/source/blender/blenlib/intern/task.c
+++ b/source/blender/blenlib/intern/task.c
@@ -1101,7 +1101,7 @@ static void task_parallel_range_ex(
 	}
 
 	task_scheduler = BLI_task_scheduler_get();
-	task_pool = BLI_task_pool_create(task_scheduler, &state);
+	task_pool = BLI_task_pool_create_suspended(task_scheduler, &state);
 	num_threads = BLI_task_scheduler_num_threads(task_scheduler);
 
 	/* The idea here is to prevent creating task for each of the loop iterations
@@ -1325,7 +1325,7 @@ void BLI_task_parallel_listbase(
 	}
 
 	task_scheduler = BLI_task_scheduler_get();
-	task_pool = BLI_task_pool_create(task_scheduler, &state);
+	task_pool = BLI_task_pool_create_suspended(task_scheduler, &state);
 	num_threads = BLI_task_scheduler_num_threads(task_scheduler);
 
 	/* The idea here is to prevent creating task for each of the loop iterations
@@ -1413,7 +1413,7 @@ void BLI_task_parallel_mempool(
 	}
 
 	task_scheduler = BLI_task_scheduler_get();
-	task_pool = BLI_task_pool_create(task_scheduler, &state);
+	task_pool = BLI_task_pool_create_suspended(task_scheduler, &state);
 	num_threads = BLI_task_scheduler_num_threads(task_scheduler);
 
 	/* The idea here is to prevent creating task for each of the loop iterations



More information about the Bf-blender-cvs mailing list