Pharo + Exupery VM + Something else than Accuny

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Pharo + Exupery VM + Something else than Accuny

Damien Cassou
Hi,

I'm playing with the Exupery VM on Pharo. If I change the font to
something else than Accuny, the underlined texts are not underlined
anymore. To reproduce:

- download and use http://ftp.squeak.org/Exupery/vms/exupery-vm-0.15-linux.tz
- go to preferences->fonts->list fonts
- select Bistream Charter/regular/10, and apply
- open monticello and open the Pharo repository

You will see that the installed packages are not underlined anymore.
Switch back to Accuny to see them underlined.

--
Damien Cassou
http://damiencassou.seasidehosting.st

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes-4
And what about the speed improvment ?



2009/3/7 Damien Cassou <[hidden email]>:
> Hi,
>
> I'm playing with the Exupery VM on Pharo. If I change the font to

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Damien Cassou
On Sat, Mar 7, 2009 at 11:57 AM, Hilaire Fernandes <[hidden email]> wrote:
> And what about the speed improvment ?

Should there be any? I haven't played enough with it. If you are
talking about the closures, I don't think I will see any improvement
until the blocks are converted and I haven't done that.

--
Damien Cassou
http://damiencassou.seasidehosting.st

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes-4
I am talking about performance, benchmark, etc.
Is it not Exupery about improving the speed of the VM?


2009/3/7 Damien Cassou <[hidden email]>:

> On Sat, Mar 7, 2009 at 11:57 AM, Hilaire Fernandes <[hidden email]> wrote:
>> And what about the speed improvment ?
>
> Should there be any? I haven't played enough with it. If you are
> talking about the closures, I don't think I will see any improvement
> until the blocks are converted and I haven't done that.
>
> --
> Damien Cassou
> http://damiencassou.seasidehosting.st
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
http://blog.ofset.org/hilaire

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Bryce Kampjes
Hilaire Fernandes writes:
 > I am talking about performance, benchmark, etc.
 > Is it not Exupery about improving the speed of the VM?

Exupery is, these VMs include the support Exupery needs but
the compiler is in the image. If you load and start Exupery
you may see some gains. I haven't yet tuned the background
compiler for practical use, it currently will compile every
method it sees which is great for debugging but not good
for providing a practical speed improvement. Compiled code
takes up more cache than bytecode so there can be a loss due
to compiling methods that are hardly ever used.

Here's the current benchmarks:

  arithmaticLoopBenchmark 390 compiled 80 ratio: 4.875
  bytecodeBenchmark 724 compiled 250 ratio: 2.895
  sendBenchmark 663 compiled 385 ratio: 1.722
  doLoopsBenchmark 381 compiled 235 ratio: 1.621
  pointCreation 394 compiled 389 ratio: 1.013
  largeExplorers 269 compiled 210 ratio: 1.280
  compilerBenchmark 273 compiled 250 ratio: 1.092
  Cumulative Time 413.408 compiled 232.706 ratio 1.777

With these VMs you could load Exupery from either SqueakMap
or Universes and start it. Documentation is here:

  http://wiki.squeak.org/squeak/Exupery

I may add full method inlining next rather than tune for practical
performance. Full method inlining will speed up common sends
extensively.

In summary, there may be a practical performance gain now or there
may not but Exupery is getting close to being seriously useful.

Bryce

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: {Spam?} Re: Pharo + Exupery VM + Something else than Accuny

Schwab,Wilhelm K
Bryce,

I'll play dumb here - actually, I'm not playing in this case :)
 
The little I know about Exupery comes from FAQs.  In the past at least, you cautioned against enabling dynamic compiling of methods, at least in production.  How does that square with full-inlining?  Are they different concepts, or have thing improved enough that you are now confident enough to throw the switch?  Full-inlining sounds like it could consume a lot of space.  Is that a concern, or does the selection of what it compiles keep it manageable?  How does it decide what to compile, and (more relevant to my dumb questions) how does that differ from the dynamic compilation?

Please don't feel attacked - I'm simply trying to understand what is hopefully just around the corner.

Bill



-----Original Message-----
From: [hidden email] [mailto:[hidden email]] On Behalf Of [hidden email]
Sent: Saturday, March 07, 2009 6:55 AM
To: [hidden email]
Subject: {Spam?} Re: [Pharo-project] Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes writes:
 > I am talking about performance, benchmark, etc.
 > Is it not Exupery about improving the speed of the VM?

Exupery is, these VMs include the support Exupery needs but
the compiler is in the image. If you load and start Exupery
you may see some gains. I haven't yet tuned the background
compiler for practical use, it currently will compile every
method it sees which is great for debugging but not good
for providing a practical speed improvement. Compiled code
takes up more cache than bytecode so there can be a loss due
to compiling methods that are hardly ever used.

Here's the current benchmarks:

  arithmaticLoopBenchmark 390 compiled 80 ratio: 4.875
  bytecodeBenchmark 724 compiled 250 ratio: 2.895
  sendBenchmark 663 compiled 385 ratio: 1.722
  doLoopsBenchmark 381 compiled 235 ratio: 1.621
  pointCreation 394 compiled 389 ratio: 1.013
  largeExplorers 269 compiled 210 ratio: 1.280
  compilerBenchmark 273 compiled 250 ratio: 1.092
  Cumulative Time 413.408 compiled 232.706 ratio 1.777

With these VMs you could load Exupery from either SqueakMap
or Universes and start it. Documentation is here:

  http://wiki.squeak.org/squeak/Exupery

I may add full method inlining next rather than tune for practical
performance. Full method inlining will speed up common sends
extensively.

In summary, there may be a practical performance gain now or there
may not but Exupery is getting close to being seriously useful.

Bryce

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes-4
In reply to this post by Bryce Kampjes
2009/3/7  <[hidden email]>:

> With these VMs you could load Exupery from either SqueakMap
> or Universes and start it. Documentation is here:

I installed exupery code in pharo 203, run the test, got 4 errors on
#testBlockBug3, #testBlockNonLocalReturnRecycledContext,
#testDelayWaitStreeTest, #testStressFailure1

Next I did three benchmarks on 3 different setups with DrGeo
MessageTally spyOn [Carre new].

Carre new instanciate a DrGeo canvas with Smalltalk programmed figure,
it results in a self-repeating sketch (see screenshot)

1. image with exupery runned with exupery VM
2. image without exupery runned with stock 3.9 VM
3. image without exupery runned with exupery VM

I used exupery image Damien pointed to in his email.

Do you want the images ?

Hilaire

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

messageTallyDrGeoWithExupery.txt (11K) Download Attachment
test.png (9K) Download Attachment
messageTallyDrGeoWithoutExupery.txt (11K) Download Attachment
messageTallyDrGeoWithoutExuperyWithExuperyVM.txt (11K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes-4
And the fourth benchmark with compiled methods



2009/3/7 Hilaire Fernandes <[hidden email]>:

> 2009/3/7  <[hidden email]>:
>
>> With these VMs you could load Exupery from either SqueakMap
>> or Universes and start it. Documentation is here:
>
> I installed exupery code in pharo 203, run the test, got 4 errors on
> #testBlockBug3, #testBlockNonLocalReturnRecycledContext,
> #testDelayWaitStreeTest, #testStressFailure1
>
> Next I did three benchmarks on 3 different setups with DrGeo
> MessageTally spyOn [Carre new].
>
> Carre new instanciate a DrGeo canvas with Smalltalk programmed figure,
> it results in a self-repeating sketch (see screenshot)
>
> 1. image with exupery runned with exupery VM
> 2. image without exupery runned with stock 3.9 VM
> 3. image without exupery runned with exupery VM
>
> I used exupery image Damien pointed to in his email.
>
> Do you want the images ?
>
> Hilaire
>


--
http://blog.ofset.org/hilaire

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project

messageTallyDrGeoWithExuperyCompiledMethod.txt (12K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes-4
Next I tried the Exupery profiler, but still the benchmark is not as
good as without the compiler.

Hilaire

2009/3/7 Hilaire Fernandes <[hidden email]>:

> And the fourth benchmark with compiled methods
>
>
>
> 2009/3/7 Hilaire Fernandes <[hidden email]>:
>> 2009/3/7  <[hidden email]>:
>>
>>> With these VMs you could load Exupery from either SqueakMap
>>> or Universes and start it. Documentation is here:
>>
>> I installed exupery code in pharo 203, run the test, got 4 errors on
>> #testBlockBug3, #testBlockNonLocalReturnRecycledContext,
>> #testDelayWaitStreeTest, #testStressFailure1
>>
>> Next I did three benchmarks on 3 different setups with DrGeo
>> MessageTally spyOn [Carre new].
>>
>> Carre new instanciate a DrGeo canvas with Smalltalk programmed figure,
>> it results in a self-repeating sketch (see screenshot)
>>
>> 1. image with exupery runned with exupery VM
>> 2. image without exupery runned with stock 3.9 VM
>> 3. image without exupery runned with exupery VM
>>
>> I used exupery image Damien pointed to in his email.
>>
>> Do you want the images ?
>>
>> Hilaire
>>
>
>
>
> --
> http://blog.ofset.org/hilaire
>



--
http://blog.ofset.org/hilaire

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Bryce Kampjes
In reply to this post by Hilaire Fernandes-4
Hilaire Fernandes writes:
 > 2009/3/7  <[hidden email]>:
 >
 > > With these VMs you could load Exupery from either SqueakMap
 > > or Universes and start it. Documentation is here:
 >
 > I installed exupery code in pharo 203, run the test, got 4 errors on
 > #testBlockBug3, #testBlockNonLocalReturnRecycledContext,
 > #testDelayWaitStreeTest, #testStressFailure1
 >
 > Next I did three benchmarks on 3 different setups with DrGeo
 > MessageTally spyOn [Carre new].
 >
 > Carre new instanciate a DrGeo canvas with Smalltalk programmed figure,
 > it results in a self-repeating sketch (see screenshot)
 >
 > 1. image with exupery runned with exupery VM
 > 2. image without exupery runned with stock 3.9 VM
 > 3. image without exupery runned with exupery VM
 >
 > I used exupery image Damien pointed to in his email.
 >
 > Do you want the images ?

Thanks, I'd like to look at the images later but probably not
until after the next release. The decision to work on full
method inlining is a decision to not do much tuning until
after a critical optimisation is in place.

It is possible that running Exupery can slow down code. Normally this
is because it either didn't compile something it needed to for a given
benchmark. In your case it's suspicious that it's only compiled one of
the leaf methods. It's also possible that I need to optimise something
where Exupery is slower than the interpreter, I'm not aware of any
such cases but further profiling may find some.

Bryce

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: {Spam?} Re: Pharo + Exupery VM + Something else than Accuny

Bryce Kampjes
In reply to this post by Schwab,Wilhelm K
Schwab,Wilhelm K writes:
 > Bryce,
 >
 > I'll play dumb here - actually, I'm not playing in this case :)
 >  
 > The little I know about Exupery comes from FAQs.  In the past at least, you cautioned against enabling dynamic compiling of methods, at least in production.  How does that square with full-inlining?  Are they different concepts, or have thing improved enough that you are now confident enough to throw the switch?  Full-inlining sounds like it could consume a lot of space.  Is that a concern, or does the selection of what it compiles keep it manageable?  How does it decide what to compile, and (more relevant to my dumb questions) how does that differ from the dynamic compilation?
 >
 > Please don't feel attacked - I'm simply trying to understand what is hopefully just around the corner.

What's changed is I've fixed a few bugs. It's possible that Exupery
is reliable. I've yet done enough testing to be sure but since the
last fix I haven't yet seen Exupery cause a crash. I'm confident
enough to throw the switch.

By full inlining all I mean is the ability to inline entire methods.
Exupery will already dynamically inline the primitives it compiles to
machine code. Dynamic inlining is the critical optimisation to allow
further optimisations, without it the compiler can only see a method
or a block at a time. It can't see where the loops are as they're
probably in a different method as with #do: loops. This really
limits the optimisations that can be performed later.

Full inlining will be driven by profiling so it's only the hot spots
that should get inlined, at least after I've tuned the
profiler. Inlining can sometimes reduce the amount of code
executed. For small methods it's easy to spend more code on the
message send than is consumed by the method body. Initially it's
likely the profiler will make bad inlining decisions like the current
profiler will compile every method seen eventually which is probably
bad for performance, compiling everything at least doesn't avoid
compiling infrequent methods that may trigger a compiler bug.

Full method inlining is a form of dynamic compilation. It lets the
dynamic compiler inline entire methods when it sees the need.

Bryce.

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Pharo + Exupery VM + Something else than Accuny

Hilaire Fernandes-4
In reply to this post by Bryce Kampjes
It will be great.

Hilaire

2009/3/7  <[hidden email]>:

> Hilaire Fernandes writes:
>  > 2009/3/7  <[hidden email]>:
>  >
>  > > With these VMs you could load Exupery from either SqueakMap
>  > > or Universes and start it. Documentation is here:
>  >
>  > I installed exupery code in pharo 203, run the test, got 4 errors on
>  > #testBlockBug3, #testBlockNonLocalReturnRecycledContext,
>  > #testDelayWaitStreeTest, #testStressFailure1
>  >
>  > Next I did three benchmarks on 3 different setups with DrGeo
>  > MessageTally spyOn [Carre new].
>  >
>  > Carre new instanciate a DrGeo canvas with Smalltalk programmed figure,
>  > it results in a self-repeating sketch (see screenshot)
>  >
>  > 1. image with exupery runned with exupery VM
>  > 2. image without exupery runned with stock 3.9 VM
>  > 3. image without exupery runned with exupery VM
>  >
>  > I used exupery image Damien pointed to in his email.
>  >
>  > Do you want the images ?
>
> Thanks, I'd like to look at the images later but probably not
> until after the next release. The decision to work on full
> method inlining is a decision to not do much tuning until
> after a critical optimisation is in place.
>
> It is possible that running Exupery can slow down code. Normally this
> is because it either didn't compile something it needed to for a given
> benchmark. In your case it's suspicious that it's only compiled one of
> the leaf methods. It's also possible that I need to optimise something
> where Exupery is slower than the interpreter, I'm not aware of any
> such cases but further profiling may find some.
>
> Bryce
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>



--
http://blog.ofset.org/hilaire

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project