Verification failure in SPECJVM2008.scimark.fft.small on Windows/32bit
Volker Simonis
volker.simonis at gmail.com
Tue Nov 11 02:23:50 PST 2008
Hi,
unfortunately I had no success in finding a solution for this problem.
I have therefore opened a bug report (" Floating point failure in
32-bit JDK 6/7 on multicore Windows with -XX:UseSSE=2" with the
internal review ID 1389916).
I think this is quite a serious problem and it would be nice, if
somebody could have a look on it.
Thank you and best regards,
Volker
PS: with the option "-XX:+TraceRuntimeCalls" I could see that the
benchmark calls "SharedRuntime::dsin(jdouble x)" quite often. The
problem is probably also not related to any kind of OnStackReplacement
or Deoptimization (I checked with "-XX:+TraceOnStackReplacement" and
"-XX:+TraceDeoptimization) because the offending methods are compiled
quite some time before the actual failure happens.
On 10/31/08, Volker Simonis <volker.simonis at gmail.com> wrote:
> Funny enough, my previous problem, which was caused by an uncleared FP
> status register, only happend on 64-bit Windows and only with MSVC
> 2005 and 2008 while this problem happens only on 32-bit Windows and
> with MSVC 2005 (the one we use for our builds) as well as with older
> versions of MSVC (i.e. the one that is used for the official Java 7
> buildss by SUN).
>
> I finally found some documentation about the calling conventions on
> Windows/x64 and it states: "A callee that modifies any of the fields
> within FPCSR/MXCSR must restore them before returning to its caller.
> Furthermore, a caller that has modified any of these fields must
> restore them to their standard values before invoking a callee unless
> by agreement the callee expects the modified values". I could however
> only find this information for MSVC 2005 and 2008 (see
> http://msdn.microsoft.com/en-us/library/ms235300(VS.80).aspx and
> http://msdn.microsoft.com/en-us/library/ms235300.aspx) and I think you
> use an older version for Windows builds, right?
>
>
> Volker
>
>
> On 10/30/08, Tom Rodriguez <Thomas.Rodriguez at sun.com> wrote:
> > I haven't had a chance to investigate yet, but I wonder if this is related
> > to the MXCSR issue you had mentioned previously? AlwaysRestoreFPU doesn't
> > deal with the MXCSR. -XX:+RestoreMXCSROnJNICalls does something similar
> > though.
> >
> > tom
> >
> >
> > On Oct 30, 2008, at 11:22 AM, Volker Simonis wrote:
> >
> >
> > > Hi Tom,
> > >
> > > I ran the benchmark all day and I couldn't reproduce the problem
> > > neither with -XX:UseSSE=0 nor with -XX:UseSSE=1 although I havent done
> > > that many runs with -XX:UseSSE=1 like with -XX:UseSSE=0. It seems the
> > > problem only shows up with -XX:UseSSE=2 or higher. I'll start a run
> > > with "-XX:UseSSE=2 -XX:+CheckJNICalls" now and post the results
> > > tomorrow. I have also found some other options which may be worth
> > > trying them out: -XX:+AlwaysRestoreFPU and -XX:+VerifyFPU where the
> > > last one is only available in the debug build.
> > >
> > > I've noticed that the tests uses a java.lang.ThreadLocal double array
> > > to store and compute the values. May this be a problem perhaps?
> > >
> > > Did you had a chance to reproduce the problem?
> > >
> > > Regards,
> > > Volker
> > >
> > > On 10/29/08, Tom Rodriguez <Thomas.Rodriguez at sun.com> wrote:
> > >
> > > > I haven't seen this before, though I pretty much never benchmark on
> > windows.
> > > > Is the use of -XX:+CITime required? have you tried debug builds? Does
> > it
> > > > reproduce with -XX:UseSSE=0? It might be interesting to run with
> > > > -XX:+CheckJNICalls which will verify the various fp control words have
> > the
> > > > right value. I'll see if I can reproduce it here.
> > > >
> > > > tom
> > > >
> > > >
> > > > On Oct 29, 2008, at 11:55 AM, Volker Simonis wrote:
> > > >
> > > >
> > > >
> > > > > Hi,
> > > > >
> > > > > we have problems with SPECJVM2008 on Windows/x86 machines with at
> > > > > least 4 cores and at least 4 benchmark threads. The benchmark
> > > > > reproducible fails in the result verification of the sub-benchmark
> > > > > scimark.fft.small (however in random places).
> > > > >
> > > > > We could reproduce the problem with JDK 6u7 and 6u10 as well as with
> > > > > the latest JDK 7b38 however only for the 32-bit Windows versions.
> > > > >
> > > > > Because the problem occurs with both, C1 and C2 and because the
> > > > > problem isn't reproducible neither with -Xint, nor with the 64-bit
> > > > > Windows or the Linux JDK, we think that this may be a problem in the
> > > > > HotSpot runtime (perhaps a timing/concurrency problem with the
> > > > > handling of 64-bit doubles in a 32-bit JDK on multi core machines?),
> > > > > but this is only a wild guess.
> > > > >
> > > > > We also observed that all the files (JDK, test classes and result
> > > > > files) had to be on the local host in order to reproduce the problem
> > > > > and we had the impression that the benchmark fails more quickly on
> > > > > Intel XEON, compared to AMD Opteron (we tested on the following
> > > > > hardware: Intel (2x XEON (with HT), 3.4GHz, 8GB, MS Win Server 2003
> > > > > Enterprise x64, SP1) and AMD (4x Opteron 270, 2.0GHz, 9GB, MS Win
> > > > > Server 2003 Enterprise x64, SP1)).
> > > > >
> > > > > Has anybody else already observed this problem? Is this perhaps an
> > > > > issue of SPECJVM2008.scimark.fft.small?
> > > > >
> > > > > Any comments would be highly appreciated!
> > > > >
> > > > > Regards,
> > > > > Volker
> > > > >
> > > > > PS: JVM2008 is available from
> > > > >
> > > > http://www.spec.org/download.html
> > > >
> > > > >
> > > > > PPS: here's the command line we used for the tests: java -server
> > > > > -XX:+CITime -Djava.io.tmpdir=tmp -jar SPECjvm2008.jar -ikv -wt 30 -it
> > > > > 60 -bt 4 --base scimark.fft.small scimark.fft.small scimark.fft.small
> > > > > scimark.fft.small scimark.fft.small scimark.fft.small
> > > > > scimark.fft.small scimark.fft.small scimark.fft.small
> > > > > scimark.fft.small scimark.fft.small scimark.fft.small
> > > > > scimark.fft.small scimark.fft.small scimark.fft.small
> > > > > scimark.fft.small scimark.fft.small scimark.fft.small
> > > > > scimark.fft.small scimark.fft.small
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > >
> >
> >
>
More information about the hotspot-dev
mailing list