Difference between revisions of "Parallel/Glossary"

From HaskellWiki
Jump to navigation Jump to search
(→‎S-Z: possible approach to compare contrast)
Line 25: Line 25:
 
; spark
 
; spark
 
: Sparks are specific to parallel Haskell. Abstractly, a spark is a pure computation which may be evaluated in parallel. Sparks are introduced with the par combinator; the expression (<code>x `par` y</code>) "sparks off" <code>x</code>, telling the runtime that it may evaluate the value of <code>x</code> in parallel to other work. Whether or not a spark is evaluated in parallel with other computations, or other Haskell IO threads, depends on what your hardware supports and on how your program is written. Sparks are put in a work queue and when a CPU core is idle, it can execute a spark by taking one from the work queue and evaluating it.
 
: Sparks are specific to parallel Haskell. Abstractly, a spark is a pure computation which may be evaluated in parallel. Sparks are introduced with the par combinator; the expression (<code>x `par` y</code>) "sparks off" <code>x</code>, telling the runtime that it may evaluate the value of <code>x</code> in parallel to other work. Whether or not a spark is evaluated in parallel with other computations, or other Haskell IO threads, depends on what your hardware supports and on how your program is written. Sparks are put in a work queue and when a CPU core is idle, it can execute a spark by taking one from the work queue and evaluating it.
  +
: see spark (vs thread)
: Sparks are ideal for speeding up pure calculations where adding non-deterministic concurrency would just make things more complicated.
 
  +
  +
; spark (vs thread)
  +
: On a multi-core machine, both threads and sparks can be used to achieve
  +
parallelism. Threads give you concurrent, non-deterministic parallelism,
  +
while sparks give you pure deterministic parallelism. Haskell threads are ideal for applications like network servers where you need to do lots of I/O and using concurrency fits the nature of the problem. Sparks are ideal for speeding up pure calculations where adding non-deterministic concurrency would just make things more complicated.
   
 
; OS thread
 
; OS thread

Revision as of 10:06, 20 April 2011

A-H

bound thread
concurrency
distributed
distributed memory model
Haskell thread
A Haskell thread is a thread of execution for IO code. Multiple Haskell threads can execute IO code concurrently and they can communicate using shared mutable variables and channels.
see spark (vs threads)

I-M

N-R

parallel(ism)

S-Z

shared memory model
spark
Sparks are specific to parallel Haskell. Abstractly, a spark is a pure computation which may be evaluated in parallel. Sparks are introduced with the par combinator; the expression (x `par` y) "sparks off" x, telling the runtime that it may evaluate the value of x in parallel to other work. Whether or not a spark is evaluated in parallel with other computations, or other Haskell IO threads, depends on what your hardware supports and on how your program is written. Sparks are put in a work queue and when a CPU core is idle, it can execute a spark by taking one from the work queue and evaluating it.
see spark (vs thread)
spark (vs thread)
On a multi-core machine, both threads and sparks can be used to achieve

parallelism. Threads give you concurrent, non-deterministic parallelism, while sparks give you pure deterministic parallelism. Haskell threads are ideal for applications like network servers where you need to do lots of I/O and using concurrency fits the nature of the problem. Sparks are ideal for speeding up pure calculations where adding non-deterministic concurrency would just make things more complicated.

OS thread
thread
see Haskell thread, OS thread and bound thread