Hi Armin:


________________________________
 From: Armin Rigo <[email protected]>
To: Andrew Francis <[email protected]> 
Cc: PyPy Developer Mailing List <[email protected]> 
Sent: Monday, January 9, 2012 8:03 AM
Subject: Re: [pypy-dev] STM
 
Hi Andrew,

On Sun, Jan 8, 2012 at 21:24, Andrew Francis <[email protected]> wrote:

AF> A silly question? What is the paper you are discussing?

>The Problem with Threads, Edward A. Lee, EECS 2006.

Thanks!

AF> Perhaps this is off-topic, in  non-trivial stackless programme using
AF> cooperative scheduling, unless you explicitly impose a logical ordering, it 
is difficult to predict
AF> when a particular tasklet will  run. The round-robin doesn't mean much.

>Ok, so basically no real Stackless program relies on a particular order 
>anyway.  This is in 
>line with what I expected.

Yes.

Even taking into consideration stuff like channel preferences, I think it is 
difficult to second guess
the scheduler based in even a moderately complex application. Where you really 
see the philosophy of
scheduler as an opaque entity is in the Bell Labs family of languages (Go 
included).  The reasons I
mention Go is that they are tackling the multiple CPU issue (albeit differently 
from what is proposed
here) and it and Stackless share family resemblances. 

Now what I believe is a bigger issue is rationalising the relationship between 
scheduler(s), 
tasklets, and threads. Again, maybe  STM solutions can be tested with an 
inexpensive 
prototype.

AF> If I understand what you are proposing, the problem I see with yielding in
AF> the coarse-grained tasklet-as-transaction, is that you probably need more
AF> machinery to ensure ACID properties, since you are now getting thread
AF> interweaving and potential race conditions.

>Yes, and this machinery is exactly what STM libraries offer.  Given
>that you have multiple transactions that can *mostly* occur in
>parallel, STM ensures that in *all* cases, it will look like the
>transactions have been run serially, while actually performing them in
>parallel under the hood.

A rich STM library like rstm offers a variety of techniques for making this 
happen. 
On the other hand, the Transactional specification has very specific (and maybe 
more
conservative) ways of achieving serialisation and race-free programmes. My gut 
feeling 
is that it is difficult to get a one size fits all solution. Maybe an interim 
solution is to get
to a stage where one has a prototype that allows for pluggable STM solutions? A 
"try before you
buy"strategy.

I am also not clear on whether a STM interface exposed to a Python programmer 
will be 
the same as STM (and other techniques, say lock-free data structures) used 
internally to 
support multiple processors.

I think this is an exciting time for stuff like PyPy/Stackless!

Cheers,
Andrew
_______________________________________________
pypy-dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to