A trivial example involves serving static data. It would take very little effort to have many processing units produce the same set of bits. Indeed, the famous
Hello World problem could easily be parallelized with few programming considerations or computational costs. Some examples of embarrassingly parallel problems include: •
Monte Carlo method • Distributed relational database queries using distributed set processing. •
Numerical integration • Bulk processing of unrelated files of similar nature in general, such as photo gallery resizing and conversion. • The
Mandelbrot set,
Perlin noise and similar images, where each point is calculated independently. •
Rendering of
computer graphics. In
computer animation, each
frame or pixel may be rendered independently . • Some
brute-force searches in
cryptography. Notable real-world examples include
distributed.net and
proof-of-work systems used in
cryptocurrency. •
BLAST searches in
bioinformatics with split databases. • Large scale
facial recognition systems that compare thousands of arbitrary acquired faces (e.g., a security or surveillance video via
closed-circuit television) with similarly large number of previously stored faces (e.g., a
rogues gallery or similar
watch list). • Computer simulations comparing many independent scenarios. •
Genetic algorithms. •
Ensemble calculations of
numerical weather prediction. • Event simulation and reconstruction in
particle physics. • The
marching squares algorithm. • Sieving step of the
quadratic sieve and the
number field sieve. • Tree growth step of the
random forest machine learning technique. •
Discrete Fourier transform where each harmonic is independently calculated. •
Convolutional neural networks running on
GPUs. • Parallel search in
constraint programming ==Implementations==