[fpc-pascal] number of cpu cores

Mattias Gaertner 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;
>    len:cint;
>     t :cint;
> begin
> 	mib[0] := CTL_HW;
>         mib[1] := HW_NCPU;
>         len := sizeof(t);
>         fpsysctl(pchar(@mib), 2, @t, @len, Nil, 0);
> 	writeln(t); // prints 2 on our dual CPU (Athlon MPs)
> end.

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?

Mattias
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mtpcpu.pas
Type: text/x-pascal
Size: 2156 bytes
Desc: not available
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20081213/fd9beb12/attachment.pas>


More information about the fpc-pascal mailing list