Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where does super-linear speedup come from?

In parallel computing theoretically super-linear speedup is not possible. But in practice we do see such cases. One reason is cache effect but I fail to understand what does it play. Also, there are other things involved but what are they? In summary,

How are super-linear speedups possible?

I'm a beginner with respect to parallel computing.

like image 755
Jungle Hunter Avatar asked Dec 02 '10 08:12

Jungle Hunter


People also ask

What is a super-linear speedup?

The speedup is usually limited by two main laws in high-performance computing, that is, the Amdahl's and Gustafson's laws. However, the speedup sometimes can reach far beyond the limited linear speedup, known as superlinear speedup, which means that the speedup is greater than the number of processors that are used.

Is it possible to get a super-linear speedup explain?

Super-linear speedup can happen when breaking a problem into more pieces makes all the pieces execute more efficiently. For instance, maybe one whole piece becomes small enough to fit into the cache of a single core. Based on speedup S, there are several ways to define scalability.

Is Super linearity possible?

In parallel computing theoretically super-linear speedup is not possible. But in practice we do see such cases.

What is the maximum speedup that can be achieved?

Amdahl's law states that the maximum speedup possible in parallelizing an algorithm is limited by the sequential portion of the code. Given an algorithm which is P% parallel, Amdahl's law states that: MaximumSpeedup=1/(1- (P/100)). For example if 80% of a program is parallel, then the maximum speedup is 1/(1-0.8)=1/.


2 Answers

Suppose you have an 8 processor machine, each processor has a 1MB cache, and your computation uses 6MB of data.

On 1 processor the computation will be doing a lot of data movement between CPU, cache and RAM. On 8 processors the computation will only have to move data between CPU and cache. This way you can achieve super-linear speedup.

These figures and this analysis have been simplified for exposition for a beginner.

like image 63
High Performance Mark Avatar answered Sep 21 '22 11:09

High Performance Mark


In short, superlinear speedup is achieved when the total amount of work processors do is strictly less than the total work performed by a single processor.

This can happen in three ways:

  • The original sequential algorithm was really bad, using the parallel version of the algorithm on one processor will usually do away with the superlinear speedup.

  • The parallel algorithm uses some search like a random walk, the more processors that are walking, the less distance has to be walked in total before you reach what you are looking for.

  • Modern processors have faster and slower memories. Typically it will try to keep the data you are using in the fast memory. We can safely say your amount of data is larger than the amount of fast memory. If you use n processors you have n times the amount of faster memory. More data fits in the fast memory which makes it possible to take less time (thus amount of work) on the same task.

like image 27
Beef Avatar answered Sep 21 '22 11:09

Beef