On 2012-05-18 17:29, Bill Hart wrote: > I'm not sure how virtual boxes work. Do they emulate the CPU as well as the > OS? > > Unfortunately, there isn't really a lot we can do if virtual box is > going out of its way to report incorrect cpu parameters through the > *assembly instruction* cpuid, if that is what is happening (I am not > sure if it is or not). > > Unfortunately, the solution does appear to be to build MPIR with > -march=native, which apparently works. > > If anyone has any deep insight into this, please let us know. Maybe it > is possible for us to do something about it upstream. I'm keen to fix > it, I just don't understand the problem well enough.
I think the following /proc/cpuinfo explains what happens: processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 42 model name : Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz stepping : 7 cpu MHz : 3302.482 cache size : 6144 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 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 mmx fxsr sse sse2 ht syscall nx lm constant_tsc rep_good nopl pni ssse3 lahf_lm bogomips : 6604.96 clflush size : 64 cache_alignment : 64 address sizes : 36 bits physical, 48 bits virtual power management: According to vendor/family/model, this is a Sandy Bridge. However, the CPU features (see flags) are seriously reduced compared to a real Sandy Bridge. Compiling with -march=SOMETHING means that 3 things have to be satisfied: (1) GCC must understand the command line flag (2) The assembler must understand the instructions (3) The processor must support the instructions Based on my observations, it seems that MPIR already checks (1) and (2). With -march=native, (1) and (3) are guaranteed, but not (2). When checking CFLAGS in MPIR, would it be possible to actually *run* an executable compiled with -march=SOMETHING, thereby checking (3)? Alternatively, check the feature flags from CPUID and lower the architecture based on that. Jeroen. -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to mpir-devel@googlegroups.com. To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.