Assignment 2 算法分析作业代写 IMPORTANT NOTES • If you are asked to develop/design an algorithm, you need to describe it in plain English first, say a paragraph, IMPORTANT NOTES •...View details
Homework Assignment 1
并行计算家庭作业代写 1.In the global sum problem that we discussed in class, in lecture 1, if we assume that there is a variable called my_rank (local to each core)
In the global sum problem that we discussed in class, in lecture 1, if we assume that there is a variable called my_rank (local to each core) that gives each core a unique rank from 0 to p-1 (for p cores), devise an expression to calculate my_first_i and my_last_i assuming:
a. n is divisible by p and n > p.
b. n is not divisible by p.
We have seen two ways of calculating the final sum in the global sum example we have studied in class. In one of them, the master core receives the partial sums from the other cores and calculates the final sum. The other method is the tree-method. Assume that the master core is core 0. Assume we have p cores and n numbers where n > p.
a. Derive a formula for the number of receives and additions that core 0 does in the first (non-tree) method.
b. Repeat for the tree-method.
c. Make a table showing the number of receives and additions done by core 0 for each method when the number of cores is 2, 4, 8, …, 1024.
d. Which operation do you think is more expensive: receive or addition? and why?
Sometimes you are given a sequential program that is very Yet, you may find that it is better to keep it sequential because it will be faster than the parallel one. What is the situation where this decision is sound?
Before multicore processors, that is, during the single core era,programs are getting faster with every new generation of processors without any effort from the program. This is due to two factors. What are they?
State two advantages and two disadvantages to each of the following:
- Shared memory systems
- Distributed memory systems
Suppose we have the following algorithm (assume N is a large even number):
for(i = 0; i < N/2; i++)
a[i] += a[i+ N/2 ];
a.  Can we parallelize the above algorithm? If no, why not? If yes, explain.
b.  What Is the maximum number of cores after which noperformance enhancement can be seen? Justify
We discussed briefly how caches are designed. Among cache characteristics are whether a cache is write back (when a cache block is modified, it is written back to the lower level cache only when the block is replaced) or write through (whenever a cache block is updated, it updates also the lower level copy). Discuss the pros and cons of each.
Does coherence protocol affect performance positively? Ornegatively? And Why?
When we discussed hardware pipeline, we discussed an implementation that has five stages: Fetch, Decode, Issue, Execute, and Commit. Briefly (in 1-2 sentences) discuss what each stage does.
What is speculative execution? Why is it needed?
Now that you know about coherence, how can you make use of this knowledge to write better code? State at least two scenarios.