From BCCD 3.0
New Directions for Computational Science Education
Introduction to HPC Education
We could dedicate pages of text to a precise meaning of "High Performance Computing Education at the Undergraduate Level". In the end, just one word suffices a complete description of its current state: Broken. The June 2005 President's Information Technology Advisory Committee report "Computational Science: Ensuring America's Competitiveness" states "only a small fraction of the potential of computational science is being realized", and later in the report "The diverse technical skills and technologies underlying software, computing systems, and networks themselves constitute a critical U.S. infrastructure that we underappreciate and undervalue at our peril. Computational science is a foundation of that infrastructure." In other word: Broken.
Phenomenal recent advances in science rely on high performance computing (HPC) platforms and computational methods, yet the calculation of pi is still the canonical example motivating use of parallel computing techniques. Examples like this lack the relevance and luster necessary to connect theory, real-world science, and most of all learning. How can we teach the nuances of parallel matrix-matrix multiplication to undergraduate students who have at best only solved linear systems with their computational mathematics package (e.g. Octave, Maple, or Mathematica) or at worst, have never been confronted with the need to solve a linear system that couldn't be solved in an instant using the computational capabilities of today's handheld devices. This fundamental disconnect first affects our ability to attract students to computational science, and later our ability to adequately keep and prepare students for graduate school or professional work in HPC.
The increasing capabilities of commodity desktop systems, the wide availability of powerful scientific software packages, and the lack of access to High Performance Computational environments in the classroom weave a nearly impenetrable mesh masking the underlying science, preventing HPC education from being realized. Instead of being impediments to HPC education, these three aspects should be embraced and integrated into the core-teaching model for parallel computing: architectures, languages, environments, and applications. HPC Education needs a big facelift. Specifically, HPC Education needs:
- To be more visual
- A picture is worth four-thousand bytes or a thousand words (depending on the underlying architecture).
- To show relevant parallel speedup
- Students need to see parallel codes actually speed up.
- An animation sequence should be rendered in minutes, rather than in a few hours or even overnight.
- To provide immediate feedback
- Of actual scientific models rather than animations presenting previously computed results
- The impact of a 3-fold speedup in an algorithm is lost when the application first sits in a queue for an hour.
- To be relevant and authentic
- No algorithm should be presented with the caveat "but you would never do it this way in practice." Calculation of PI comes to mind, as do many other traditional numerical examples.
- This does not preclude showing a progression of functionally identical algorithms as a way to motivate algorithmic development, mathematical intuition, and creativity.
- To be reproducible on multiple systems
- Students need to experience the variance of results produced using different computational resources. They need to gain the mathematical and scientific intuition to judge what is acceptable and what points to algorithmic or representational errors. They must gain the means to correct these errors.
- To be resonant
- What students are taught in their undergraduate HPC courses should be universally applicable, regardless of their subsequent paths to national laboratories, graduate programs, or the corporate world.
- To be progressively open-ended
- Study after study has shown that open-ended questions elicit more involvement and learning than closed ones. Our teaching, our labs and our student exercises must have room for inquiry. They must challenge students with teacher directed areas of investigation and student initiated explorations. Note this is not a proscription for graduate level study, but for age appropriate investigation and exploration from middle school through their undergraduate education.
- To be accessible
- Students need to have on-demand access to HPC resources inside the classroom, outside the classroom, at the local Internet Cafe, etc.
- Attempting to teach HPC in a void of HPC resources is not really teaching HPC.
- To be structured
- HPC education is missing the "peeling-the-onion" approach to HPC investigations.
- For instance, an educational exploration of the widely used Message Passing Interface (MPI), with its 120+ commands and its many message formats, structures, and communication modes, warrants a progressive sequence of lessons and exercises each building on the other starting from the six fundamental commands (MPI_Init, MPI_Finalize, MPI_Comm_Rank, MPI_Comm_Size, MPI_Send, and MPI_Recv), which alone suffice for many exercises and many real-world applications.
- To be interdisciplinary
- Computational Science education is currently that opaque space betwixt and between Mathematics, Computer Science, Physics, Biology, Chemistry, and the other sciences.
- A degree of sophistication in all these disparate disciplines is necessary to grasp Computational Science and be capable as a practitioner.
The above issues describe a moving target. We understand that Information Technology and Computer Science are ever changing disciplines requiring frequent updates to their curricula. Computational Science education involves even more change since it not only encompasses IT and CS changes, but must also accommodate algorithmic changes and new computational areas opened by advances in technology and scientific research methods.
Addressing the above issues is quite a tough challenge. It involves curricular changes, which take moderate to extensive time on the part of the teacher to correctly weave into an existing program. Teachers typically teach using the framework used to teach them. We must help teachers modify and enhance their frameworks based on the most current software, hardware, and algorithmic advances. Preparation time for a teacher is a particularly rare commodity. It is quite practical to foster a community of teaching practitioners to develop a body of materials for use by other teachers.
Addressing These Issues
Several groups have made significant strides to address these issues. Bob Panoff and the National Computational Science Institute (NCSI), created the Computational Science Education Reference Desk (CSERD). He continues to lead the effort in extending it as a pathway project of the National Science Digital Library (NSDL) effort. David Joiner has created a series of example programs for CSERD designed to be an intermediate step between "hello world" style examples for parallel computing and full blown scientific models. Each of these example programs are designed to show speed-up with typical resources available in student labs and include real time visualization, so that students can "see" speedup happen. These resources give our science students potent tools and our teachers useful curricular examples. NCSI also runs a broad spectrum of week-long workshops for all flavors of college and university science teachers, covering a range of computational methods and levels of experience. Carnegie Mellon University has created Alice, a free 3D interactive modeling environment which its' authors have used to introduce object oriented programming to middle school, high school, and community college students. It incorporates a very natural approach to parallel programming. Drs. Shiflet, Landau, Swanson, Helland, Yasar, and others are certainly making significant contributions to Computational Science at their institutions.
The authors of this article are seeking to make an impact on Computational Science education by introducing appropriate models at the middle and high school levels. The earlier we reach students, the greater the life-long impact.
Our goals are quixotic, but simple. We are not looking to a future computational infrastructure; we seek to exploit the hidden, existing, computational infrastructure. Moore's Law and the success of the PC manufacturers amply point to an abundance of computer cycles surrounding us. We want to give access to middle school and high school students, access to the scientific tools currently used in colleges and universities. It has to be sufficiently flashy to compete with the diversions of the video game culture. The students also need to learn the science involved and the associated operational skills. The really big goal is to fully engage reasoning skills in a progressively complex open-ended self-directed exploration.
As an example of how the existing computational infrastructure can be leveraged for HPC education, consider GROMACS, a molecular dynamics software package primarily designed for bimolecular systems such as proteins and lipids. It supports simulations that help researchers discover how a molecule, for example a string of amino acids, might fold upon itself as it becomes a protein, the building blocks of the human body. As the simulation progresses it shows how different parts of the biomolecule might interact with each other.
GROMACS is a complex fully-featured tool. We are working on some recipes for both teachers and students that will help them have successful guided explorations. We are motivating the use of GROMACS by noting the relative simplicity of RNA and DNA molecules which are "just" composed of chains of four bases. Identifying their interaction sites in 3 dimensions is a daunting computational task. Proteins, composed of chains of the twenty amino acids, are the most structurally complex macromolecules known. For instance there are 1.6 x 10^60 different DNA chains of length 100. For every one of these DNA chains there are 7.9x10^69 different protein chains. There are 1.3x10^130 different protein chains of length 100. Given the limitations of the human lifespan, statistical methods are needed to identify stable configurations in a timely fashion.
Teachers and students need immediate access to HPC environments for exploration of GROMACS and other computational science applications, yet apparently few have HPC resources close at hand. We have figured-out several ways to bring relatively high performance computational resources to students. Paul Gray has previously created the Bootable Cluster CD (BCCD) as a way to transform a run-of-the-mill Windows or Macintosh lab into a high speed computational cluster in a matter of minutes. See http://bccd.net/ for more information. One reason we chose GROMACS is it is designed to run on clusters. We are working on a GROMACS curriculum module for the BCCD that will have the tools and educational guidance to make it accessible at middle school, high school, and at the undergraduate level.
But this is not all. Tom Murphy created two clusters at Contra Costa College to support his high performance computing technici