For many decades, the software industry relied on hardware manufacturers to deliver ever-faster processors. Anyone who purchased a computer 10–20 years ago may remember the megahertz race between Intel and AMD, when the clock speeds of new processors used to double approximately every 18 months. However, this trend ran into its physical limits around 2005.
Subsequently, processor manufacturers turned to parallelism as the primary means of sustaining performance improvements, ushering in the era of the multicore. Several of today’s mainstream consumer processors, such as the Intel Core i7, already have four or six physical cores, permitting up to 12 independent computations to be carried out simultaneously. Within the next few years, it is predicted that manycore machines, consisting of tens to hundreds of cores, will proliferate the market.
If traditional programming were likened to authoring a recipe, parallel programming would be analogous to managing a team of cooks collaborating on a banquet. By its nature, parallelism introduces many new challenges, including synchronization, communication, and load-balancing. The advent of manycore machines will revolutionize the way that software applications are to be developed, requiring a new or revised programming paradigm that is capable of parallelizing execution to exploit the machines’ full computational capabilities, whilst insulating application developers from its underlying complexities.
The University of Edinburgh stands at the forefront of this challenge. Its School of Informatics offers an MSc Computer Science degree that allows students to specialize in parallel, distributed, and high-performance computing. The 12-month degree consists of two semesters of lecture-based instruction, covering topics such as parallel algorithm design and multiprocessing architectures, followed by a substantive individual research project. The degree supports collaboration with the EPCC, a world-class research centre that hosts the UK’s fastest supercomputer, the 72,192-core ARCHER.
I studied for the aforementioned degree in 2012–2013. For my research project, “Scheduling Task-Parallel Programs in a Multiprogram Workload”, I investigated techniques for optimizing the performance of parallel programs running concurrently on a manycore machine, under the supervision of Dr Murray Cole and Dr Christian Fensch. Building on the task infrastructure of the .NET Framework, we developed a novel extension to the work-stealing task-scheduling algorithm for handling multiprogram workloads. Our scheduler infers each parallel program’s respective scalability, and partitions the machine’s processors among the said programs accordingly. Using a 64-core machine, we experimentally demonstrated that, for particular classes of algorithms, our multiprogram scheduler can achieve modest improvements over mainstream schedulers.
My studies were partially funded by a scholarship awarded under the Strategic Educational Pathways Scholarship Scheme (Malta). The scholarship was part-financed by the European Union – European Social Fund.