[fpc-pascal] number of cpu cores
nc-gaertnma at netcologne.de
Sat Dec 13 17:17:31 CET 2008
On Sat, 29 Nov 2008 19:14:39 +0100 (CET)
marcov at stack.nl (Marco van de Voort) wrote:
> In our previous episode, Michalis Kamburelis said:
> [ Charset ISO-8859-1 unsupported, converting... ]
> > 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.
> > >
> > > No, but having some functions returning information about the
> > > CPUs would be nice.
> > Blender (http://www.blender.org/) source code has function to do
> > that (they needed this to set the default number of threads for
> > renderer). So you could try converting to Pascal the code of
> > "BLI_system_thread_count" function from:
> > https://svn.blender.org/svnroot/bf-blender/trunk/blender/source/blender/blenlib/intern/threads.c
> > Doesn't seem that complicated on 1st look. It's basically
> > appropriate GetSystemInfo call on Windows, sysctl on Mac OS, and
> > sysconf (from Libc) call on most Unixes.
> Sysconf is not standarized yet. Unit libc is linux/x86 only.
> On freebsd, the sysctl modeled works, but note the typecast.
> (probably a K&R void* <-> char* problem)
> uses ctypes,sysctl;
> var mib : array[0..1] of cint;
> t :cint;
> mib := CTL_HW;
> mib := HW_NCPU;
> len := sizeof(t);
> fpsysctl(pchar(@mib), 2, @t, @len, Nil, 0);
> writeln(t); // prints 2 on our dual CPU (Athlon MPs)
Thanks for all the hints.
At the moment I have the attached function.
It returns only 4 on a 2 x quad core Mac.
Maybe someone can test under windows?
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 2156 bytes
Desc: not available
More information about the fpc-pascal