Comments

Hmmm…. I haven’t bought a good HPC book … didn’t know there were any (good ones). Could we invert the discussion and start with a list of HPC books (or have people nominate books)? I have a bunch of old ones talking about vector machines, and Cray T3D as the next new thing …

I have some favorite numerical analysis books, and a few programming/methodology books.

Maybe we need an HPC book? A modern HPC book. But one that is a living book. Technology changes too quickly for the dead wood version.

Well, I really meant the last technical book you bought to help you accomplish your HPC-related job better (you define better), but excluding Perl and CSH books. Numerical Recipes would count on my list, for example, and so would Synthesis of Parallel Algorithms and Workflows for e-Science (for example).

There are at least a couple hundred that have been printed over the past 20 years that are directly tied to HPC and parallel computing, and this doesn’t include the “cross purpose” books like GPU books and numerical methods books or most of the “encyclopedias” (MPI library references, for example).

I’ll confess to not having read any of the above books, but that’s because skimming through some similar books in the past has done precious little to better my understanding of the field. To rephrase, for me, my work focuses on helping people develop and run parallel scientific applications, so, for example, low-level books about how best to implement a ‘gather’ operation isn’t terribly important to me. Knowing where to use it, though, obviously is.

I think that books on algorithms -not numerical methods, mind you, but algorithms- would be most important for people new to HPC, followed closely by books on data structures. I see people who simply use Numerical Recipes as a cut-and-paste for doing something but without thinking about how that thing should be done. An example would be an N-body code (without any long-range forces) that someone I know is running which uses an O(N^2) algorithm when an O(N) one exists. Having a sense of why algorithms are important, rather than just ‘how do I get a number that I can publish?’ would be immensely useful for them.

Data structures are also important for two reasons – first, for ease of use, since having everything as global can be messy and makes it difficult for people new to an application to parse what a given routine needs and does. And second, though this is more involved, for properly dealing with things like caches. A lot of people are now more concerned about memory movement than flops, since that’s becoming the bottleneck, and proper design of data structures with regards to the memory hierarchy is incredibly important.

So, book recommendations? Algorithms in C by Sedgewick is still on my bookshelf and was pretty good. I find that algorithms tend to get more focus in C than in Fortran, too, so even if you’re a Fortran programmer, a C book is fine. In fact, maybe even better than fine, since you’ll need to translate the ideas, and thus think. For data structures, any book will deal with the basics, but I don’t know of one that also tries to tie in data structure design to modern x86 (ideally) memory system architecture.

All in all, for me, HPC is about the science, so I find myself reading far more scientific books than computing ones these days. That is, if you’re an HPC specialist and find yourself working with people in, say, astrophysics, pick up a book on astrophysics. If you find yourself working on biostatistics, pick up a book on that. Each of those will probably take you farther, hour for hour, than yet another book on computational ideas that you’re largely familiar with.

That’s my (long winded) two cents.

– B

(PS. If you’re on the hardware design side, obviously little of the above applies!)

Not being a compiler and/or programming language expert, but having to delve into compiler and language issues at times one should have an understanding of how a compiler works and how languages impact the ability of the compiler to generate efficient assembly. This is even more critical given the discussion of the languages (UPC/CAF/Sisel/Haskell/etc) required for efficient parallel code generation for large multicore architectures. Scott’s book is a really good introductory and mid-level book for these topics:

“Programming Language Pragmatics” M.L. Scott (1558604421)

Numerical algorithms are important too, but I’ll have to think about which of the multiple books I have qualify as HPC-related numerical books.

Brian – thanks for the not-at-all long-winded reply. I have Sedgewick (in C) on my own shelf, and Golub and van Loan along with a few of the Numerical Recipes books.

Given that we have those resources available, to what extent to you (and everyone else) feel that these books aren’t sufficient to hand to an apprentice HPC practitioner? IE, does our community need its own set of algorithms and data structures books written in an HPC context (whether from the particular perspective of our applications or our hardware or the scale of our problems)?

While I know it has been maligned in some circles, I feel that the O’Reilly book “High Performance Linux Clusters” by Sloan is very good for those just starting out in HPC. I also like another O’Reilly book, “High Performance Computing (2nd edition)” by Dowd and Severance.

But the main reason I’m posting a comment is that I find myself reading technical books less and less as the years go by. More and more of the information I need can be found online, often for free…

Kevin – (I haven’t forgotten about that package I owe you – too much reveling over the holidays!).

I have Dowd, first ed., but not the clusters book.

I agree with you about the wealth of knowledge available online for free, but I wonder if you feel that, especially for new entrants to the field, a curated approach like you’d find in a book (for example, a general introduction to HPC architectures, or GPUs for HPC, or whatever) might serve to get readers on a solid footing from which they could do their own spelunking on the internet? Is there a need/use for that type of book in our profession? Especially if it was less than the typical $50 for many HPC books, pithy, not stodgy, and possibly electronic?

Resource Links:

Latest Video

Industry Perspectives

In the second in this series of articles on ways to save energy in computing, Robert Roe from Scientific Computing World reports on how Europe is looking to both hardware and software solutions. [Read More...]