[Truffle] Eliminating Calls to Side-Effect Free Methods?

Stefan Marr java at stefan-marr.de
Wed Mar 12 23:49:35 UTC 2014


Hi Andreas:

On 12 Mar 2014, at 20:14, Andreas Woess <andreas.woess at jku.at> wrote:

> That's an indicator that a FrameSlot is not truly constant.
> -G:+DumpOnError should provide more context. My first suspicion would be
> SBlock.outerSelfSlot.

Yes, indeed. I guess a good rule to advocate for would be that FrameSlot should stay with the nodes.

With that fixed, you are my hero! (for the moment, there is more to be done ;))

The fix you proposed for the PE gives a massive improvement across the board.
Runtime decreases on average by 22% (max. 67%), DeltaBlue down by 43%, Richards down by 31%.

http://som-speed.stefan-marr.de/comparison/?exe=9%2BL%2Bmaster%2C11%2BL%2Bmaster&ben=83%2C47%2C106%2C37%2C111%2C85%2C93%2C91%2C94%2C64%2C87%2C97%2C69%2C88%2C105%2C77%2C59%2C74%2C41%2C73%2C110&env=1&hor=true&bas=11%2BL%2Bmaster&chart=normal+bars

http://som-speed.stefan-marr.de/changes/?tre=3&rev=c002b9be8bbed2ecf0c7a3fce93f9c108563e73e&exe=9&env=1

This makes TruffleSOM finally competitive with RTruffleSOM.
I still need to address the issues with object fields however.
Will look at what Chris did for Ruby, I think.

The only other remaining strange outlier is the Recurse benchmark.
Haven’t had the time to look into it, hope to get to it over the weekend.

Thanks again!
Stefan

PS: I haven’t looked into it further, but I think all the tracing code is terribly fragile. Just from looking at it, it looks strangely hardcoded, and with the changed PE, I get a lot of null pointers, and cast errors when I enable.


> 
> - andreas
> 
> On 2014-03-12 19:42, Stefan Marr wrote:
>> Hi Andreas:
>> 
>> On 12 Mar 2014, at 18:24, Andreas Woess <andreas.woess at jku.at> wrote:
>> 
>>> find here a proposed fix to the PE:
>>> https://gist.github.com/woess/d3276080dc18f8926f2f
>> Thanks. Not sure whether that’s your patch, or whether it is something in my code, but most benchmarks break with this error:
>> 
>> [truffle] opt fail         Method BubbleSort>>#$block method::/home/smarr/.local/SOM/Examples/Benchmarks//BubbleSort.som:34 at 33cb5951|Reason com.oracle.graal.nodes.util.GraphUtil$2: The location argument could not be resolved to a constant. 
>> 
>> Will try to look into it later tonight.
>> 
>>> and here a small patch for TruffleSOM:
>>> https://gist.github.com/woess/90ff49f009f182c5276e
>>> that gave me a nice speedup on your dispatch benchmark.
>> Is applied.
>> 
>> Thanks
>> Stefan
>> 
>> 
> 

-- 
Stefan Marr
INRIA Lille - Nord Europe
http://stefan-marr.de/research/





More information about the graal-dev mailing list