This plugin has been developed to parallelize computationally intensive tasks without modiﬁyng the architecture of SOFA. To exploit the CPU parallelism it uses the task and scheduler design. That is an eﬃcient way to scale the computation to all the CPU cores available on a machine without directly manipulating threads.
This plugin is available in SOFA under the LGPL open-source license and can be activated in the project configuration. To get this plugin working, you need to activate the CMake variable
PLUGIN_MULTITHREADING when configuring SOFA. More details included in the plugin documentation.
Relying on a task scheduler implementation, this plugin provides few SOFA components designed to create tasks that can be executed concurrently. The parallelization is performed at component level when two or more independent components can be executed in parallel or in functions to parallelize a computationally expensive for loop.
The plugin contains the following components: