ppc64le changes for jdk8u
Hiroshi H Horii
HORII at jp.ibm.com
Thu Apr 6 16:04:20 UTC 2017
Hi Martin,
Thank you for your comments.
> 1. I think this one makes sense. Having the same platform name
> "ppc64le" in jdk8 as in jdk9 sounds good to me.
Thanks. We would like to request a change for this.
> 2. and especially 5. are major feature backport changes. I'm not
> against doing that, but it would need to be done carefully as jdk8
> is pretty much stabilized.
We would like ask a backport of 8144019.
> 3. I still like the idea of optimizing forwarding in ParallelGC by
> getting rid of the expensive heavy-weight sync instructions. I think
> this change should be discussed in jdk10 and if we can get it
> reviewed and pushed, it should be possible to backport it to 9u and
> possibly to 8u.
Thanks. We would like to start discussion for jdk10, first.
> 4. Changing only C2 makes it inconsistent and hence incorrect.
Right. I need to care C1 also.
> Making support_IRIW_for_not_multiple_copy_atomic_cpu switchable on
> PPC64 would do the job. I think this would be nice to have for
> experiments, especially in jdk10
I agree. We will start discussion for jdk10, first.
Regards,
Hiroshi
-----------------------
Hiroshi Horii, Ph.D.
IBM Research - Tokyo
"Doerr, Martin" <martin.doerr at sap.com> wrote on 2017/04/04 15:18:55:
> From: "Doerr, Martin" <martin.doerr at sap.com>
> To: Hiroshi H Horii/Japan/IBM at IBMJP, "ppc-aix-port-
> dev at openjdk.java.net" <ppc-aix-port-dev at openjdk.java.net>
> Cc: Michihiro Horie/Japan/IBM at IBMJP
> Date: 2017/04/04 15:20
> Subject: RE: ppc64le changes for jdk8u
>
> Hi Hiroshi,
>
> thanks for sharing your work and for providing all the webrevs. Here
> are my comments:
>
> 1. I think this one makes sense. Having the same platform name
> "ppc64le" in jdk8 as in jdk9 sounds good to me.
>
> 2. and especially 5. are major feature backport changes. I'm not
> against doing that, but it would need to be done carefully as jdk8
> is pretty much stabilized.
>
> 3. I still like the idea of optimizing forwarding in ParallelGC by
> getting rid of the expensive heavy-weight sync instructions. I think
> this change should be discussed in jdk10 and if we can get it
> reviewed and pushed, it should be possible to backport it to 9u and
> possibly to 8u.
>
> 4. Changing only C2 makes it inconsistent and hence incorrect.
> Making support_IRIW_for_not_multiple_copy_atomic_cpu switchable on
> PPC64 would do the job. I think this would be nice to have for
> experiments, especially in jdk10 wrt. JEP 188: Java Memory Model Update
[1].
> Note that the line in Parse::do_exits() (parse1.cpp) should be changed
from:
> PPC64_ONLY(wrote_volatile() ||)
> to:
> PPC64_ONLY((support_IRIW_for_not_multiple_copy_atomic_cpu &&
> wrote_volatile()) ||)
> Otherwise, you'll get redundant barriers (lwsync).
>
> 6. Interesting. Would also be interesting to see performance
> measurement results.
>
> Thanks and best regards,
> Martin
>
>
> [1] http://openjdk.java.net/jeps/188
>
>
> From: ppc-aix-port-dev [mailto:ppc-aix-port-dev-bounces at openjdk.java.net
]
> On Behalf Of Hiroshi H Horii
> Sent: Samstag, 1. April 2017 12:34
> To: ppc-aix-port-dev at openjdk.java.net
> Cc: Michihiro Horie <HORIE at jp.ibm.com>
> Subject: ppc64le changes for jdk8u
>
> Dear all,
>
> In advance, I apologize that this mail has various mixed contents. I
> may need to simplify this mail by dividing to several mails for
> ease-of-discussion.
>
> I would like to introduce changes of jdk8u for ppc64le, which Michi
> and I created. We are attempting to publish a research document
> about performance evaluation of POWER systems based on these
> changes. Under the license of OpenJDK, which is based on GPL, we
> would like to open these changes.
>
> Some are only for jdk8u. Some are under discussion. Please give your
> comments if you are interested in our changes. All of changesets are
> generated based on jdk8u152-b01.
>
> 1. Enabled ppc64le as the default os.arch
> When we built jdk8u on ppc64le with the latest jdk8u repository, the
> default os.arch was ppc64. This change set ppc64le as the default
> value of os.arch.
> http://cr.openjdk.java.net/~horii/jdk8u_support_ppc64le/webrev/
> http://cr.openjdk.java.net/~horii/jdk8u_support_ppc64le/hotspot/
> http://cr.openjdk.java.net/~horii/jdk8u_support_ppc64le/jdk/
>
> 2. backport of CRC32 intrinsics (JDK-8131048, JDK-8164920)
> CRC32 intrinsics was implemented and enhanced in jdk9 for ppc64le.
> We backported these optimizations to jdk8u. There are few changed in
> shared codes. I'm now trying to eliminate them.
> http://cr.openjdk.java.net/~horii/8166784/webrev.00/
>
> 3. Elimination of memory fences before and after CAS
> We are discussing to eliminate memory fences in ParallelGC for
> JDK-8154736. We found that the same patterns in CMS (Probably, we
> will be able to find them in G1). We provided changes for jdk9 in
> the previous discussion with many supports from the community. The
> below changes are for jdk8u for ParallelGC and CMS.
> http://cr.openjdk.java.net/~horii/jdk8u_gcopt/webrev/
>
> 4. Volatile access optimization
> In the current implementation, sync is called for each volatile read
> and lwsync for each volatile write. With this optimization, isync is
> called for each volatile read and lwsync and sync are called for
> each volatile write. I'm now writing a proof
> to validate these implementation.
> http://cr.openjdk.java.net/~horii/jdk8u_volatilereadopt/webrev/
>
> 5. Tiered Compilation
> Tiered Compilation will be introduced in jdk9 for ppc64le. We
> backported Tiered Compilation to jdk8u. The following url includes
> all of the above changes because we backported this feature after
> applying them. Michi is now working to isolate dependencies in them.
> http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/webrev/
>
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/hotspot/webrev/
>
http://cr.openjdk.java.net/~horii/jdk8u_support_tiered_ppc64le/jdk/webrev/
>
> The above includes many changes in shared codes. We just want to add
> tiered compilation only for ppc64le. Michi is now minimizing changes
> in shared codes. Here is the current status.
> http://cr.openjdk.java.net/~horii/c1backport/webrev.01/
>
> 6. Some bypath in JCL
> We experimentally implemented caches of java.util.Pattern, efficient
> String.format for a typical date format, and TreeMap optimization to
> work around typical mistakes for not-optimized Java codes. They do
> not guarantee specifications, I think.
> http://cr.openjdk.java.net/~horii/jdk8u_jcl_cheat/webrev/
>
> I tested 5 and 6 on Ubuntu 16.04 as follows.
>
> $ sudo apt-get install openjdk-8-jdk openjdk-8-dbg mercurial zip
> bzip2 unzip tar curl libnuma-dev libasound2-dev libxtst-dev
> libfreetype6-dev libxrender-dev libcups2-dev libfreetype6-dev -y
> $ hg clone http://hg.openjdk.java.net/jdk8u/jdk8u
> $ cd jdk8u
> $ sh ./get_source.sh
> $ curl -o jdk8u.patch http://cr.openjdk.java.net/~horii/
> jdk8u_support_tiered_ppc64le/webrev/jdk8u-dev.patch
> $ patch -p1 < jdk8u.patch
> $ cd hotspot
> $ curl -o hotspot.patch http://cr.openjdk.java.net/~horii/
> jdk8u_support_tiered_ppc64le/hotspot/webrev/hotspot.patch
> $ patch -p1 < hotspot.patch
> $ curl -o jdk1.patch http://cr.openjdk.java.net/~horii/
> jdk8u_support_tiered_ppc64le/jdk/webrev/jdk.patch
> $ curl -o jdk2.patch http://cr.openjdk.java.net/~horii/
> jdk8u_jcl_cheat/webrev/jdk.patch
> $ patch -p1 < jdk1.patch
> $ patch -p1 < jdk2.patch
> $ cd ../
> $ sh ./configure --with-freetype-include=/usr/include/freetype2/ --
> with-freetype-lib=/usr/lib/powerpc64le-linux-gnu/
> $ make all
>
> Regards,
> Hiroshi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/ppc-aix-port-dev/attachments/20170407/db115e4a/attachment-0001.html>
More information about the ppc-aix-port-dev
mailing list