Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

We are building a large, modular application that is intended to run across mult

ID: 655033 • Letter: W

Question

We are building a large, modular application that is intended to run across multiple processors. I need to develop a method to estimate how long it will take to run all of the functions.

I already have the function's execution time on a single processor. Now I need to find a way to account for the communication overhead. I also need to identify if there is a difference in execution time based upon particular functions being spread across a number of processors instead of remaining on the same processor.

How should I simulate the overall application in order to identify the communication overhead and to provide an estimate for what the total execution time would be?

Explanation / Answer

There is only one reliable way to find this out: parallelize your application and measure the performance with a serious test data set. See what happens if you assign n different processors to your application for different values of n. How it performs depends heavily on implementation details.

For example, last time a collegue of mine thought to speed up an application by parallelizing, he distributed the work almost equally between the available processors, using multi-threading. But even when using only 2 processors, the application became around 10% slower than the one processor variant. What we forgot was that both threads shared the same dynamic memory pool, and the mutual access to that pool seemed to be the cause of that problem.

For any application of reasonable size you are better of to expect such counter-intuitive problems.

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote