[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55938] trunk/blender: Add a gui control for setting omp threads in fluids

Jens Verwiebe info at jensverwiebe.de
Wed Apr 10 23:04:17 CEST 2013


Hi Brecht

You misunderstood me.
For all other cases than fluid autogetting the omp threads seems viable.
But in fluids i have "rich" scenes, where i can saturate my 12 cores, where
on the other hand simple scenes work better with 2 to 4 threads.
Thats why i finally want to have the chance to set the threads case dependant.

Btw: in sculpt the optimal setting seems to be the cpu count used as thread count, so thats g´hardcoded there.

In fluids 4 threads is a well tested good starting point.

So the question is just to sort this all out.

My proposal/thoughs atm.: let fluid as is now but restore the omp_threads to the beginning point, which
is afaik get all available threads from machine.

Btw: using HT threads is also in question with omp,  so the best choice could be rather physical
core count than logical core count.

But definitely fluids need a tweakable threading in one way or other.

Jens

Am 10.04.2013 um 21:52 schrieb Jens Verwiebe <info at jensverwiebe.de>:

> Hi Brecht, aware of this, but:
> 
>> * There should be an "automatic" setting and it should be the default.
> 
> Thats what is to avoided, cause fluid sometimes work better with reduced threads or max threads to get, scenedependant.
> 
>> * Calling omp_set_num_threads this way will affect all parts of
>> Blender that use OpenMP after running the fluid simulation, as the
>> original state is not restored.
> 
> Aware of this, i think just about it
> BTW:: i found same in sculpt, this should be taken care too i guess.( or is it reset there ? )
> 
>> * omp_set_num_threads should have an #ifdef arround it so compiling
>> without OpenMP works
> 
> Right, i forgot this, sorry
> 
> Jens
> 
> 
> 
> 
> 
> Am 10.04.2013 um 21:38 schrieb Brecht Van Lommel <brechtvanlommel at pandora.be>:
> 
>> Hi Jens,
>> 
>> I think some changes should be made to this implementation:
>> 
>> * I don't think there should be a threads settings per fluid system.
>> The user preferences seem a better place for this? People will forget
>> to set this to optimal settings each time.
>> * There should be an "automatic" setting and it should be the default.
>> * omp_set_num_threads should have an #ifdef arround it so compiling
>> without OpenMP works
>> * Calling omp_set_num_threads this way will affect all parts of
>> Blender that use OpenMP after running the fluid simulation, as the
>> original state is not restored.
>> 
>> Thanks,
>> Brecht.
>> 
>> On Wed, Apr 10, 2013 at 8:35 PM, jens verwiebe <info at jensverwiebe.de> wrote:
>>> Revision: 55938
>>>         http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55938
>>> Author:   jensverwiebe
>>> Date:     2013-04-10 18:35:18 +0000 (Wed, 10 Apr 2013)
>>> Log Message:
>>> -----------
>>> Add a gui control for setting omp threads in fluids
>>> 
>>> Modified Paths:
>>> --------------
>>>   trunk/blender/intern/elbeem/extern/elbeem.h
>>>   trunk/blender/intern/elbeem/intern/simulation_object.cpp
>>>   trunk/blender/release/scripts/startup/bl_ui/properties_physics_fluid.py
>>>   trunk/blender/source/blender/editors/physics/physics_fluid.c
>>>   trunk/blender/source/blender/makesdna/DNA_object_fluidsim.h
>>>   trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c
>>>   trunk/blender/source/blender/modifiers/intern/MOD_fluidsim_util.c
>>> 
>>> Modified: trunk/blender/intern/elbeem/extern/elbeem.h
>>> ===================================================================
>>> --- trunk/blender/intern/elbeem/extern/elbeem.h 2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/intern/elbeem/extern/elbeem.h 2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -99,6 +99,8 @@
>>>       elbeemRunSimulationCallback runsimCallback;
>>>       /* pointer passed to runsimCallback for user data storage */
>>>       void* runsimUserData;
>>> +       /* simulation threads used by omp */
>>> +       int threads;
>>> 
>>> } elbeemSimulationSettings;
>>> 
>>> 
>>> Modified: trunk/blender/intern/elbeem/intern/simulation_object.cpp
>>> ===================================================================
>>> --- trunk/blender/intern/elbeem/intern/simulation_object.cpp    2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/intern/elbeem/intern/simulation_object.cpp    2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -19,6 +19,10 @@
>>> #include "particletracer.h"
>>> #include "elbeem.h"
>>> 
>>> +#if PARALLEL==1
>>> +#include <omp.h>
>>> +#endif
>>> +
>>> #ifdef _WIN32
>>> #else
>>> #include <sys/time.h>
>>> @@ -173,6 +177,7 @@
>>>               mpLbm->initDomainTrafo( mpElbeemSettings->surfaceTrafo );
>>>               mpLbm->setSmoothing(1.0 * mpElbeemSettings->surfaceSmoothing, 1.0 * mpElbeemSettings->surfaceSmoothing);
>>>               mpLbm->setIsoSubdivs(mpElbeemSettings->surfaceSubdivs);
>>> +               omp_set_num_threads(mpElbeemSettings->threads);
>>>               mpLbm->setSizeX(mpElbeemSettings->resolutionxyz);
>>>               mpLbm->setSizeY(mpElbeemSettings->resolutionxyz);
>>>               mpLbm->setSizeZ(mpElbeemSettings->resolutionxyz);
>>> 
>>> Modified: trunk/blender/release/scripts/startup/bl_ui/properties_physics_fluid.py
>>> ===================================================================
>>> --- trunk/blender/release/scripts/startup/bl_ui/properties_physics_fluid.py     2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/release/scripts/startup/bl_ui/properties_physics_fluid.py     2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -67,6 +67,7 @@
>>>            # odd formatting here so translation script can extract string
>>>            layout.operator("fluid.bake", text=iface_("Bake (Req. Memory: %s)") % fluid.memory_estimate,
>>>                            translate=False, icon='MOD_FLUIDSIM')
>>> +            layout.prop(fluid, "threads", text="Simulation Threads")
>>>            split = layout.split()
>>> 
>>>            col = split.column()
>>> 
>>> Modified: trunk/blender/source/blender/editors/physics/physics_fluid.c
>>> ===================================================================
>>> --- trunk/blender/source/blender/editors/physics/physics_fluid.c        2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/source/blender/editors/physics/physics_fluid.c        2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -994,7 +994,7 @@
>>>       /* ******** export domain to elbeem ******** */
>>>       elbeemResetSettings(fsset);
>>>       fsset->version = 1;
>>> -
>>> +       fsset->threads = domainSettings->threads;
>>>       // setup global settings
>>>       copy_v3_v3(fsset->geoStart, domainSettings->bbStart);
>>>       copy_v3_v3(fsset->geoSize, domainSettings->bbSize);
>>> 
>>> Modified: trunk/blender/source/blender/makesdna/DNA_object_fluidsim.h
>>> ===================================================================
>>> --- trunk/blender/source/blender/makesdna/DNA_object_fluidsim.h 2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/source/blender/makesdna/DNA_object_fluidsim.h 2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -48,6 +48,9 @@
>>> 
>>> typedef struct FluidsimSettings {
>>>       struct FluidsimModifierData *fmd; /* for fast RNA access */
>>> +       /* threadcont the calculation is done with */
>>> +       int threads;
>>> +       int pad1;
>>>       /* domain, fluid or obstacle */
>>>       short type;
>>>       /* display advanced options in fluid sim tab (on=1, off=0)*/
>>> @@ -75,7 +78,7 @@
>>>       int bakeStart, bakeEnd;
>>>       /* offset for baked frames */
>>>       int frameOffset;
>>> -       int pad;
>>> +       int pad2;
>>>       /* g star param (LBM compressibility) */
>>>       float gstar;
>>>       /* activate refinement? */
>>> 
>>> Modified: trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c
>>> ===================================================================
>>> --- trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c 2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/source/blender/makesrna/intern/rna_fluidsim.c 2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -280,6 +280,11 @@
>>> 
>>>       /* standard settings */
>>> 
>>> +       prop = RNA_def_property(srna, "threads", PROP_INT, PROP_NONE);
>>> +       RNA_def_property_int_sdna(prop, NULL, "threads");
>>> +       RNA_def_property_range(prop, 1, 32);
>>> +       RNA_def_property_ui_text(prop, "Simulation Threads", "Threads used to calculate the simulation");
>>> +
>>>       prop = RNA_def_property(srna, "resolution", PROP_INT, PROP_NONE);
>>>       RNA_def_property_int_sdna(prop, NULL, "resolutionxyz");
>>>       RNA_def_property_range(prop, 1, 1024);
>>> 
>>> Modified: trunk/blender/source/blender/modifiers/intern/MOD_fluidsim_util.c
>>> ===================================================================
>>> --- trunk/blender/source/blender/modifiers/intern/MOD_fluidsim_util.c   2013-04-10 16:59:55 UTC (rev 55937)
>>> +++ trunk/blender/source/blender/modifiers/intern/MOD_fluidsim_util.c   2013-04-10 18:35:18 UTC (rev 55938)
>>> @@ -75,6 +75,7 @@
>>> 
>>>               fss->fmd = fluidmd;
>>>               fss->type = OB_FLUIDSIM_ENABLE;
>>> +               fss->threads = 4;
>>>               fss->show_advancedoptions = 0;
>>> 
>>>               fss->resolutionxyz = 65;
>>> 
>>> _______________________________________________
>>> Bf-blender-cvs mailing list
>>> Bf-blender-cvs at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
> 
> _____________________________________
> 
> Jens Verwiebe
> Allerskehre 44  -  22309 Hamburg
> 
> Tel.: +49 40 68 78 50
> mobil: +49 172 400 49 07
> mailto: info at jensverwiebe.de
> web:  http://www.jensverwiebe.de
> _____________________________________
> 
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers

_____________________________________

Jens Verwiebe
Allerskehre 44  -  22309 Hamburg

Tel.: +49 40 68 78 50
mobil: +49 172 400 49 07
mailto: info at jensverwiebe.de
web:  http://www.jensverwiebe.de
_____________________________________



More information about the Bf-committers mailing list