Message Passing Concurrency Shootout Dr Kevin Chalmers School of - - PowerPoint PPT Presentation

message passing concurrency shootout
SMART_READER_LITE
LIVE PREVIEW

Message Passing Concurrency Shootout Dr Kevin Chalmers School of - - PowerPoint PPT Presentation

Message Passing Concurrency Shootout Dr Kevin Chalmers School of Computing Edinburgh Napier University Edinburgh k.chalmers@napier.ac.uk Background We have talked about trying to get more ideas out from this community for a number of


slide-1
SLIDE 1

Message Passing Concurrency Shootout

Dr Kevin Chalmers

School of Computing Edinburgh Napier University Edinburgh k.chalmers@napier.ac.uk

slide-2
SLIDE 2

Background

❼ We have talked about trying to get more ideas out from this community for

a number of years

❼ Recently there has been a number of languages providing some form of

message passing concurrency model

❼ Google’s Go being the most prominent example

❼ Many claim CSP or other process calculi as inspiration ❼ I was having lunch with Adam Sampson around spring time and he

mentioned another language - nim

❼ This got me thinking about comparing these different languages with

regards to their message passing concurrency support - so I came up with a project idea

slide-3
SLIDE 3

Idea

❼ Initially I had the thought of looking at all message passing languages and

support libraries

❼ I now think this is too ambitious - so let us just concentrate on languages ❼ I’m essentially interested in 3 areas:

1 The languages actual adherence to their process calculi roots 2 The simplicity of the language to write programs in a message passing style 3 Performance metrics

slide-4
SLIDE 4

Questions

1 How well supported are the primitives and ideas of CSP, CCS, and the

π-calculus in the range of languages supporting message passing concurrency?

2 What are the metrics of the languages supporting message passing

concurrency?

slide-5
SLIDE 5

Languages - have to have a Linux compiler

❼ Ada ❼ Ateji PX ❼ Clojure ❼ D ❼ Elixir ❼ Ensemble ❼ Erlang ❼ Go ❼ Guppy ❼ Hume ❼ Kilim ❼ Hume ❼ Limbo ❼ Nim ❼ occam-pi ❼ Oz ❼ ProcessJ ❼ Perl ❼ Rust ❼ Unicon

slide-6
SLIDE 6

Features

❼ Message passing support (this is the minimum criteria) ❼ Type of message passing support - synchronous and/or asynchronous ❼ First Order Channels (not all languages provide a channel construct) ❼ Higher Order Channels (channels that can send channels) ❼ First order processes ❼ Higher order processes (channels can send processes) ❼ Parallel execution statement ❼ Process ownership (e.g. a process cannot complete until all its child

processes have)

❼ Selection on incoming messages ❼ Other selection types? (e.g. skip, timeout) ❼ Selection on outgoing messages ❼ Multiway synchronisation

slide-7
SLIDE 7

Metrics - initial ideas

❼ Channel communication time ❼ Channel selection time ❼ Lines of code ❼ Speedup and efficiency ❼ Memory usage ❼ CPU utilisation

slide-8
SLIDE 8

Test Applications - just ideas at the moment

❼ Commstime ❼ Stessed alt ❼ Dining philosophers ❼ N-body ❼ Monte Carlo simulation ❼ etc.

slide-9
SLIDE 9

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ ❼ ❼ ❼ ❼ ❼ ❼

slide-10
SLIDE 10

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ ❼ ❼ ❼ ❼ ❼

slide-11
SLIDE 11

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ I need people to write applications ❼ ❼ ❼ ❼ ❼

slide-12
SLIDE 12

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ I need people to write applications ❼ And do some writing ❼ ❼ ❼ ❼

slide-13
SLIDE 13

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ I need people to write applications ❼ And do some writing ❼ So that’s what I want people to do - work ❼ ❼ ❼

slide-14
SLIDE 14

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ I need people to write applications ❼ And do some writing ❼ So that’s what I want people to do - work ❼ I have a GitHub repo set up for people to join ❼ ❼

slide-15
SLIDE 15

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ I need people to write applications ❼ And do some writing ❼ So that’s what I want people to do - work ❼ I have a GitHub repo set up for people to join ❼ We’ll create an arxiv report detailing all the results ❼

slide-16
SLIDE 16

Workshop

❼ The aim is to produce a journal paper around these results - a state of the

art article on message passing concurrency

❼ But this is a big job ❼ I need people to write applications ❼ And do some writing ❼ So that’s what I want people to do - work ❼ I have a GitHub repo set up for people to join ❼ We’ll create an arxiv report detailing all the results ❼ And write the journal around the interesting bits

slide-17
SLIDE 17

So...

❼ Take out your laptop ❼ Pick a language ❼ And write commstime ❼ Rosetta Stone has examples of Dining Philosophers for many languages ❼ If you want to join the GitHub repo let me know