Thread overview
[Issue 4462] New: core.cpuid wrong on Intel machines w/ multiple physical CPUs
Jul 14, 2010
David Simcha
Feb 27, 2011
Russel Winder
Feb 27, 2011
Don
Feb 27, 2011
Don
[Issue 4462] core.cpuid: Need way to get total number of sockets/physical CPUs
Feb 27, 2011
David Simcha
Feb 27, 2011
David Simcha
Aug 13, 2011
David Simcha
July 14, 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4462

           Summary: core.cpuid wrong on Intel machines w/ multiple
                    physical CPUs
           Product: D
           Version: D2
          Platform: Other
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: druntime
        AssignedTo: sean@invisibleduck.org
        ReportedBy: dsimcha@yahoo.com


--- Comment #0 from David Simcha <dsimcha@yahoo.com> 2010-07-14 12:33:35 PDT ---
Test Program:

import core.cpuid, std.stdio;

void main() {
    writeln("Cores:  ", coresPerCPU, "  Threads:  ", threadsPerCPU);
}

This prints the following on the machine in question:

Cores:  1  Threads:  2

cat /proc/cpuinfo on same machine:

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7321.79
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 4
siblings        : 2
core id         : 4
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7314.82
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 3
siblings        : 2
core id         : 3
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7315.15
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 7
siblings        : 2
core id         : 7
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7315.01
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 4
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7315.01
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 5
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 4
siblings        : 2
core id         : 4
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7315.07
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 6
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 3
siblings        : 2
core id         : 3
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7315.13
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

processor       : 7
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                Intel(R) Xeon(TM) MP CPU 3.66GHz
stepping        : 1
cpu MHz         : 3657.825
cache size      : 1024 KB
physical id     : 7
siblings        : 2
core id         : 7
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm pni monitor
ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7315.03
clflush size    : 64
cache_alignment : 128
address sizes   : 40 bits physical, 48 bits virtual
power management:

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 27, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4462


Russel Winder <russel@russel.org.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |russel@russel.org.uk


--- Comment #1 from Russel Winder <russel@russel.org.uk> 2011-02-27 05:51:06 PST ---
OK this bug has been open for 7 months and no action.  Surely this is no an urgent blocking bug.

Note also Issue 5612 which shows that the code is broken with 64-bit processors as well as multiple processors.

Can cpuid.d be separated out so that we can work on it?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 27, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4462


Don <clugdbug@yahoo.com.au> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |clugdbug@yahoo.com.au


--- Comment #2 from Don <clugdbug@yahoo.com.au> 2011-02-27 06:52:01 PST ---
(In reply to comment #0)
> Test Program:
> 
> import core.cpuid, std.stdio;
> 
> void main() {
>     writeln("Cores:  ", coresPerCPU, "  Threads:  ", threadsPerCPU);
> }
> 
> This prints the following on the machine in question:
> 
> Cores:  1  Threads:  2
> 
> cat /proc/cpuinfo on same machine:
> 
> processor       : 0
> cpu cores       : 1

> processor       : 1
> cpu cores       : 1

> processor       : 2
> cpu cores       : 1

That isn't enough information to demonstrate a bug. proc/cpuinfo reports 8 processors, each with one core each. Thus, I would expect coresPerCPU to be 1.

Can you please give a valid test case? (Seems as though you'll need to display the number of processors).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 27, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4462



--- Comment #3 from Don <clugdbug@yahoo.com.au> 2011-02-27 13:59:51 PST ---
To clarify: core.cpuid does NOT provide the number of CPUs in the system. Hence, it does not give the total number of available cores.

core.cpuid gives the number of cores in each CPU, and the number of hyperthreads in each core. This means that it has sufficient information to do cache blocking correctly.

The total number of physical CPUs is required only when distributing work between cores (you never need to know it when scheduling within a core). Determining this is OS-dependent, and is actually pretty useless unless you also have some way of controlling the processor affinity, as well. Although this is stuff we will definitely need, it's quite a different situation from bugs in the existing code.

Are there any cases where the reported values are actually wrong? Or is this a feature request for the number of physical CPUs?

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 27, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4462


David Simcha <dsimcha@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|core.cpuid wrong on Intel   |core.cpuid:  Need way to
                   |machines w/ multiple        |get total number of
                   |physical CPUs               |sockets/physical CPUs


--- Comment #4 from David Simcha <dsimcha@yahoo.com> 2011-02-27 14:15:37 PST ---
(In reply to comment #3)
> To clarify: core.cpuid does NOT provide the number of CPUs in the system.
> Hence, it does not give the total number of available cores.
> ...
> Are there any cases where the reported values are actually wrong? Or is this a
> feature request for the number of physical CPUs?


This is definitely an enhancement request then.  As far as I can tell, the cores per CPU stuff is actually right (I think).  It's just that I vaguely remember you stating the opposite at one point, that coresPerCPU actually is a misnomer and gives the total number of cores across all CPUs.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 27, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4462


David Simcha <dsimcha@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
August 13, 2011
http://d.puremagic.com/issues/show_bug.cgi?id=4462


David Simcha <dsimcha@yahoo.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


--- Comment #5 from David Simcha <dsimcha@yahoo.com> 2011-08-12 20:47:06 PDT ---
std.parallelism.totalCPUs addresses this.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------