TACC’s Victor Eijkhout, Edmond Chow, and Robert van de Geij have posted an excellent eBook entitled: Introduction to High-Performance Scientific Computing. While currently in a Public Draft form that is open for comments, the book features topics such as Sequential and Parallel Computer Architecture, Programming strategies for high performance, Numerical treatment of differential equations, High performance linear algebra, Monte Carlo Methods, and much more.
The field of high performance scientific computing lies at the crossroads of a number of disciplines and skill sets, and correspondingly, for someone to be successful at using high performance computing in science requires at least elementary knowledge of and skills in all these areas. Computations stem from an application context, so some acquaintance with physics and engineering sciences is desirable. Then, problems in these application areas are typically translated into linear algebraic, and sometimes combinatorial, problems, so a computational scientist needs knowledge of several aspects of numerical analysis, linear algebra, and discrete mathematics. An efficient implementation of the practical formulations of the application problems requires some understanding of computer architecture, both on the CPU level and on the level of parallel computing. Finally, in addition to mastering all these sciences, a computational sciences needs some specific skills of software management.
While good texts exist on applied physics, numerical linear algebra, computer architecture, parallel computing, performance optimization, no book brings together these strands in a unified manner. The need for a book such as the present was especially apparent at the Texas Advanced Computing Center: users of the facilities there often turn out to miss crucial parts of the background that would make them efficient computational scientists. This book, then, comprises those topics that seem indispensible for scientists engaging in large-scale computations.