{"title":"SMPI Courseware: Teaching Distributed-Memory Computing with MPI in Simulation","authors":"H. Casanova, Arnaud Legrand, M. Quinson, F. Suter","doi":"10.1109/EduHPC.2018.00006","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00006","url":null,"abstract":"It is typical in High Performance Computing (HPC) courses to give students access to HPC platforms so that they can benefit from hands-on learning opportunities. Using such platforms, however, comes with logistical and pedagogical challenges. For instance, a logistical challenge is that access to representative platforms must be granted to students, which can be difficult for some institutions or course modalities; and a pedagogical challenge is that hands-on learning opportunities are constrained by the configurations of these platforms. A way to address these challenges is to instead simulate program executions on arbitrary HPC platform configurations. In this work we focus on simulation in the specific context of distributed-memory computing and MPI programming education. While using simulation in this context has been explored in previous works, our approach offers two crucial advantages. First, students write standard MPI programs and can both debug and analyze the performance of their programs in simulation mode. Second, large-scale executions can be simulated in short amounts of time on a single standard laptop computer. This is possible thanks to SMPI, an MPI simulator provided as part of SimGrid. After detailing the challenges involved when using HPC platforms for HPC education and providing background information about SMPI, we present SMPI Courseware. SMPI Courseware is a set of in-simulation assignments that can be incorporated into HPC courses to provide students with hands-on experience for distributed-memory computing and MPI programming learning objectives. We describe some these assignments, highlighting how simulation with SMPI enhances the student learning experience.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125244154","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
E. Ayguadé, Lluc Alvarez, Fabio Banchelli, Martin Burtscher, Arturo González-Escribano, Julian Gutierrez, D. Joiner, D. Kaeli, Fritz G. Previlon, Eduardo Rodriguez-Gutiez, David P. Bunde
{"title":"Peachy Parallel Assignments (EduHPC 2018)","authors":"E. Ayguadé, Lluc Alvarez, Fabio Banchelli, Martin Burtscher, Arturo González-Escribano, Julian Gutierrez, D. Joiner, D. Kaeli, Fritz G. Previlon, Eduardo Rodriguez-Gutiez, David P. Bunde","doi":"10.1109/EduHPC.2018.00012","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00012","url":null,"abstract":"Peachy Parallel Assignments are a resource for instructors teaching parallel and distributed programming. These are high-quality assignments, previously tested in class, that are readily adoptable. This collection of assignments includes implementing a subset of OpenMP using pthreads, creating an animated fractal, image processing using histogram equalization, simulating a storm of high-energy particles, and solving the wave equation in a variety of settings. All of these come with sample assignment sheets and the necessary starter code.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125272261","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Evaluating the Wide Area Classroom after 10,500 HPC Students","authors":"J. Urbanic, T. Maiden","doi":"10.1109/EduHPC.2018.00009","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00009","url":null,"abstract":"As of mid-2018 we have taught over 10,500 students in the course of 58 events using the Wide Area Classroom, a novel distributed teaching platform. This has been a successful effort gauged by several important metrics. We describe both the technical and logistical structure of these events as well as the specific HPC curriculums which have proven to be most popular.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130585429","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Jupyter Notebooks and User-Friendly HPC Access","authors":"Ben Glick, Jens Mache","doi":"10.1109/EduHPC.2018.00005","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00005","url":null,"abstract":"In the modern world, having at least a basic un- derstanding of High Performance Computing is critical even for undergraduate students. In this project, we describe our extensible ecosystem of tools which has lowered the access barrier to HPC systems for less experienced users. Our ecosystem of tools serves as the ”one-stop” interface which allows users to focus on their research and teaching without remembering a lot of commands and syntax, or struggling with details like job submission or file systems. This environment is specially tailored for education. We provide a means for teachers to easily provide students access to information and assignments, and give students their own personal HPC sandbox, including access to a fully- functional, personalized Jupyter Notebook server.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129375020","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Filling the gap between education and industry: evidence-based methods for introducing undergraduate students to HPC","authors":"Fabio Banchelli, F. Mantovani","doi":"10.1109/EduHPC.2018.00008","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00008","url":null,"abstract":"Educational institutions provide in most cases basic theoretical background covering several computational science topics. However, High-Performance Computing (HPC) and Parallel and Distributed Computing (PDC) markets require specialized technical profiles. Even the most skilled students are often not prepared to face production HPC applications of thousands of lines nor complex computational frameworks from other disciplines nor heterogeneous multinode machines accessed by hundreds of users. In this paper, we offer an educational package for filling this gap. Leveraging the 4-years experience of the Student Cluster Competition, we present our educational journey together with the lessons learned and the outcomes of our methodology. We show how, in a time span of a semester and an affordable budget, a university can implement an educational package preparing pupils for starting competitive professional careers. Our findings also highlight that 78% of the students exposed to our methods remain within the HPC high-education, research or industry.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129054478","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Teaching HPC Systems and Parallel Programming with Small-Scale Clusters","authors":"Lluc Alvarez, E. Ayguadé, F. Mantovani","doi":"10.1109/EduHPC.2018.00004","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00004","url":null,"abstract":"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 single-board computers. These boards 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 represent a perfect laboratory playground for students experiencing how to assemble a cluster, setting it up, and configuring its system software. Also, we show that these small-scale clusters can be used as evaluation platforms for both, introductory and advanced parallel programming assignments.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114276533","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Vivek Sarkar, M. Grossman, Zoran Budimlic, S. Imam
{"title":"A One Year Retrospective on a MOOC in Parallel, Concurrent, and Distributed Programming in Java","authors":"Vivek Sarkar, M. Grossman, Zoran Budimlic, S. Imam","doi":"10.1109/EduHPC.2018.00010","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00010","url":null,"abstract":"Much progress has been made on integrating parallel programming into the core Computer Science curriculum of top-tier universities in the United States. For example, \"COMP 322: Introduction to Parallel Programming\" at Rice University is a required course for all undergraduate students pursuing a bachelors degree. It teaches a wide range of parallel programming paradigms, from task-parallel to SPMD to actor-based programming. However, courses like COMP 322 do little to support members of the Computer Science community that need to develop these skills but who are not currently enrolled in a four-year program with parallel programming in the curriculum. This group includes (1) working professionals, (2) students at USA universities without parallel programming courses, or (3) students in countries other than the USA without access to a parallel programming course. To serve these groups, Rice University launched the \"Parallel, Concurrent, and Distributed Programming in Java\" Coursera specialization on July 31, 2017. In 2017, the authors of that specialization also wrote an experiences paper about launching the specialization. In this paper, the sequel to our previous publication, we look back at the first year of the Coursera specialization. In particular, we ask the following questions: (1) how did our assumptions about the student body for this course hold up?, (2) how has the course changed since launch?, and (3) what can we learn about how students are progressing through the specialization from Coursera's built-in analytics?","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125573843","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Employing Student Retention Strategies for an Introductory GPU Programming Course","authors":"Julian Gutierrez, Fritz G. Previlon, D. Kaeli","doi":"10.1109/EduHPC.2018.00007","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00007","url":null,"abstract":"Graphics Processing Units (GPUs) have become a vital hardware resource for the industry and research community due to their high computing capabilities. Despite this, GPUs have not been introduced into the undergraduate curriculum of Computer Engineering and are barely covered in graduate courses. Bridging the gap between university curriculum and industry requirements for GPU expertise is ongoing, but this process takes time. Offering an immediate opportunity for students to learn GPU programming is key for their professional growth. The Northeastern University Computer Architecture Research Lab offers a free GPU programming course to incentivize students from all disciplines to learn how to efficiently program a GPU. In this paper, we discuss the methods used to keep students engaged in a course with no academic obligations. After applying these strategies, we were able to retain more than 80% of the students who started the course. Moreover, the students gave positive feedback on these strategies.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115285841","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Towards Developing a Repository of Logical Errors Observed in Parallel Code for Teaching Code Correctness","authors":"Trung Nguyen Ba, R. Arora","doi":"10.1109/EduHPC.2018.00011","DOIUrl":"https://doi.org/10.1109/EduHPC.2018.00011","url":null,"abstract":"Debugging parallel programs can be a challenging task, especially for the beginners. While the debuggers like DDT and TotalView can be extremely useful in tracking down the program statements that are connected to the bugs, often the onus is on the programmers to reason about the logic of the program statements in order to fix the bugs in them. These debuggers may neither be able to precisely indicate the logical errors in the parallel programs nor they may provide information on fixing those errors. Therefore, there is a need for developing tools and educational content on teaching the pitfalls in parallel programming and writing correct code. Such content can be useful to guide the beginners in avoiding commonly observed logical errors and in verifying the correctness of their parallel programs. In this paper, we 1) enumerate some of the logical errors that we have seen in the parallel programs (OpenMP, MPI, and CUDA) that were written by the beginners working with us, and 2) discuss the ways to fix those errors. The errors are mainly related to the data distribution, exiting distributed for-loops, and workload-imbalance. The documentation on these logical errors can contribute in enhancing the productivity of the beginners, and can potentially help them in their debugging efforts. We have added the code samples containing logical errors and their solutions in a Github repository so that the others in the community can reproduce the errors on their systems and learn from them. The content presented in this paper may also be useful for those developing high-level tools for detecting and removing logical errors in parallel programs.","PeriodicalId":315808,"journal":{"name":"2018 IEEE/ACM Workshop on Education for High-Performance Computing (EduHPC)","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-11-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116689861","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}