On Friday, 18 May 2012 18:35:04 UTC+2, Bill Hart wrote: > > On 18 May 2012 17:26, Jeroen Demeyer wrote: > > 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)? > > > > Configure does run actual compile tests for the various -march > options, I believe. But the problem (3) won't show up unless code > specifically designed to compile to instructions that are only > supported on that processor is compiled. I don't think this is > feasible (and it is an autotools/configure issue anyway, not MPIR). > > > Alternatively, check the feature flags from CPUID and lower the > > architecture based on that. > > > > This would be feasible I think, but basically defeats the entire > strategy of selecting CPUs in MPIR. > > So does virtual box emulate a CPU with reduced features or something? > yes. This was discussed here and/or on sage-support...
> Do they consider this a bug, do you think? > They are pwned by Oracle now, it's unlikely they'd fix anything quickly, if at all... Dima > > Bill. > -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To view this discussion on the web visit https://groups.google.com/d/msg/mpir-devel/-/jtKiGMfjbzgJ. 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.