.github
api-server
client
config
curriculum
docs
guide
arabic
chinese
english
3d
accessibility
agile
algorithms
algorithm-design-patterns
algorithm-performance
avl-trees
b-trees
backtracking-algorithms
binary-search-trees
boundary-fill
brute-force-algorithms
divide-and-conquer-algorithms
embarassingly-parallel-algorithms
index.md
evaluating-polynomials-direct-analysis
evaluating-polynomials-synthetic-division
exponentiation
flood-fill
graph-algorithms
greatest-common-divisor-direct-analysis
greatest-common-divisor-euclidean
greedy-algorithms
lee-algorithm
quickselection-algorithm
red-black-trees
search-algorithms
sorting-algorithms
string-matching-algorithms
index.md
android-development
angular
angularjs
apache
aspnet
bash
blender
blockchain
bootstrap
bsd-os
bulma
c
canvas
certifications
chef
clojure
cloud-development
computational-genomics
computer-hardware
computer-science
containers
cplusplus
csharp
css
d3
data-science-tools
design-patterns
designer-tools
developer-ethics
developer-tools
devops
docker
documentation
drupal
electron
elixir
elm
erlang
fsharp
game-development
gatsbyjs
git
go
groovy
haskell
hibernate
html
ionic
java
javascript
joomla
jquery
julia
kotlin
laravel
linux
logic
machine-learning
mathematics
meta
miscellaneous
mobile-app-development
mongodb
natural-language-processing
neovim
network-engineering
nginx
nodejs
optical-alignment
php
product-design
progressive-web-apps
puppet
python
r
react
react-native
redux
rest-api
robotics
rt-os
ruby
rust
sass
security
semantic-ui
software-engineering
sql
ssh
svg
svn
swift
terminal-commandline
tomcat
tools
typescript
typography
user-experience-design
user-experience-research
vagrant
vim
virtualbox
visual-design
voice
vue
vue-cli
web-augmented-reality
web-components
web-performance
web-virtual-reality
wordpress
working-in-tech
xml
portuguese
russian
spanish
mock-guide
tools
.editorconfig
.eslintignore
.eslintrc
.gitattributes
.gitignore
.node-inspectorrc
.prettierrc
.snyk
.travis.yml
.vcmrc
CODE_OF_CONDUCT.md
CONTRIBUTING.md
LICENSE.md
README(french).md
README.md
docker-compose-shared.yml
docker-compose.yml
lerna.json
netlify.toml
package-lock.json
package.json
sample.env
16 lines
1.8 KiB
Markdown
16 lines
1.8 KiB
Markdown
![]() |
---
|
||
|
title: Embarassingly Parallel Algorithms
|
||
|
---
|
||
|
## Embarassingly Parallel Algorithms
|
||
|
|
||
|
In parallel programming, an embarrassingly parallel algorithm is one that requires no communication or dependency between the processes. Unlike distributed computing problems that need communication between tasks—especially on intermediate results, embarrassingly parallel algorithms are easy to perform on server farms that lack the special infrastructure used in a true supercomputer cluster. Due to the nature of embarrassingly parallel algorithms, they are well suited to large, internet-based distributed platforms, and do not suffer from parallel slowdown. The opposite of embarrassingly parallel problems are inherently serial problems, which cannot be parallelized at all.
|
||
|
The ideal case of embarrassingly parallel algorithms can be summarized as following:
|
||
|
* All the sub-problems or tasks are defined before the computations begin.
|
||
|
* All the sub-solutions are stored in independent memory locations (variables, array elements).
|
||
|
* Thus, the computation of the sub-solutions is completely independent.
|
||
|
* If the computations require some initial or final communication, then we call it nearly embarrassingly parallel.
|
||
|
|
||
|
Many may wonder the etymology of the term “embarrassingly”. In this case, embarrassingly has nothing to do with embarrassment; in fact, it means an overabundance—here referring to parallelization problems which are “embarrassingly easy”.
|
||
|
|
||
|
A common example of an embarrassingly parallel problem is 3d video rendering handled by a graphics processing unit, where each frame or pixel can be handled with no interdependency. Some other examples would be protein folding software that can run on any computer with each machine doing a small piece of the work, generation of all subsets, random numbers, and Monte Carlo simulations.
|