RFR: 8210416: [linux] Poor StrictMath performance due to non-optimized compilation

Erik Joelsson erik.joelsson at oracle.com
Thu Sep 6 16:55:29 UTC 2018


On 2018-09-06 03:12, Severin Gehwolf wrote:
> Hi David,
>
> On Thu, 2018-09-06 at 07:32 +1000, David Holmes wrote:
>> Hi Severin,
>>
>> Might as well raise this here too as it's really a build philosophy
>> issue. Shouldn't flags like -ffp-contract=off (and the existing AIX
>> -qfloat=nomaf) be toolchain specific rather than platform specific?
> Looks like Clang has -ffp-contract:
> https://clang.llvm.org/docs/ClangCommandLineReference.html#cmdoption-clang-ffp-contract
>
> Is there any other (supported) toolchain other than gcc and clang on
> linux? As for AIX I suppose there is only on supported toolchain?
We don't have a big variety of toolchain/platform combinations that we 
actively support no, but we still try to be conscious of when a flag is 
toolchain specific and when it's platform specific. There is certainly 
interest in using other compilers on Linux, and GCC could potentially be 
used on other platforms as well. Until we actually try it, it can be 
hard to know for sure if a flag actually applies in other cases for the 
toolchain and/or platform, but we can at least try our best guess.

/Erik
> Thanks,
> Severin
>
>> Thanks,
>> David
>>
>> On 5/09/2018 11:12 PM, Severin Gehwolf wrote:
>>> Hi,
>>>
>>> Cross-posting this review-thread on core-libs-dev and build-dev as
>>> this
>>> is a build change, but affects fdlibm which is core-libs.
>>>
>>> With JDK-8170153 optimization for fdlibm code has been turned on
>>> for
>>> ppc64 s390 and aarch64. This patch intends to turn it on on all
>>> arches
>>> on Linux. I've not observed any precision issues. Is there a good
>>> reason to not use -O3 -ffp-contract=off everywhere?
>>>
>>> Bug:    https://bugs.openjdk.java.net/browse/JDK-8210416
>>> webrev:
>>> http://cr.openjdk.java.net/~sgehwolf/webrevs/JDK-8210416/webrev.01/
>>>
>>> Testing: - java/lang/Math, java/lang/StrictMath tests (all pass).
>>>            - Currently running through submit repo.
>>>
>>> A simple micro benchmark from JDK-8170153[1] shows these numbers
>>> for
>>> StrictMath:
>>>
>>> Function      | before     | after
>>> ----------------------------------------------
>>> sin           | 0m33.382s  | 0m18.731s
>>> cos           | 0m31.562s  | 0m18.796s
>>> tan           | 0m33.657s  | 0m21.093s
>>> atan          | 0m5.714s   | 0m4.902s
>>> log           | 0m6.212s   | 0m4.439s
>>> log10         | 0m7.946s   | 0m5.543s
>>> sqrt          | 0m0.481s   | 0m0.449s
>>> cbrt          | 0m5.295s   | 0m5.214s
>>> tanh          | 0m1.404s   | 0m1.307s
>>> log1p         | 0m6.457s   | 0m5.131s
>>> IEEEremainder | 0m10.629s  | 0m6.048s
>>> atan2         | 0m8.037s   | 0m5.668s
>>> hypot         | 0m2.171s   | 0m2.147s
>>>
>>> Thoughts?
>>>
>>> Thanks,
>>> Severin
>>>
>>>




More information about the build-dev mailing list