distutils/cpuinfo fails to detect some nocona based hardware (Trac #644) #1242

numpy-gitbot opened this Issue Oct 19, 2012 · 8 comments


None yet
1 participant

Original ticket http://projects.scipy.org/numpy/ticket/644 on 2008-01-11 by trac user jsbronder, assigned to @cournape.

Reference: https://bugs.gentoo.org/show_bug.cgi?id=183236

Basically, cpuinfo is failed to verify that the following cpuinfo is, in fact, nocona.
This has been verified against numpy-1.0.4.

processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Genuine Intel(R) CPU                  @ 2.40GHz
stepping        : 4
cpu MHz         : 2400.130
cache size      : 4096 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
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
constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips        : 4802.95
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

Attachment added by trac user jsbronder on 2008-01-11: numpy-1.0.4-nocona-cpuinfo.patch

@cournape wrote on 2008-03-22

This patch does not work for me (compilation fails). I added the part which fixes typo in linux kernel for sse3 (sse3 vs ssse3), though, in r4917.

I am looking at the problem for the correct nocona detection, now.

@cournape wrote on 2008-03-22

Ok, I guess I did something wrong, the patch does work. Included in r4920

@charris wrote on 2008-03-22

What do you mean by typo? SSSE3 is a valid acronym that stands for Supplemental Streaming SIMD Extension 3.

@cournape wrote on 2008-03-22

Hm, ok... I thought it was a typo because on my machine, I do have sse, sse2 and ssse3, but no sse3. Well, that may not be a typo, but if you have ssse3, you have sse3, right ?

I find a bit strange that there is a discrepancy between sse 1/2 and 3. The software x86info does tell me that I have sse3, but not ssse3...

@cournape wrote on 2008-03-22

Ok, I tried the last cpuinfo from there:


This one tells me I have both sse3 and ssse3.

@charris wrote on 2008-03-22

Agreed, it's a bit strange. When I first saw it, I thought it was a typo too and googled it just to be sure. Wikipedia has a good, short description: http://en.wikipedia.org/wiki/SSSE3. It looks like ssse3 does imply sse3.

@cournape wrote on 2008-03-23

I took a look at the linux kernel sources for the values put into /proc/cpuinfo (arch/x86/kernel/cpu/proc.c), and I don't see any sse3, only ssse3 (there is sse4 related flags, though). It looks like the real name of sse3 is pni:


I committed the changes in r4931 and r4933 (has_sse3 returns true when pni is detected, a function has_ssse3, and detected nocona if both has_sse3 and !has_ssse3() are true). I think this should fix the issue for good.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment