Brave New Concurrent World

20
Brave New Concurrent World Webcamp Ljubljana [email protected]

description

[talk from Webcamp Ljubljana 2009] A non-apologetic treatise on how to think concurrency. Contains exotic languages, swearing, and only a passing relevance to the web.

Transcript of Brave New Concurrent World

Page 1: Brave New Concurrent World

Brave New Concurrent World

Webcamp Ljubljana [email protected]

Page 2: Brave New Concurrent World

Why should you give a fuck?

• More data > better algorithms

• Moore’s Law: from GHz to cores

• Conventional computation models are badly broken

Page 3: Brave New Concurrent World

Some big ideas in concurrency

Page 4: Brave New Concurrent World

Decouple temporal and spital order

Page 5: Brave New Concurrent World

a*(b*c)=(a*b)*c a+b=b+a

Associativity v. commutativity

Page 6: Brave New Concurrent World

• First/rest• Linked lists

• Partitions• trees

Linear v. multi-way decomposition

Page 7: Brave New Concurrent World

• Recursive updates • Map to singelton solutions

• Merge subsolutions

Accumulation v. merging

Page 8: Brave New Concurrent World

The future is a function of the past, it doesn’t change it

Page 9: Brave New Concurrent World

Identity is an illusion

There is no enduring changing entity

Page 10: Brave New Concurrent World

Immutable values

• Copy on change (pure functions)– State transitions never disturb prior– Structure sharing where possible

• Never need synchronization

Page 11: Brave New Concurrent World

Forget everything you know about performance

Page 12: Brave New Concurrent World

Do redundant operationsto reduce communication

Page 13: Brave New Concurrent World

Take extra space to permittemporal decoupling

Page 14: Brave New Concurrent World
Page 15: Brave New Concurrent World

Map/reduce

Concurrency in practice

Page 16: Brave New Concurrent World
Page 17: Brave New Concurrent World

Fine granularity

N(map tasks) >> N(machines)

Page 18: Brave New Concurrent World

Fault tolerance viare-execution

Page 19: Brave New Concurrent World

Refinements

• Redundant execution

• Locality optimizations– Master scheduler

Page 20: Brave New Concurrent World

How not to get (completely) ass-raped in the near future

• Functional programming

• Smart(er) compilers/run-times

Erlang, Clojure, (Haskell, Go, Fortress, ...)