What is the right theoretical model to design algorithms for current and upcoming high performance computers
At PODC 2009, Bruce Hendrickson gave a phenomenmal invited talk about these issues.  (His slides don't appear to be online, but you might want to ask him if you could see them.)  I don't think there's a "right" model yet -- bonus for you! -- but I would suggest you look at his papers, especially the ones on the Graphs and Architectures page, where he tries to figure out how to handle enormous graphs with little structure (i.e. "modern" datasets) on massively multithreaded machines.