Jump to content

Parallel programming: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
propose merage to Parallel computing
post-merge redirect to Parallel computing
Line 1: Line 1:
{{mergeto|Parallel computing}}
#REDIRECT [[Parallel computing]]

'''Parallel programming''' is a [[computer]] [[programming]] technique that provides for the execution of operations in parallel, either within a single computer, or across a number of systems. The latter case is a form of [[distributed computing]], which is a method of information processing in which work is performed by separate computers linked through a communications network.

Some people consider parallel programming to be synonymous with [[Concurrent programming language|concurrent programming]]. Others draw a distinction between ''concurrent programming'' in general, which encompasses both parallel execution and interaction between parallel entities while they are executing, and ''parallel programming'', which involves parallelism ''without'' interaction between executing entities. The essence of parallel programming in the latter sense is to split a single task into a number of subtasks that can be computed relatively independently, and then aggregated to form a single coherent solution. The independence of the subtasks eliminates concerns involving [[Mutual exclusion|exclusive access to shared resources]], and ensuring [[Synchronization|synchronization]] between different subtasks, which can permit [[Multiprocessor|multiprocessor]] machines to achieve better performance than their single processor counterparts by executing independent tasks on separate processors. However, such parallel programming techniques are most effective for problems that can be easily broken down into independent tasks, such as purely mathematical problems (e.g. factorization). Unfortunately, not all algorithms can be optimized to run in a parallel setting, which can create performance issues in multiprocessor systems different from those encountered in single processor systems.

==See also==
*[[Parallel computing]]
*[[Parallel programming model]]
*[[Concurrent programming language]]
*[[Critical section]]s
*[[Mutual exclusion]]
*[[Synchronization]]
*[[Computer multitasking]]
*[[Multithreading]]
*[[Concurrency control]]
*[[Coroutine|Coroutines]]
*[[Parallel processor]]
*[[Completion port]]s
*[[Parawiki]]

==External links==
* [http://www.llnl.gov/computing/tutorials/parallel_comp/ Introduction to Parallel Computing]
*"[http://msdn.microsoft.com/msdnmag/issues/01/08/concur/default.aspx Multiprocessor Optimizations: Fine-Tuning Concurrent Access to Large Data Collections]" by [[Ian Emmons]]
*"[http://gotw.ca/publications/concurrency-ddj.htm The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software]" by [[Herb Sutter]]
*[http://citeseer.ist.psu.edu/cis?q=parallel+and+programming Citations from CiteSeer]
*[http://www.myalgorithm.com/source-153.html Peterson algorithm]

[[Category:Optimizations]]
[[Category:Distributed computing]]

[[cs:Paralelní programování]]
[[de:Parallelisierung]]
[[es:Programación paralela]]
[[fr:Parallélisation]]
[[lt:Lygiagretusis programavimas]]

Revision as of 03:15, 21 January 2006

Redirect to: