Bank conflicts are largely responsible for throttling performance, regardless of array size. Two caching effects are clearly illustrated. However, operations on larger arrays result in severe drops for the faster processors and more modest losses for slower processors. The trends established by the Horner's example are exaggerated here by the reduced ratio of floating point operations to memory references. This section contains more material than the other sections.
Concepts explored here are more fundamental.
Memory copies are routinely performed in most codes, both explicitly and implicitly. Implicit use is particularly prevalent in parallel Fortran derivatives like HPF and if the primary data structures are long vectors, the results can be devastating to performance. On the MPP platforms, special care is taken to cause cached data to be spilled prior to initiating subsequent copy loops. This is done by initializing a third array that is sized to cover L1 or L2 cache. The new data must be ejected prior to loading the source array and so this transfer has been included in the rates for the cache-based machines.