harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Egor Pasko <egor.pa...@gmail.com>
Subject Re: [drlvm][jit][opt][abcd] Two-state Inequality Graph for both Lower and Upper problems
Date Wed, 18 Jul 2007 15:28:12 GMT
On the 0x317 day of Apache Harmony Vladimir Strigun wrote:
> On 18 Jul 2007 14:30:01 +0400, Egor Pasko <egor.pasko@gmail.com> wrote:
> > On the 0x317 day of Apache Harmony Vladimir Strigun wrote:
> > > On 18 Jul 2007 13:58:46 +0400, Egor Pasko <egor.pasko@gmail.com> wrote:
> > > > On the 0x317 day of Apache Harmony Vladimir Strigun wrote:
> > > > > Egor,
> > > > >
> > > > > On 17 Jul 2007 02:44:25 +0400, Egor Pasko <egor.pasko@gmail.com>
wrote:
> > > > > > Guys,
> > > > > >
> > > > > > I am not very stuck with ABCD. I am not. Not at all. Not am
I.
> > > > > > Ehm.
> > > > > >
> > > > > > Lickily, I finished digging into the implementation and making
sure it
> > > > > > is correct. Now I am pretty confident that classic_abcd does
the right
> > > > > > thing! (no guarantees, you know, it's software) Had to refactor
the
> > > > > > code a bit to fill in the gaps of my poor understanding. I think,
we
> > > > > > should commit the changes...
> > > > > >
> > > > > > featuring:
> > > > > > * two-state Inequality Graph, dot printing is just beautiful
> > > > > > * better readability
> > > > > > * unit-like-tests against the new functionality
> > > > > > * option: -XX:jit.arg.dump_abcd_stats=true to dump stats (total/eliminated)
> > > > > > * same amount of checks eliminated as before
> > > > > > * well-known tests breaking oldish ABCD _passed_, of course
> > > > > >
> > > > > > in all, HARMONY-4476 (more details in JIRA)
> > > > > >
> > > > > > Given that Windows is not what I am lucky with today, if a JIT
guru
> > > > > > (Pavel, Mikhail, George?) had time to take a look at the patch
and run
> > > > > > 'build test' on Windows that would be really-really great!
> > > > > >
> > > > > > And now the ugly porn:
> > > > > >
> > > > > > 1. I could not run almost all of DaCapo benches for various
reasons, so
> > > > > >   tested only on hsqldb, wow, anybody aware of it or is it just
me
> > > > > >   ugly little creature? had little time, sorry
> > > > >
> > > > > Could you please describe what problems do you have with running
Dacapo?
> > > >
> > > > for example:
> > > >
> > > > [pasko 13:51:19 dacapo]$ $HARMONY -showversion -XX:jit.arg.dump_abcd_stats=true
-Xem:server -jar dacapo-2006-10-MR2.jar antlr
> > > > Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
Foundation or its licensors, as applicable.
> > > > java version "1.5.0"
> > > > pre-alpha : not complete or compatible
> > > > svn = r554009, (Jul 17 2007), Linux/ia32/gcc 4.0.3, debug build
> > > > http://harmony.apache.org
> > > > ===== DaCapo antlr starting =====
> > > > Running antlr on grammar antlr/cpp/calc.g
> > > > ANTLR Parser Generator   Version 2.7.5 (20050128)   1989-2005 jGuru.com
> > > > [pasko 13:52:03 dacapo]$
> > > >
> > > > this is a failure ("PASSED" was not printed)
> > > > ..but the version is rather old.
> > > >
> > > > I am going to file the bugs as soon as I manage to check the latest version.
> > >
> > > Yes, it's well known issue (HARMONY-1906). The problem here that
> > > Dacapo uses patched version of antlr, while antlr.jar included to
> > > bootclasspath for vm. So, the workaround here is to remove antlr.jar
> > > from bootclasspath.properties file.
> >
> > Very interesting!
> >
> > Vladimir, as an expert in running benchmarks, could you, please, share
> > the knowledge about all tricks that you know (including the just
> > mentioned one) that are necessary to run DaCapo on Wiki?
> 
> AFAIK,
> there are only several trick to run Dacapo@DRLVM:
> 1. As I mentioned before, to run antlr bench, please remove antlr.jar
> from bootclasspath.properties file.
> 2. To run dacapo xalan you need to extract DacapoMR2 and run it with
> the following command line: java -Xbootclasspath/p:./xalan.jar
> Harness xalan
> The reason for such a trick is almost the same as for antlr: dacapo
> have internal xalan package with version 2.4.1, but 2.7.0 included to
> Harmony.
> 3. Jython bench fails on Linux (Harmony-2137).
> 
> If you think it's reasonable to reflect these tricks on Wiki, I can
> create corresponding page.

please, that would be awesome, thank you!

> > and publishing performance measurements on Linux would be also good to
> > start to track progress here. (but this is another subject to discuss)
> 
> We have performance page ( http://harmony.apache.org/performance.html
> ) where you can find some results. As I can see, results already
> outdated and I'll try to figure out whether we can continue to publish
> it.

it is Windows-only, I would like to reflect Linux too.

> > now on DaCapo eclipse:
> >
> > $ $HARMONY -showversion -XX:jit.arg.dump_abcd_stats=true -Xem:server -jar dacapo-2006-10-MR2.jar
eclipse
> > Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation
or its licensors, as applicable.
> > java version "1.5.0"
> > pre-alpha : not complete or compatible
> > svn = r554009, (Jul 17 2007), Linux/ia32/gcc 4.0.3, debug build
> > http://harmony.apache.org
> > The GC did not provide gc_add_weak_root_set_entry()
> > ===== DaCapo eclipse starting =====
> > Uncaught exception in main:
> > java.lang.reflect.InvocationTargetException
> >        at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java)
> >        at java.lang.reflect.Method.invoke(Method.java:317)
> >        at org.apache.harmony.vm.JarRunner.main(JarRunner.java:80)
> > Caused by: java.lang.NoClassDefFoundError: org/eclipse/jdt/internal/launching/StandardVMType
> >        at dacapo.eclipse.HarnessRunner.run(HarnessRunner.java:19)
> >        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java)
> >        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java)
> >        at dacapo.eclipse.EclipseHarness.iterate(EclipseHarness.java:35)
> >        at dacapo.Benchmark.run(Benchmark.java)
> >        at dacapo.TestHarness.runBenchmark(TestHarness.java:302)
> >        at dacapo.TestHarness.main(TestHarness.java:242)
> >        at Harness.main(Harness.java:5)
> >        at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java)
> >        ... 2 more
> > Caused by: java.lang.ClassNotFoundException: org.eclipse.jdt.internal.launching.StandardVMType
> >        at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:405)
> >        at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java)
> >        at org.eclipse.osgi.framework.adaptor.core.AbstractClassLoader.loadClass(AbstractClassLoader.java)
> >        at java.lang.ClassLoader.loadClass(ClassLoader.java)
> >        at dacapo.eclipse.HarnessRunner.run(HarnessRunner.java:19)
> >        ... 10 more
> >
> > is it known?
> 
> Unfortunately couldn't reproduce it with rev 557221:
> 
> ./java -showversion -jar ~/dacapo-2006-10-MR2.jar eclipse
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software
> Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r557221, (Jul 18 2007), Linux/ia32/gcc 3.4.2, debug build
> http://harmony.apache.org
> The GC did not provide gc_add_weak_root_set_entry()
> ===== DaCapo eclipse starting =====
> <setting up workspace...>
> <creating projects..............................................................>
> <running tests at level 0...>
> <performing build tests...>
>         org.apache.ant (not open) opening cleaning building
>         org.junit (not open) opening cleaning building
>         org.eclipse.osgi (not open) opening cleaning building
> <performing type hierarchy tests...>
>         Hierarchy: org.eclipse.help.internal HelpPlugin
> <performing AST tests...>
>         AST creation: org.eclipse.jdt.internal.compiler.parser
> <performing completion tests...>
>         Completion: Completion>Name>Empty
>         Completion: Completion>Name>Empty>No Method
> <performing search tests...>
>         Searching: indexing
> ===== DaCapo eclipse PASSED in 223509 msec =====

OK, I will recheck with newer version and file a JIRA if the problem persists..

> 
> Thanks.
> Vladimir.
> 
> > >
> > > > > I've checked your patch on all dacapo benches and I haven't see any
> > > > > boost or degradation (release build rev 556923).
> > > >
> > > > That is good! There should be no boost or degradation. These changes
> > > > were made for better maintainability and to more or less prove
> > > > correctness of the optimization.
> > > >
> > > > > Thanks.
> > > > > Vladimir.
> > > > >
> > > > > > 2. ~10% bounds checks removed in hot methods and 8% in total,
with
> > > > > >   ABCD innocent and many other optimizations very very guilty
or
> > > > > >   absent. OMG!
> > > > > >
> > > > > > 3. "memopt" is probably the ugliest!! In my example:
> > > > > >   1. array A lies in a non-volatile field
> > > > > >   2. A.length is computed right in the method entrance
> > > > > >   3. A is then loaded via "ldfield" bytecode instruction in
the
> > > > > >      middle of the method
> > > > > >   4. nothing writes to the field, just accesses elements of
A
> > > > > >
> > > > > >   And who could imagine that A.length would be computed twice
with
> > > > > >   "memopt" having nothing to do with second appearance A.length?
> > > > > >   Thus, not eliminating the second appearance of this sequence:
> > > > > >
> > > > > >   I9:ldflda    [t1.BidirectionalBubbleSort2::a] -) t4:ref:int32[]
> > > > > >   I10:ldind.unc:[]  [t4] ((t2,t3)) -) t5:int32[]
> > > > > >   I11:chknull   t5 -) t6:tau
> > > > > >   I12:tauhastype      t5,int32[] -) t7:tau
> > > > > >   I13:arraylen  t5 ((t6,t7)) -) t8:int32
> > > > > >
> > > > > >   this is what should be optimized out definitely! and the thing
that
> > > > > >   breaks two A.length-s apart killing the idea of ABCD.
> > > > > >
> > > > > > 4. "loop versioning" is not implemented, and this is what I
would like
> > > > > >   to take. I already wrote some 2-component-nullstone-like
> > > > > >   performance tests to detect how good a JVM deals with loop
> > > > > >   versioning. Will post the bunch of them soon.
> > > > > >
> > > > > > JIT gurus,
> > > > > >
> > > > > > given the ugly (1) - (4), rather critical for performance do
you like
> > > > > > the idea to fight them in a high priority? Could you share your
> > > > > > vision, please?
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Egor Pasko
> > > > > >
> > > > > >
> > > > >
> > > >
> > > > --
> > > > Egor Pasko
> > > >
> > > >
> > >
> >
> > --
> > Egor Pasko
> >
> >
> 

-- 
Egor Pasko


Mime
View raw message