OpenSource Internship opportunity by OpenGenus for programmers. Apply now.
Table of content
 Introduction to Parallel computing
 The Gustafson's Law
 Origin and development of Gustafson's Law
 The Amdahl's Law and Motivation for Alternatives
 The Deep understanding of Gustafson's Law
 Mathematical Expression of Gustafson's Law
 Gustafson's perspective on scalability
 How Gustafson's Law contrasts with Amdahl's Law
 Pollock's Rule and its Relevance
 Optimistic Parallelism: @ Gustafson's View and Pollock's Rule
 Conclusion
Introduction to Parallel computing
Parallel computing means doing many tasks at the same time to solve a problem faster. It involves using special computer designs, like having multiple processors or cores, working together. The problem is divided into smaller parts that can be solved at once. People write special computer programs to make this happen, and there are rules for how the tasks share information. The goal is for the system to handle more work as we add more processors. We measure success by how much faster the parallel system is compared to doing things one at a time.
Key Takeaways
 Parallel Computing: Divides problems into smaller parts for efficiency.
 Key Concepts: Parallel Architecture, Algorithms, and Programming.
 Gustafson's Law: Efficiency maintained with more processors for larger problems.
 Pollock's Rule: Asserts consistent performance with varying processor count
Key concepts in parallel computing include:

Parallel Architecture: The hardware design that enables multiple processors or cores to work together. This can include multicore processors, computer clusters, or specialized parallel computing architectures.

Parallel Algorithms: Specialized algorithms designed to be executed in parallel, often involving the division of a problem into smaller tasks that can be solved concurrently.

Parallel Programming: The practice of writing software that can effectively utilize parallel hardware. This may involve using parallel programming languages, libraries, or frameworks.

Scalability: The ability of a parallel computing system to efficiently handle an increasing amount of workload as more processors or cores are added.

Speedup: The measure of how much faster a parallel algorithm or system can solve a problem compared to a sequential algorithm or system.
Parallel computing is essential for tackling complex problems that demand substantial computational power. It finds widespread use in scientific simulations, weather modeling, financial analysis, artificial intelligence, and dataintensive tasks. Yet, achieving optimal performance in parallel computing involves careful attention to factors like synchronization, load balancing, and efficient communication between parallel processes during algorithm design and system implementation.
The Gustafson's Law
Origin and development of Gustafson's Law
Gustafson's Law, also known as GustafsonBarsis's Law, is a fundamental concept in the world of parallel computing, offering a positive perspective on the scalability of parallel systems. Proposed by John L. Gustafson and Edwin H. Barsis in 1988, it emerged as a response to Amdahl's Law, which was less optimistic about the potential gains from parallel processing.
In essence, Gustafson's Law suggests that we can achieve significant speedup in parallel processing by tackling larger problems. As the number of processors increases, the overall workload can be scaled up proportionally, maintaining constant efficiency. This stands in contrast to Amdahl's Law, which focuses on fixedsize problems and underscores the impact of the sequential part of computation.
The Amdahl's Law and Motivation for Alternatives
Amdahl's Law is named after Gene Amdahl, a computer scientist known for improving computer performance through methods like parallel processing. The law was introduced in 1967, It predicts the speed increase in completing a task with improved system resources while keeping the workload constant. The core idea is that the speedup is limited by the part of the task that can't benefit from the improvement. This law applies when the problem size remains fixed, expressed by the formula S = 1 / (1  p + p/s), where S is the speedup, p is the proportion that can be parallelized, and s is the speedup factor of the parallel portion. Essentially, regardless of the number of processors or their speed, the overall speedup is restricted by the nonparallelizable part of the task.
However, Amdahl's Law has limitations. It assumes a fixed problem size and equal processor efficiency, providing a conservative estimate of parallel processing benefits. It overlooks dynamic workload changes, communication overhead, and load imbalances among processors. To address these limitations, alternative models like Gustafson's Law offer a more realistic perspective in various computing scenarios. These alternatives aim to encourage a broader understanding of the potential advantages of parallel processing.
Gustafson's Law: InDepth Analysis
Mathematical Expression of Gustafson's Law
Gustafson's Law can be expressed mathematically as follows:
Speedup = P + (1 − P) * S
Where,
Speedup: Represents the factor by which the computation time is reduced when using multiple processors.
P: Denotes the proportion of the computation that can be performed in parallel.
S: Represents the proportion of the computation that must be performed sequentially.
The formula essentially calculates the speedup based on the parallel portion (P) and the sequential portion (S) of a computation. It suggests that as the parallel portion increases, the overall speedup of the system improves. This mathematical expression captures the essence of Gustafson's Law, emphasizing the positive impact of parallel processing on performance when dealing with larger problem sizes.
Gustafson's perspective on scalability
Gustafson's perspective on scalability is optimistic and contrasts with the more pessimistic view presented by Amdahl's Law. Gustafson argues that scalability can be achieved by increasing the size of the problem as the number of processors increases. He emphasizes that, in practical scenarios, when dealing with larger problems, the overall computational workload can be scaled up proportionally to maintain constant efficiency. Essentially, as you add more processors to a system, you can handle more extensive tasks without suffering from diminishing returns.
How Gustafson's Law contrasts with Amdahl's Law

Focus on Problem Size:
Amdahl's Law emphasizes fixedsize problems and the limit imposed by the sequential portion. In contrast, Gustafson's Law highlights scalability, proposing that problem size should grow with the number of processors." 
Negative vs. Positive Outlook:
Amdahl's Law says we can't get too much faster using parallel processing because some parts of the task have to be done one after the other. On the other hand, Gustafson's Law is more hopeful, saying we can keep getting faster, especially with bigger problems, by using more processors at the same time. 
Scalability Emphasis:
Amdahl's Law mainly talks about problems staying the same size and limitations. On the other hand, Gustafson's Law focuses on making things bigger as you add more processors, saying it's a good way to improve scalability. 
RealWorld Applicability:
Amdahl's Law might not fit well for realworld problems that naturally get bigger or more complex. On the other hand, Gustafson's Law is better suited for these situations, especially when tasks naturally grow as we use more computing power.
Pollock's Rule and its Relevance
Pollock's Rule, a principle in computer science, asserts that the time required to complete a fixed amount of computational work stays relatively constant, regardless of the number of processors employed.
Mathematically, it shows that performance (P) is about proportional to the square root of complexity (C), expressed as P ∝ √C.
Gustafson's Law supports Pollock's Rule by addressing how well a system can grow with more processors, unlike Amdahl's Law, which is less optimistic about using many processors. Together, Gustafson and Pollock explain how scalability (S) depends on the number of processors (P) and complexity (C), while Amdahl's Law (A) is less hopeful about processors.
Both Gustafson's Law and Pollock's Rule say that adding more computational resources can really boost performance. They stress the importance of expanding parallel processing for better results.
In realworld situations, Gustafson's Law notes that many tasks naturally get bigger or more complex, supporting the idea of using parallel processing, as suggested by Pollock's Rule. These principles offer an optimistic way to achieve better performance through scalability in computer systems.
Explore Pollock's Rule further in my article here
Parallel Optimism:
@ Gustafson and Pollock's Rule
Gustafson believes that as we add more processors, the computer's overall workload can increase proportionally, contrasting with more negative views like Amdahl's Law. He thinks there's no limit to how much faster we can make things through parallelism, as long as the problem size grows right.
This positive idea in Gustafson's thinking connects with Pollock's Rule, suggesting that, even with more processors, the time to finish a set amount of work can stay about the same. Both Gustafson's Law and Pollock's Rule agree that, by using more processors and scaling things right, we can efficiently handle a set amount of work.
In a nutshell, Gustafson's optimism matches Pollock's Rule, showing that, in certain situations, the time to finish a set amount of work can stay consistent even as we use more processors. This connection highlights the potential benefits and efficiency gains from using more computing power for parallel tasks.
Conclusion
In parallel computing, the main idea is to solve problems faster by doing multiple tasks at the same time using special computer setups with many processors. This method, following principles like Gustafson's Law and Pollock's Rule, focuses on making things scalable and efficient. As you add more processors, the system can handle bigger tasks, leading to better performance in various applications such as scientific simulations, artificial intelligence, and dataheavy jobs. To put it simply, parallel computing, with its positive principles, offers a great way to make the most of computer power in reallife situations.