[erlang-questions] Re: Classification of concurrency patterns
Eric Newhuis (personal)
enewhuis@REDACTED
Wed May 19 15:57:14 CEST 2010
What about leased state concurrency? I think I made that phrase up. I'm thinking Linda and tuplespaces and things like async versions of Javaspaces. ...all having a reduced instruction set. Are these covered in your current list?
On May 19, 2010, at 8:50 AM, Joe Armstrong wrote:
> Found these they are looking at a similar problem
>
> http://www.drdobbs.com/architecture-and-design/224900184
> http://parlab.eecs.berkeley.edu/wiki/patterns/patterns
>
> /Joe
>
>
> On Wed, May 12, 2010 at 9:31 AM, Joe Armstrong <erlang@REDACTED> wrote:
>> I'm interested in trying to classify and name a number of different
>> parallelization strategies.
>>
>> We often use expressions like MPC "message passing concurrency" and
>> SPC "shared state concurrency" this is not what I'm interested in.
>>
>> I'm interested in classifying and naming the strategies we use to
>> write parallel code. We could *implement* these strategies using MPC
>> or SSC.
>>
>> I've chosen my own names for these below, I have no idea if there are
>> standard names for these classifications, this is what I've called them:
>>
>> 1) Divide and conquer concurrency
>> 2) Pipeline concurrency
>> 3) Map reduce concurrency
>> 4) Identical Job concurrency
>> 5) Grid concurrency
>> 6) Job queue concurrency
>>
>> They mean the following:
>>
>> 1) Divide and conquer concurrency
>>
>> Divide the problem into K jobs which can be performed in parallel.
>> Perform the jobs
>> Recombine the results
>>
>> 2) Pipeline concurrency
>>
>> Divide the problem into K jobs that can be performed in a pipeline.
>> The output of the first job must be the input of the second and so on.
>> Run all the steps in parallel
>>
>> 3) Map reduce concurrency
>>
>> This is similar to 1). Only the recombination step involves
>> merging results that
>> have the same Key.
>>
>> 4) Identical Job concurrency
>>
>> Here the problem does not have to be split into K parts, we
>> already have N identical
>> jobs to do (identical means jobs that will consume similar resources)
>>
>> There is no recombination step. There are N results.
>>
>> 5) Grid concurrency
>>
>> Divide the problem into N*M identical jobs that can be solved on a
>> NxM grid of processors.
>> Each processor can only talk to its direct neighbors
>>
>> 6) Job queue concurrency
>>
>> Divide the problem into a set of named workers (who do jobs). Each
>> worker has an input
>> job queue. Workers consume jobs from their job queues and send the
>> result to other workers.
>>
>> Note: [1] Paul Morrison calls this flow based programming
>> [2] This is AMQP
>>
>>
>> ----
>>
>>
>> That was my first attempt at naming and classifying these patterns.
>>
>> I'd be interested to know alternative names for the same things, and
>> names of systems that employ
>> the above strategies, and of course missing strategies.
>>
>> If we could name and classify these things then we could start writing
>> gen_divide_and_conquer
>> gen_pipe etc.
>>
>> /Joe
>>
>
> ________________________________________________________________
> erlang-questions (at) erlang.org mailing list.
> See http://www.erlang.org/faq.html
> To unsubscribe; mailto:erlang-questions-unsubscribe@REDACTED
>
More information about the erlang-questions
mailing list