From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: RFC: Prototype for a user threading library in Ada
Date: Fri, 24 Jun 2016 18:00:35 -0500
Date: 2016-06-24T18:00:35-05:00 [thread overview]
Message-ID: <nkke2h$cvf$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: nkinr0$1h8t$1@gioia.aioe.org
Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
news:nkinr0$1h8t$1@gioia.aioe.org...
> On 24/06/2016 00:12, Randy Brukardt wrote:
>
>> That wasn't my question; I'm wondering the motivation for these features
>> in
>> terms of parallelization.
>
> Because fine-grained (tightly coupled) parallelism is dead on arrival if
> you use synchronous exchange. You cannot wait for a response without
> imposing huge accumulating latencies.
Parallelism, in general, is DOA if you need any significant exchange at all.
As you say, that makes the effort effectively sequential. The cases where it
works tend to use order-independent accumlators and fairly large chunks of
accumulation.
>> In today's world, it's impossible to consider any
>> feature in a purely sequential manner. The expressiveness gain (if any)
>> is
>> secondary. And the OP was talking about parallelism, not generators.
>
> Of course you can. Nobody is capable to write anything more or less large
> in a data event-controlled way. All logic of exchanges between parties is
> always strictly sequential: you compute, publish data, get subscribed
> data, compute again.
Right. If there's a lot of exchange, it's not a candidate for parallelism.
>> The generator proposal as expressed in AI12-0197-1 is just too expensive
>> to
>> consider for a purely sequential feature.
>
> I don't see much use in the proposal. The key feature must be the points
> where the "task" yields control, enters non-busy wait for an external
> event. Ideally it must be shaped as an accept statement or an entry call.
Jean-Pierre Rosen proposed a ""passive task" feature as an alternative to
the generator proposal. It uses the existing task syntax, but gets rid of
the thread of control.
Of course, Janus/Ada implements all tasks that way today, so I don't see a
lot of benefit to that. But I can see where it might help other
implementations.
>> For Janus/Ada on Windows, we'd
>> either have to throw away 1/3 of the back-end of the compiler (and
>> generally
>> use slower instructions in some cases, impacting all code), or implement
>> these *exactly* as we do tasks (with a TCB, context switching, and so
>> on).
>> [Not to mention the extensive changes needed to the front-end.] For
>> something to be worth that sort of effort, it has to benefit a large
>> percentage of programs. This (as a purely sequential feature) doesn't do
>> that.
>
> I don't understand the point. All tasks are sequential. That didn't
> prevent them being used in parallel computing.
The feature as proposed can't be used in a task unless one (manually) adds
locking, meaning you still have all of the possibilities for deadlock and
race conditions. I believe that if we're going to advance parallelism at
all, we have to do something to make it possible to write (sufficiently
restricted and compile-time checked) code where one doesn't need to worry
about those things. After all, the main reason that it's too hard to write
parallel code is the need to carefully consider every possible deadlock and
race condition. Otherwise, something like Parafin would provide everything
needed and Ada clearly would be the choice for parallel code. ;-)
So I don't see any reason to add any new sequential features that add to,
rather than reduce, the possibilities of deadlock and races. Certainly not
if they take a lot of effort to implement, and don't seem to have general
utility.
Randy.
next prev parent reply other threads:[~2016-06-24 23:00 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-17 9:44 RFC: Prototype for a user threading library in Ada Hadrien Grasland
2016-06-17 16:18 ` Niklas Holsti
2016-06-17 16:46 ` Dmitry A. Kazakov
2016-06-18 8:16 ` Hadrien Grasland
2016-06-18 8:47 ` Dmitry A. Kazakov
2016-06-18 9:17 ` Hadrien Grasland
2016-06-18 11:53 ` Dmitry A. Kazakov
2016-06-20 8:23 ` Hadrien Grasland
2016-06-20 9:22 ` Dmitry A. Kazakov
2016-06-23 1:42 ` Randy Brukardt
2016-06-23 8:39 ` Dmitry A. Kazakov
2016-06-23 22:12 ` Randy Brukardt
2016-06-24 7:34 ` Dmitry A. Kazakov
2016-06-24 23:00 ` Randy Brukardt [this message]
2016-06-25 7:11 ` Dmitry A. Kazakov
2016-06-26 2:02 ` rieachus
2016-06-26 6:26 ` Dmitry A. Kazakov
2016-06-24 0:38 ` rieachus
2016-06-25 6:28 ` Dmitry A. Kazakov
2016-06-26 1:34 ` rieachus
2016-06-26 3:21 ` Randy Brukardt
2016-06-26 6:15 ` Dmitry A. Kazakov
2016-06-28 20:44 ` Anh Vo
2016-07-02 4:13 ` Randy Brukardt
2016-07-02 10:25 ` Dmitry A. Kazakov
2016-07-05 21:53 ` Randy Brukardt
2016-07-06 9:25 ` Dmitry A. Kazakov
2016-07-07 0:32 ` Randy Brukardt
2016-07-07 6:08 ` Niklas Holsti
2016-07-08 0:03 ` Randy Brukardt
2016-07-08 7:32 ` Dmitry A. Kazakov
2016-07-11 19:40 ` Randy Brukardt
2016-07-12 8:37 ` Dmitry A. Kazakov
2016-07-12 21:31 ` Randy Brukardt
2016-07-08 20:17 ` Niklas Holsti
2016-06-24 21:06 ` Hadrien Grasland
2016-06-26 3:09 ` Randy Brukardt
2016-06-26 6:41 ` Dmitry A. Kazakov
2016-07-02 4:21 ` Randy Brukardt
2016-07-02 10:33 ` Dmitry A. Kazakov
2016-07-05 21:24 ` Randy Brukardt
2016-07-06 13:46 ` Dmitry A. Kazakov
2016-07-07 1:00 ` Randy Brukardt
2016-07-07 14:23 ` Dmitry A. Kazakov
2016-07-07 23:43 ` Randy Brukardt
2016-07-08 8:23 ` Dmitry A. Kazakov
2016-07-11 19:44 ` Randy Brukardt
2016-06-26 9:09 ` Hadrien Grasland
2016-07-02 4:36 ` Randy Brukardt
2016-07-02 5:30 ` Simon Wright
2016-07-05 21:29 ` Randy Brukardt
2016-07-02 11:13 ` Hadrien Grasland
2016-07-02 13:18 ` Dmitry A. Kazakov
2016-07-02 16:49 ` Hadrien Grasland
2016-07-02 21:33 ` Niklas Holsti
2016-07-03 20:56 ` Hadrien Grasland
2016-07-02 17:26 ` Niklas Holsti
2016-07-02 21:14 ` Niklas Holsti
2016-07-03 7:42 ` Hadrien Grasland
2016-07-03 8:39 ` Dmitry A. Kazakov
2016-07-03 21:15 ` Hadrien Grasland
2016-07-04 7:44 ` Dmitry A. Kazakov
2016-07-05 21:38 ` Randy Brukardt
2016-06-21 2:40 ` rieachus
2016-06-21 7:34 ` Dmitry A. Kazakov
2016-06-18 7:56 ` Hadrien Grasland
2016-06-18 8:33 ` Hadrien Grasland
2016-06-18 11:38 ` Hadrien Grasland
2016-06-18 13:17 ` Niklas Holsti
2016-06-18 16:27 ` Jeffrey R. Carter
2016-06-20 8:42 ` Hadrien Grasland
2016-07-10 0:45 ` rieachus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox