You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Xiao-Feng Li <xi...@gmail.com> on 2008/08/21 08:13:00 UTC
Re: [jira] Commented: (HARMONY-5901) replace integer multiplication or division with shift if one of multipliers or divisor is a power of 2
On Thu, Aug 21, 2008 at 12:30 PM, Xiaoming Gu (JIRA) <ji...@apache.org> wrote:
>
> [ https://issues.apache.org/jira/browse/HARMONY-5901?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12624249#action_12624249 ]
>
> Xiaoming Gu commented on HARMONY-5901:
> --------------------------------------
>
> Hi, guys. I'm working on the strength reduction for MUL & DIV these days.
>
> I found the optimization is available in simplify.cpp and multiplybyconstant.cpp but it is not turned on. Then I turned on it by simply changing "simplify" to "latesimplify" in .emconf files. To turn on DIV reduction, it needs to delete #ifdef __IPF__ around the related code. I did some tests with the benchmarks by Stefan Krause (http://www.stefankrause.net/wp/?m=200807) yesterday and following are the details.
>
> ++++++++++++Using latest version of Harmony, -Xem:opt++++++++++
> mandelbrot_long 2547(msec)
> fannkuch_long 5437
> himeno_bench2 26518
> nbody_long 8468
> spectralnorm_long 14967
>
> As mentioned before there is an opportunity for DIV reduction in spectralnorm_long.
> ++++++++++++Manually transformed spectralnorm_long using latest version of Harmony, -Xem:opt++++++++++
> spectralnorm_long 8905(msec)
>
> Then I turned on the available MUL and DIV reduction
> ++++++++++++Using latest version of Harmony, -Xem:opt but MUL & DIV reduction turned on++++++++++
> mandelbrot_long 2547(msec)
> fannkuch_long 5453
> himeno_bench2 26987
> nbody_long 19342
> spectralnorm_long 8765
>
> The inputs for these tests are
> +++++++++++++Input++++++++++++++
> mandelbrot_long 4000
> fannkuch_long 11
> himeno_bench2 M (more options "-Xmx1024m -Xms1024m" needed)
> nbody_long 19900001
> spectralnorm_long 5501
>
> From the above results, spectralnorm_long is improved a lot by the available reduction even better than the manual transformation. But fannkuch_long and himeno_bench2 are degraded a little and nbody_long is degraded a lot. After breifly reading the reduction code, I find the cost model for reduction is missing and the reduction is always done if it's turned on. Maybe that's why the available reduction is turned off in all emconf files. Does anyone know about this available reduction? Why it is turned off by default? Thanks.
Thanks for the experiments and the discovery. I think you can decide
if we want to improve the cost model or have a butter solution.
Thanks.
-xiaofeng
>
>> replace integer multiplication or division with shift if one of multipliers or divisor is a power of 2
>> ------------------------------------------------------------------------------------------------------
>>
>> Key: HARMONY-5901
>> URL: https://issues.apache.org/jira/browse/HARMONY-5901
>> Project: Harmony
>> Issue Type: Improvement
>> Components: DRLVM
>> Reporter: Xiaoming Gu
>> Attachments: 5901.patch, H5901-V2.patch, H5901-V3.patch, H5901-V4.patch, H5901-V5.patch
>>
>>
>> 1. Mulitiplication replacement
>> a. It's about integer multiplication.
>> b. One of two multipliers is a power of 2.
>> c. The power of 2 could be negative.
>> For example, 23*4 is transformed to 23<<2 and 23*(-4) is transformed to (23<<2)*(-1).
>> 2. Division replacement
>> a. It's about integer division.
>> b. The divisor is a power of 2.
>> c. The power of 2 could be negative.
>> d. Because of round-up difference between division and shift right, the following equations from Aleksey are used.
>> Baseline: q = a / (1 << d);
>> Optimized: q = (a + [(1 << d) - 1] & (a >> 31)) >> d;
>> For example, 23/4 is transformed to (23+((1<<2)-1)&(23>>31))>>2. and (-23)/(-4) is transformed to ((-23+((1<<2)-1)&(-23>>31))>>2)*(-1).
>> 3. Comments for SAR and SHR swapped
>> The comments for the two similar operations were misplaced in working_vm/vm/port/src/encoder/ia32_em64t.
>
> --
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>
--
http://xiao-feng.blogspot.com