Strategies for Preparing Computer Science Students for the Multicore World
Total Page:16
File Type:pdf, Size:1020Kb
Strategies for Preparing Computer Science Students for the Multicore World Richard Brown Elizabeth Shoop Joel Adams Curtis Clifton St. Olaf College (USA) Macalester College (USA) Calvin College (USA) Rose-Hulman Institute of [email protected] [email protected] [email protected] Technology (USA) [email protected] Mark Gardner Michael Haupt Peter Hinsbeeck Virginia Tech University (USA) Hasso-Plattner-Institut, University of Intel Corporation (Germany) [email protected] Potsdam (Germany) [email protected] [email protected] ABSTRACT for the foreseeable future. Nowadays, nearly all new computers provide at least two cores, and computers with 32 or more cores Multicore computers have become standard, and the number of can be constructed with commodity parts. In a few years, cores per computer is rising rapidly. How does the new demand “manycore” computers with hundreds or thousands of cores per for understanding of parallel computing impact computer science computer will become available [9]Error! Reference source not education? In this paper, we examine several aspects of this found.. question: (i) What parallelism body of knowledge do today’s Before the emergence of multi-core commodity computing students need to learn? (ii) How might these concepts and (approximately 2006), sequential software typically enjoyed practices be incorporated into the computer science curriculum? performance improvements as a direct consequence of hardware (iii) What resources will support computer science educators, performance improvements. Improvements came in both speed including non-specialists, to teach parallel computing? (iv) What and parallelism, in which multiple computational actions occur at systemic obstacles impede this change, and how might they be the same time. This parallelism within a CPU was largely out of overcome? We address these concerns as an initial framework for the view of a programmer, although the software that responding to the urgent challenge of injecting parallelism into programmers produced automatically benefited from it. But now, computer science curricula. programmers will have to write software that explicitly and Categories and Subject Descriptors correctly takes advantage of parallelism from multiple cores operating simultaneously, in order to obtain the hardware K.0 Computing Milieux/General; K.3.2 Computer Science speedups available on multi-core computers. Software products Education and systems that do not capitalize on the additional cores in a General Terms computer will be at a competitive disadvantage against those that Algorithm, Design, Performance, Reliability, Theory make effective use of multi-core parallelism. Programmers in the scientific and high-performance computing Keywords sectors have taken advantage of parallelism for decades, using Parallelism, Multi-core Computing specialized “supercomputer” hardware and/or networked clusters of computers. More recently, Internet-related companies have 1. INTRODUCTION become enormously successful by creating convenient ways to 1.1 The Multicore Revolution program in parallel using clusters, as in Google’s use of the map- We are motivated to teach more parallelism and concurrency in reduce programming model [38]. But with the arrival of multi- CS courses because of the necessary shift by hardware core computing, general consumer software products will now be manufacturers towards multi-core computer design. For over four programmed for parallelism. As we have seen with previous decades, hardware performance has improved at an exponential improvements in commodity hardware performance, we can rate, a remarkable feat that derives from ever increasing expect enhanced features requiring multi-core computing miniaturization of transistor components. Since transistors capabilities in coming versions of operating systems, productivity comprise the cores in a computer, i.e., the circuits within a software, web browsers, and other products. Other applications, computer’s central processing unit (CPU) that are capable of instead of capitalizing on increased performance, will take executing computer instructions, tinier transistors made it possible advantage of multi-core systems to offer the same level of service to create more and more powerful cores, in terms of both logical with lower power consumption. For example, mobile phones will capability and speed. This continued until the last decade, when soon have multi-core CPUs in order to operate at lower the industry began to encounter physical limitations on the speed frequencies and prolong battery life [119][108]. Thus, in every of a single core. Since that time, computer performance has computing sector, programmers and system designers must now improved primarily by increasing the number of cores per gain a deep understanding of parallel computing in order to obtain computer rather than the speed of a core. This trend will continue 1 greater or even the same performance from a multi-core computer Furthermore, in practice, implementation choices between virtual as single-core machine once offered. or physical parallelism, or multi-core vs. distributed computing This makes it urgent for computer science (CS) students to gain vs. a hybrid system, change quickly based on the resources broad exposure to concepts of parallelism. The parallel features available in a particular system. Thus, “parallel” as a generic term of a multi-core computing system represent a new kind of is useful even for practitioners and specialists. We note that even resource available for solving problems with computing. CS if the computing industry were not shifting to multi-core graduates who have studied parallelism will bring understanding computation at this time, we might now be conducting an ITiCSE of that technology to their careers, and employers will working-group strategic study in response to the explosion of increasingly demand it. In some countries, curricular change can distributed computing (e.g., Google’s use of map-reduce occur instantly through centralized decision-making; for example, computation [38]). as Intel’s Michael Wrinn points out, all CS students in China now Our document has a bias towards teaching principles of study parallelism, giving Chinese CS graduates a competitive parallelism using experiential learning. We affirm the research advantage in the global employment markets [126]. Broad-based literature endorsing active learning strategies, even though the curricular change is more challenging in countries where present-day tools students may use to get their hands-on curriculum decisions are made more locally. experience may soon pass away. We also believe that students who learn the most enduring parallelism principles available will 1.2 Strategies For Teaching Parallelism be best equipped for the imminent flow of new tools and Therefore, we formed our working group in order to develop techniques that will emerge during this new wave of parallel strategies for expediently and effectively incorporating parallelism computing. into undergraduate CS courses and curricula. It is not our purpose to formulate a call for bringing more parallelism into CS 1.3 Overview education, since industry and academic leaders have already made The following sections of this document consider strategies for that case compellingly [13][125][9]. Instead, our mission is to introducing parallelism in CS curricula by examining several consider how the CS education community can respond aspects of such strategies. strategically, productively, and as quickly as possible. In Section 2, we present a framework for expressing parallelism In order to explore our topic fully, our team includes not only CS content that integrates both an educator’s goals and a educators from many types of academic institutions, but also from practitioner’s objectives. In Section 3, we explore teaching and national research laboratories and from the hardware industry. learning practices, including the issue of when and where to teach Our disciplinary areas of expertise range from low-level hardware concepts of parallelism within a CS curriculum. In Section 4, we architecture to high-level virtual systems and programming examine goals for online sharing of content materials, teaching languages. The results of our study will hopefully spark further strategies, assignments, and feedback among a supportive discussion and expedited action within the international CS community of CS educators. In Section 5, we suggest two education community. guidelines for bringing about the timely systemic change of Since we seek to advance global change, we must choose an injecting parallelism into CS curricula, and briefly addresses some approach to our task that is neutral to differences in disciplinary of the challenges presented by such a transformation. We viewpoints and institutional nature when possible. For example, summarize our findings and suggest further strategic steps in we intend to highlight key concepts and issues with potential Section 6. relevance at many points in a CS curriculum, such as the notion of 2. TOWARD A PARALLELISM BODY OF scalability, believing that such pivotal concepts and issues are likely to apply in most curricular and institutional settings. Thus, KNOWLEDGE our silence on a particular topic or tool should not be interpreted Parallelism and related fields of study have a long and deep as disapproval. Likewise, we desire to make no assumptions tradition. In addition to the underlying lasting concepts, there are about