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

Erik Joelsson erik.joelsson at oracle.com
Thu Sep 6 17:55:53 UTC 2018


On 2018-09-06 10:29, Severin Gehwolf wrote:
> On Thu, 2018-09-06 at 09:55 -0700, Erik Joelsson wrote:
> Thanks, Erik. GCC supports -ffp-contract since 4.6. Clang has -ffp-
> contract too. Question is beginning from which version. That's why I'd
> expect for those flags to work on linux. Is there anything else I need
> to check?
>
> Would it be preferred if I moved this into a block like this?
>
> ifeq ($(TOOLCHAIN_TYPE), gcc)
>    [...]
> endif
Yes, making it conditional on toolchain type is what David was after. 
You can also consider adding a capability check if you know that 
versions of the compiler that should still work don't have the feature.

/Erik
> Thanks,
> Severin
>
>> /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 core-libs-dev mailing list