In the last decades, the continuous proliferation of High-Performance Computing (HPC) systems and data centers has augmented the demand for expert HPC system designers, administrators and programmers. For this reason, most universities have introduced courses on HPC systems and parallel programming in their degrees. However, the laboratory assignments of these courses generally use clusters that are owned, managed and administrated by the university. This methodology has been shown effective to teach parallel programming, but using a remote cluster prevents the students from experimenting with the design, set up and administration of such systems.
This paper presents a methodology and framework to teach HPC systems and parallel programming using a small-scale cluster of embedded System-on-Chip (SoC) boards. These SoCs are very cheap, their processors are fundamentally very similar to the ones found in HPC, and they are ready to execute Linux out of the box, so they provide a great opportunity to be used in laboratory assignments for the students to experience
with assembling a cluster, setting it up, and configuring all the software ecosystem. In addition, this paper shows that the smallscale cluster can be used as the evaluation platform for parallel programming assignments.