14 Jan HPC On A Need To Know Basis
One of the reasons I did not make a blog earlier in the week was the 2011 Lehigh HPC Symposium. The event was quite good, although I had to leave early. The program included both presentations on applications and implementation of HPC. The presenters included researchers from Lehigh University, Rutgers, U of Mass, Google, and IBM. The presentations had a rather broad range and included a discussion of the LAMMPS Molecular Dynamics Simulator, GPU cellular automata, how Google handles massive amounts of data, and parallel programming languages.
At lunch I sat with graduate students who were interested in HPC. During our conversations, I asked at what level did they use HPC? That is, should a molecular biologist or a materials engineer be involved in writing code or should they really work at the application level?
While at first glance the answer may seem obvious because I assume you didn’t help code the web browser or any of the other applications you use on a daily basis. In the sciences, the distinction is not so clear. Many of the classic scientific codes were written by scientists. I suspect it was due to the lack of Fortran programmers, but more so I suspect was the need to understand complex problems and express it in such a way that it can be executed on a computing machine.
Fortunately for most HPC users, there are many applications that have already been written, like LAMMPS, that allow a researcher to use the computer as a tool. There is in my estimation a much smaller group of scientists that are involved in creating these kinds of tools for others to use. And finally, yet another group, mostly likely graduate students, who have problems that don’t quite fit into a standard HPC applications and need to write custom code of some sort to do their research. The challenge is, I see it, providing assistance at various levels. Not everyone needs to know how to program with MPI or UPC, but almost everyone needs to understand how to use modern day HPC (read parallel) hardware and software environments as a way to solve problems. Todays clusters are yesterdays slide rules (If you even remember what they are), not real easy to use, but far better than what was previously available.