Nepedia
Back to Discover
Advanced Reader
💻

Parallel computing

technology Maturity 7-9 Next article →

Parallel computing is a method of computation where many calculations or processes occur simultaneously.

IBM Blue Gene P supercomputer
IBM Blue Gene P supercomputer

Instead of solving a single problem through one long sequence of steps, parallel computing divides a large problem into smaller, independent pieces. These smaller parts are then solved at the same time by multiple processing elements. This approach is essential for modern high-performance computing. It allows machines to tackle complex simulations that would be impossible for a single processor to finish in a reasonable amount of time.

To understand how this works, we must compare it to serial computation. In serial computation, an algorithm is a single stream of instructions. A central processing unit (CPU) executes these instructions one by one. The next instruction cannot begin until the current one is completely finished. Parallel computing changes this flow by using multiple processing elements at once. These elements can be many processors within one computer, or even several networked computers working together.

Beowulf
Beowulf

By breaking the algorithm into parts that do not depend on each other, the system can work on many steps at the same time.

There are several distinct ways to organize this parallelism. At the hardware level, it can be bit-level or instruction-level parallelism. These are often transparent, meaning the programmer does not have to manage them manually. There is also data parallelism and task parallelism.

Parallelism vs concurrency
Parallelism vs concurrency

Hardware can be organized into multi-core computers, which have several independent cores on one chip. For even larger tasks, scientists use clusters, massively parallel processors (MPPs), or grids. These systems use many separate computers to solve a single massive task. Some specialized architectures are even used alongside traditional processors to speed up specific jobs.

Historically, the main way to improve computer performance was frequency scaling. From the mid-1980s until 2004, engineers increased the clock frequency to make instructions execute faster. However, this method hit a physical limit known as the power wall. Increasing frequency significantly raises power consumption and heat generation. The power used by a chip is determined by capacitance, voltage, and frequency.

Nopipeline
Nopipeline

In May 2004, Intel cancelled its Tejas and Jayhawk processors due to these power and heat concerns. This moment marked a major shift in computer architecture. The industry moved away from making single cores faster and toward increasing the number of cores on a single die.

This shift has changed how we build and use computers. In 2012, quad-core processors became the standard for desktop computers. Servers often use processors with more than 10 cores. Following Moore's law, the number of cores typically doubles every 18 to 24 months. By 2023, some processors reached over one hundred cores.

BlueGeneL cabinet
BlueGeneL cabinet

Some modern designs even use a mix of performance and efficiency cores to manage heat. This means that for a program to run faster today, programmers must specifically write code that can take advantage of these multiple cores.

However, adding more processors does not always lead to a perfect speed-up. Amdahl's law describes the theoretical limit of how much a program can be sped up.

AmdahlsLaw
AmdahlsLaw

The law states that the speed-up is limited by the fraction of the task that cannot be parallelized. If a large portion of a program must remain serial, adding infinite processors will still result in a limit to its speed. This leads to diminishing returns, where adding more hardware provides very little extra benefit.

Optimizing-different-parts
Optimizing-different-parts

To reach the best performance, programmers must balance the parallel parts with the parts that must run alone.

Achieving high performance also requires managing complex dependencies. A program cannot run faster than its longest chain of dependent calculations, which is called the critical path. If instruction B needs the result of instruction A, they cannot run at the same time. This is known as a flow dependency. There are also anti-dependencies and output dependencies to manage.

Superscalarpipeline
Superscalarpipeline

Programmers must also deal with communication and synchronization between subtasks, or threads. If not managed carefully, these can cause software bugs like race conditions. Understanding these connections is the key to making parallel computing work effectively.

675 words

Where will your curiosity go next?

Keep exploring at your chosen reading level.

🖼️ Images & Media (15)
File:IBM Blue Gene P supercomputer.jpg
IBM Blue Gene P supercomputer.jpg
File:Parallelism_vs_concurrency.png
Parallelism_vs_concurrency.png
File:AmdahlsLaw.svg
AmdahlsLaw.svg
File:Optimizing-different-parts.svg
Optimizing-different-parts.svg
File:Gustafson.png
Gustafson.png
File:Taiwania 3 Supercomputer.jpg
Taiwania 3 Supercomputer.jpg
File:Nopipeline.png
Nopipeline.png
File:Fivestagespipeline.png
Fivestagespipeline.png
File:Superscalarpipeline.svg
Superscalarpipeline.svg
File:Numa.svg
Numa.svg
File:Beowulf.jpg
Beowulf.jpg
File:BlueGeneL cabinet.jpg
BlueGeneL cabinet.jpg

+ 3 more

More to explore

What is Nepedia?

A free, ad-free encyclopedia for children. Every article is written at five reading levels, so the same page works for a five-year-old and a fifteen-year-old — use the level switcher above to see this one change. No account needed to read.