On Thu. 2010-07-29 22:20:28 +0200, Artyom Tarasenko wrote: > 2010/7/29 amateur <tianlei.z...@gmail.com>: > > Hi, All > > > > I'm trying to run benchmarks from SPEC CPU2006 compiled for SPARC on > > top of qemu-sparc32plus. However, several benchmarks failed to get the > > correct result. > > Can you try to compile them for sparc32 (no plus)? Are the tests > multi-threaded? If yes, can you try to run them under > qemu-system-sparc? There are some known problems in user mode > emulation.
The benchmarks were compiled for sparc32. Qemu was configured for target sparc32plus-linux-user and host is x86_64. All benchmarks are single threaded. Host system is Debian testing for x86_64. Host compiler is gcc-4.4.3 from debian repository. I tried use qemu-sparc instead of qemu-sparc32plus as you suggested. To my surprise, that works for 403.gcc which run to end and get the correct result. I'm wondering why qemu-sparc works while qemu-sparc32plus doesn't. Maybe that has something to do with the CPU model, which is "TI UltraSparc II" for qemu-sparc32plus and "Fujitsu MB86904" for qemu-sparc. I will try to do some more research on this. Thanks for the hint. > > One of the failed benchmarks, 403.gcc, runs for a while and then print > > an error message and exit. > > Can you be more specific here? What message? From the description of > 403.gcc, it looks like it does some floating point operations. Is the > error FPU specific? After registered binfmt_misc: [quote] workstation:~/403.gcc.train$ ./gcc integrate.i -o integrate.s integrate.i:1936: unrecognizable insn: integrate.i:1936: Internal compiler error in extract_insn, at recog.c:2148 It is possible that you may be trying to use SPEC's version of gcc without first defining the appropriate flags. Please check the flags that are in the config files from recently-published results on your platform, and check that you are using an up-to-date compiler. If you still need help, please contact SPEC, reporting your hw/os platform, your compiler version, and your compilation flags. Contact SPEC at <URL:http://www.spec.org/> [/quote] Although it complains, there is no other compilation flags than SPEC_CPU which I've already set properly. And the result binray can run flawlessly on Simics. > What other tests are failing? Are there any pure integer tests among them? 447.dealII(compiled for sparc32) from SPEC CPU 2006 fails on qemu-sparc32plus too, while the same binary runs well on Simics. The error message is: [quote] workstation:~/447.dealII.train$ ./dealII 10 Refinement cycle: 0 Number of degrees of freedom=79 Point value=0.111419 Estimated error=-0.0202358 Refinement cycle: 1 ---------------------------------------------------- Exception on processing: -------------------------------------------------------- An error occurred in line <2591> of file <data_out_base.cc> in function unknown The violated condition was: out The name and call sequence of the exception was: ExcIO() Additional Information: (none) -------------------------------------------------------- Aborting! ---------------------------------------------------- [/quote] I've made a mistake. Only these two benchmarks in SPEC CPU 2006 fail on qemu-sparc32plus. > > However, the same compiled gcc binary for > > SPARC runs quite well in Simics(a commercial emulator) and give the > > correct result. > > What CPU does it emulate in your test? I'm using the default CPU model set by qemu. For sparc32plus, that is "TI UltraSparc II". -- When in this world the headlines read Of those whose hearts are filled with greed Who rob and steal from those who need The cry goes up with blinding speed for Underdog (UNDERDOG!) Underdog (UNDERDOG!) Speed of lightning, roar of thunder Fighting all who rob or plunder Underdog (ah-ah-ah-ah) Underdog UNDERDOG!