On Thu, Aug 21, 2008 at 12:30 PM, Xiaoming Gu (JIRA) <[EMAIL PROTECTED]> 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

Reply via email to