Explicit parallelism
In computer programming, explicit parallelism is the representation of concurrent computations using primitives in the form of operators, function calls or special-purpose directives.[1] Most parallel primitives are related to process synchronization, communication and process partitioning.[2] As they seldom contribute to actually carry out the intended computation of the program but, rather, structure it, their computational cost is often considered as overhead.
The advantage of explicit parallel programming is increased programmer control over the computation. A skilled parallel programmer may take advantage of explicit parallelism to produce efficient code for a given target computation environment. However, programming with explicit parallelism is often difficult, especially for non-computing specialists, because of the extra work and skill involved in developing it.
In some instances, explicit parallelism may be avoided with the use of an optimizing compiler or runtime that automatically deduces the parallelism inherent to computations, known as implicit parallelism.
Programming languages that support explicit parallelism
Some of the programming languages that support explicit parallelism are:
- Ada
- Ease
- Erlang
- Java
- JavaSpaces
- Message Passing Interface
- Occam
- Parallel Virtual Machine
References
- ^ von Praun, Christoph (June 2011). Parallel programming: design of an overview class. Proceedings of the 2011 ACM SIGPLAN X10 Workshop. pp. 1–6. doi:10.1145/2212736.2212738.
- ^ Dijkstra, Edsger W. (May 1, 1968). "The structure of the "THE"-multiprogramming system". Communications of the ACM. 11 (5): 341–346. doi:10.1145/363095.363143.
- v
- t
- e
- Distributed computing
- Parallel computing
- Massively parallel
- Cloud computing
- High-performance computing
- Multiprocessing
- Manycore processor
- GPGPU
- Computer network
- Systolic array
- Temporal
- Simultaneous (SMT)
- Simultaneous and heterogenous
- Speculative (SpMT)
- Preemptive
- Cooperative
- Clustered multi-thread (CMT)
- Hardware scout
- Process
- Thread
- Fiber
- Instruction window
- Array
- Multiprocessing
- Memory coherence
- Cache coherence
- Cache invalidation
- Barrier
- Synchronization
- Application checkpointing
- Stream processing
- Dataflow programming
- Models
- Implicit parallelism
- Explicit parallelism
- Concurrency
- Non-blocking algorithm
- Category: Parallel computing
This computer science article is a stub. You can help Wikipedia by expanding it. |
- v
- t
- e