```CPS 5401
In-class Activity
Name ________________________________
Roofline Model and Code Balance
A quadcore computer has a measured memory bandwidth of 2 Gword/s and a peak
performance of 8 Gflops/s. We only consider floating point operations.
1. Draw the roofline graph for this computer on a log-log graph.
2. For this computer, characterize the applications that would not benefit from an
increase in the computer’s theoretical peak performance.
3. An application is balanced for a computer if Tmem  Tcomp . A balanced
computation is also said to be compute-bound, while an imbalanced computation is
memory-bound. Every application will have a corresponding dot in the roofline
graph based on its operational intensity. Where in the graph will we find the dots for
the applications that are balanced?
For questions 4, 5, and 6, consider the following pseudo code for a snippet of a
stencil computation that operates on an n x n array stored in row-major order.
Assume each array element occupies one memory word.
for i = 1 to n-2
for j = 1 to n-2
x[i][j] += x[i][j+1] + 2*x[i+1][j] + x[i][j-1] + 2*x[i-1][j]
4. Assuming the entire array will fit in the computer’s cache, what is the operational
intensity of the code and is it compute-bound or memory-bound on the computer
described above?
5. Assuming that only two rows of the array can fit in the cache and that the cache
uses a least recently used (LRU) replacement policy, what is the computational
intensity of the code and is it compute-bound or memory-bound?
6. Suppose that the theoretical peak performance is quadrupled (e.g., by
quadrupling the number of cores) but that the effective memory bandwidth is only
doubled. How would these changes affect your answers to questions 4 and 5?
```