RFR: JDK-8155618 aarch32: implement CRC32 intrinsics
Alex Kashchenko
akashche at redhat.com
Fri Apr 29 17:43:49 UTC 2016
Hi Andrey,
On 04/29/2016 03:59 PM, Andrey Petushkov wrote:
> Hi Alex,
>
> In the meanwhile I’ve found one bug in the cc32-based implementation, which is exactly the one chosen on rpi3 by default. Could you please reapply the patch from the same location. Please let me know if the problem persists
I restarted the builds with the new patch. I haven't look at the details
or a minimal reproducer yet - will wait for the new builds to finish.
>
> Great thanks,
> Andrey
>
>> On 29 Apr 2016, at 01:34, Alex Kashchenko <akashche at redhat.com> wrote:
>>
>> Hi Andrey,
>>
>> On 04/28/2016 11:49 AM, Andrey Petushkov wrote:
>>> Dear Ed, All,
>>>
>>> Please consider the below patch to implement intrinsics for CRC32 functionality
>>> All 3 possible implementations are provided: generic cpu, neon and crc32 ARM v8 instruction based.
>>> The evaluated performance gain of the calculation itself is the following:
>>> cortex a7 a8 a53
>>> c 123.487 132.013 309.565
>>> asm 131.755 7% 141.297 7% 307.401 -1%
>>> neon 118.91 -4% 159.718 21% 479.442 55%
>>> crc32 1361.446 343%
>>> As you can see there is no benefit in using neon on Cortex A7 (and presumably A5). So neon is turned on by default only on Cortex A8 and above
>>>
>>> The above numbers are for CRC calculation itself, so elimination of JNI overhead provides additional benefit. E.g. on Cortex A7 the generic asm implementation gives the below benefit:
>>>
>>> buffer size + ops/s
>>> Xint 128 20.56%
>>>
>>> 512 18.06%
>>>
>>> 1024 14.66%
>>>
>>> 1048576 5.52%
>>>
>>>
>>>
>>> Xcomp Xbatch 128 77.85%
>>>
>>> 512 32.63%
>>>
>>> 1024 20.53%
>>>
>>> 1048576 6.59%
>>>
>>> The patch is here:
>>> http://cr.openjdk.java.net/~snazarki/8155618/ <http://cr.openjdk.java.net/~snazarki/8155618/> <http://cr.openjdk.java.net/~snazarki/8155618/ <http://cr.openjdk.java.net/~snazarki/8155618/>>
>>
>> I am getting the following error in bootcycle build with this patch on Raspberry Pi 3:
>>
>> - crash log: http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/hs_err_pid13951.log <http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/hs_err_pid13951.log>
>> - build log: http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/201604280_rpi3_rpm.log.xz <http://cr.openjdk.java.net/~akasko/aarch32/jdk8u/8155618/201604280_rpi3_rpm.log.xz>
>>
>> I don't have any more details now, builds on all other devices are still in progress. This is the first time I see any problems with the build after prec1 change, so it may well be an incorrect patching or a hardware glitch.
>>
>> --
>> -Alex
>
>
--
-Alex
More information about the aarch32-port-dev
mailing list