On 30 Nov 2008, at 18:15, Florian Klaempfl wrote:

Mattias Gaertner schrieb:
I need a default value of the number of maximum threads.
Is there already some RTL function that can be used for that?

For example if the program runs on a 2 x quad core it would be nice to
get 8.
Hyperthreading multipliers should be applied.

If we implement something like this, I propose we do it properly. There
are different numbers important:
- numa nodes
- physical cpus
- cache sharing cores
- logical/execution unit sharing cores

- Completely different kinds of cores, e.g., on the Cell you have a "hyper-threaded" ppc64 and 6 to 8 available SPU vector processors. - And then there's stuff like CUDA (and its Open* variant) coming up, of course.

Which one are considered important?

I personally don't think it's possible to generally deal with this at the application level, there's too much variety and complexity. It's also only going to get worse in the future, as reconfigurable computing is a very hot topic. And so are heterogenous multicores, and not just the Cell way; e.g. different cores implementing the same ISA, but with different pipeline and functional unit designs so they are all better suited at different kinds of tasks/threads (and simulations indicate that such designs give much better overall power/performance than the current crop of homogeneous multi-core desktop & server cpus if you use some fairly simple performance counter based heuristics in your scheduler).


Jonas
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to