Yes, I know what you mean.
I am not that good in explaining, so I will first try a little metaphor ;) and then tell in which cases it is good to use multithreading with emFluid2 and emRenderPointCloud.
So let's just say that a thread is a worker. A singlethreaded task would mean we have one worker doing a certain job. A multithreaded task would mean we have several workers working on a same job. As we all know out of experience, some jobs are done more quickly alone, some others more quickly in a team of two, whereas certain jobs might require a team of dozens of workers to be done in an acceptable time.
Furthermore there are several important things to consider:
1) it takes time and energy to organize and control a large number of workers.
2) there might be resources that need to be shared/accessed by the workers in order for them to be able to do their job.
3) there might exist dependencies between different workers' jobs, meaning that certain workers can only do their job when other workers are done with theirs.
So when using too many workers for a job it can happen that:
1) more time is spent organizing everything than actually doing the job.
2) many workers want to access the same resource at the same time, which results in "long waiting lines".
3) workers just sit around doing nothing because they are waiting for another guy to be done.
So how about emFluid2 / emRenderPointCloud and multithreading?
- emFluid2: if you have a "normal" fluid box with a "normal" cell size then there won't be any noticeable performance boost in multithreaded mode.
- emFluid2: if you have a large fluid box and/or a small cell size then the multithreaded version will be faster than the singlethreaded one.
- emRenderPointCloud: when there is much to render (-> many particles and/or large particles) the multithreaded version is way faster than the singlethreaded one.
- I developed and tested the multithreaded versions of both plug-ins on a laptop with a Core 2 Duo, on a normal computer with a Core 2 Quad and on a workstation with an i7.
Some of my experiences with multithreading (emFluid2/emRenderPointCloud):
- Linux' multithreading is faster than Windows' multithreading (on the same machine).
- the new Pentium i7 is much better with multithreading than the Core 2 Duo/Quad processors.
- using too many threads results in longer simulation or render times.
Hope that was of some help!
cheers,
Eric