1 / 34

Multilisp: Concurrent Functional Programming

Explore the features and benefits of Multilisp, a dialect of the Scheme language that supports concurrent functional programming. Discover how Multilisp offers explicit concurrency constructs, minimal additional syntax, and maximum flexibility for parallel function application.

alafrance
Télécharger la présentation

Multilisp: Concurrent Functional Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ed Walters and Tim Richards University of Massachusetts Amherst Multilisp: Concurrent Functional Programming

  2. Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?

  3. Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?

  4. What is Multilisp? Dialect of Scheme language Functional Programming Limited Side-effects Garbage Collection Extensions for Concurrency Parallel Function Application Futures Reference: R. Halstead, TOPLAS, Vol. 7, No. 4, 1985.

  5. Goal of Multilisp Explicit Constructs for Concurrency Adhere to Scheme Philosophy No Additional Syntax Minimal Additional Semantics Maximum Flexibility Granularity Backwards-compatibility

  6. Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?

  7. The Scheme Language Descendent of Lisp (LISt Processing) Created by Steele and Sussman (1975) Important Features: Extended Lambda Calculus Lexical Scoping Functions are first-class

  8. Important Terms Expression: Basic unit of Scheme code (e.g., List or integer) Evaluation: Scheme expressions evaluate to a value upon execution Application: Function call on a list, i.e. apply first element to rest of list (f a b c) => f(a, b, c)

  9. Brief Scheme Syntax Function definition (define f (lambda (x) … )) Function application (f x) Conditionals (if x y z) Symbols and Atomic Elements ‘x, 3

  10. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  11. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  12. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  13. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  14. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  15. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  16. Scheme Example: Fib (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (fib (- x 1)) (fib (- x 2))))))) (fib 10) => 89

  17. Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?

  18. Parallel Calls pcall: Parallel function application Syntax: (pcall F A B C) Semantics: Evaluate F, A, B, C in parallel Apply F to A, B, C (F A B C)

  19. Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))

  20. Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))

  21. Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))

  22. Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))

  23. Parallel Calls: Example (define div-and-conq (lambda (x) (if (base-case x) x (pcall combine-results (div-and-conq (- x 1)) (div-and-conq (- x 5))))))

  24. Futures future: contract to deliver parallel computation Syntax: (future <exp>) Semantics: Evaluate <exp> concurrently with calling program Return reference to future immediately Block if value of <exp> is required

  25. Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89

  26. Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89

  27. Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89

  28. Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89

  29. Futures: Example (define fib (lambda (x) (if (= x 1) 1 (if (= x 2) 2 (+ (future (fib (- x 1))) (future (fib (- x 2)))) )))) (fib 10) => 89

  30. More Details pcall can be implemented using future Facilitates multiple concurrent programming paradigms: Cilk-style Message Passing Futures somewhat resemble Lazy Evaluation Evaluation delayed but guaranteed No infinite data structures

  31. Implementation Notes Each future/pcall element is a thread pcall fork/join parallelism future asynchronous thread block on read

  32. Overview What is Multilisp? Overview of Scheme Features of Multilisp Where is Multilisp Now?

  33. Where is Multilisp Now? No current Scheme compilers implement futures We had to implement our own interpreter! However: THEY LIVE on in Java! Transparent Proxies for Java Futures, Pratikakis, Spacco, and Hicks, OOPSLA 2004. Safe Futures for Java, Welc, Jagannathan, and Hosking, OOPSLA 2005.

  34. Conclusion Like much of the Scheme World: Elegant, Flexible Solution Deader than a Doornail Not Java

More Related