Optimizing for data

There are many trends coming to bear simultaneously with the arrival of multi-/manycore.  One of these that is deeply interwoven with the additional cores is the idea of dealing with large heterogeneous data.  Because there are so many cores that must be “close” in some way to this data, a revolution has slowly been developing based on techniques for dealing with many more tiers of memory, non-uniform memory (NUMA), and heterogeneous execution paths on each of the cores.