concurrent programming1

38
Highly Concurrent Programming Nick Brandaleone Lecture 1

Upload: nick-brandaleone

Post on 22-Apr-2015

100 views

Category:

Software


0 download

DESCRIPTION

Concurrent or Parallel Programming slides for university course (lecture 1).

TRANSCRIPT

Page 1: Concurrent programming1

Highly Concurrent ProgrammingNick Brandaleone Lecture 1

Page 2: Concurrent programming1
Page 3: Concurrent programming1

The End of Moore’s Law

Page 4: Concurrent programming1

The End of Moore’s Law

Why we don’t have 10 GHz chips today

Chips are too big

Signals can no longer reach the whole chip in a clock cycle

Problems with heat dissipation

Page 5: Concurrent programming1

The Multicore Era

Manufactures have turned towards multi-core processors in order to increase speed

They are capable of doing multiple calculations in parallel

CPU speeds are likely to stay relatively flat

Page 6: Concurrent programming1
Page 7: Concurrent programming1

The Concurrency RevolutionIntel HyperThreading - hardware supported

Future computer architectures will have greater number of cores, from the desktop (12 typical for workstation) to the smartphone (2 in iPhone)

You will need to develop well-written concurrent applications to gain from this hardware development

Page 8: Concurrent programming1

Vocabulary

Parallelism

Programming as the simultaneous execution of (possibly related) computations

Concurrency

Programming as the composition of independently executing processes

Page 9: Concurrent programming1
Page 10: Concurrent programming1
Page 11: Concurrent programming1
Page 12: Concurrent programming1

Shared State ConcurrencyThreads concurrently execute code

Contains resources that must be shared

Synchronization is required via locks

Data consistency

Visibility

Correct ordering

Page 13: Concurrent programming1
Page 14: Concurrent programming1

Why locking is evil“non-trivial multi-threaded programs are incomprehensible to human …” - Edward A. Lee, The Problem with Threads

“humans are quickly overwhelmed by concurrency and find it much more difficult to reason about concurrent than sequential code” - Sutter and Larus

“I have a firm belief that locking primitives are evil”

Page 15: Concurrent programming1
Page 16: Concurrent programming1

Message Passing

Carl Hewitt, Richard Steiger and Peter Bishop released a paper in 1973 introducing the Actor Model concept

C.A.R. Hoare: Communicating Sequential Processes (CSP). Introduced in 1978.

Very similar concepts. We shall refer to them both as “message passing” (aka process calculus)

Page 17: Concurrent programming1
Page 18: Concurrent programming1
Page 19: Concurrent programming1
Page 20: Concurrent programming1

Alternative ModelsLanguage Method

Erlang Actors

Go Concurrent Sequential Processing

Clojure Software Transactional Memory

Icon Coexpressions

Page 21: Concurrent programming1

Key Concepts

Actors (or go routines) instead of objects

No shared state between actors

Asynchronous message-passing

Share memory by communicating

Page 22: Concurrent programming1

Amdahl’s Law

Page 23: Concurrent programming1

Goals for this course:Learn Concurrent Programming using CSP/Actor model Become familiar with concurrent programming idioms

All assignments can be fulfilled using Language of choice •Elixir (Erlang) •Go (the new “C”) •Scala (Java) •Haskell (purely functional)

Grade •Weekly HW •Mid-term quiz •Final Project

Page 24: Concurrent programming1

The Languages

Page 25: Concurrent programming1

ErlangA functional, dynamically typed language

Invented at Ericsson in 1986

Designed for concurrency, scalability and reliability

Page 26: Concurrent programming1

Erlang in the real worldEricsson ATM switch (301 model)

99.9999999 percent uptime

Facebook chat

100s of millions concurrent users

RabbitMQ

High performance AMQP

Apache CouchDB

distributed, fault-tolerant document DB

Page 27: Concurrent programming1
Page 28: Concurrent programming1
Page 29: Concurrent programming1

Syntactic Sugar for Erlang

Page 30: Concurrent programming1

Elixir example

Page 31: Concurrent programming1

Go LanguageDeveloped by Rob Pike, formerly of Bell Labs

Statically compiled and typed language, loosely based upon C syntax

Supports Garbage Collection, and Concurrency

Used internally at Google

Strong community support and documentation

Page 32: Concurrent programming1

Go example

Page 33: Concurrent programming1

Scala

The new “Java”. Runs on Java VM

Object oriented and functional design

Very flexible

Can use Java libraries

Syntax can be tough due to mix of OO and F

Page 34: Concurrent programming1

Scala example

Page 35: Concurrent programming1

Haskell

Purely functional programming language

Built-in support for concurrency and parallelism

Typically used more in research community than commercially

Powerful but confusing syntax

Page 36: Concurrent programming1

Haskell example

Page 37: Concurrent programming1

FUNCTIONAL VS IMPERATIVE OR OOPROGRAMMING STYLES

Page 38: Concurrent programming1

Homework

Research language that you would like to use

Watch http://blog.golang.org/concurrency-is-not-parallelism video by Rob Pike

Work on Assignment #1 for next week