Chapter 1 MultiCore Parallelisation for Hume Abdallah Al Zain 1 , Greg Michaelson 2 , Kevin Hammond 3 Category: Research Paper Abstract: With the emergence of commodity multicore architectures, exploit- ing tightly-coupled parallelism has become increasingly important. Hume is a novel formally-motivated programming language oriented to developing software where strong assurance of resource use is paramount, in particular embedded ar- chitecture. Functional programming languages, such as Hume, are, in principle, well placed to take advantage of this trend, offering the ability to easily iden- tify threads for parallelism in multicore architectures. Unfortunately, obtaining real performance benefits has often proved hard to realise in practice. This paper outlines the design and implementation of Hume for multicore architectures. It presents preliminary results which suggest that there is strong potential for seam- less parallel gains in Hume programs. A key aspect of our approach is the use of a new and completely lock-free communication mechanism. Using this mecha- nism, we can obtain good parallel performance for suitable Hume programs, of up to 6.8 on eight cores. 1.1 INTRODUCTION Hume [18] is a contemporary programming language based on concurrent finite state automata controlled by transitions expressed in a rich polymorphic func- tional language. Hume has been designed to encompass different degrees of static analysis precision for different degrees of expressiveness, in particular for deter- mining resource bounds, in particular for time and space. Key to the Hume design is the concept of concurrent boxes, interacting through wires that link them both to 1 Heriot-Watt University, Edinburgh, UK; a.d.alzain@hw.ac.uk 2 Heriot-Watt University, Edinburgh, UK; greg@macs.hw.ac.uk 3 University of St Andrews, St Andrews, UK; kh@cs.st-and.ac.uk I–1