Tutorial: multicore programming using divide-and ...

4 downloads 0 Views 374KB Size Report
Divide-and-Conquer and Work Stealing. S. Tucker Taft. AdaCore. 24 Muzzey Street 3rd Fl. Lexington, MA 02421. +1-781-750-8068 x220 taft@adacore.com.
Tutorial: Multicore Programming using Divide-and-Conquer and Work Stealing S. Tucker Taft AdaCore 24 Muzzey Street 3rd Fl Lexington, MA 02421 +1-781-750-8068 x220

[email protected]

computations. We will provide examples using Intel's Cilk+ [1] language as well as using ParaSail [2], a new parallel programming language. The tutorial will then go on to investigate the work-stealing scheduling mechanism used by the Cilk+ runtime, Intel's Threaded Basic Blocks library [3], as well as the ParaSail virtual machine. Work-stealing [4] is an efficient way to handle the large number of very small picothreads created in abundance by these parallel programming technologies. We will end with a short discussion of heterogeneous parallel programming, using auxiliary chips such as Graphics Processing Units (GPUs) as general purpose processors (GPGPU) [5].

ABSTRACT This tutorial is aimed at engineers and students who are interested in learning more about parallel programming, particularly for systems with growing numbers of physical processors or cores.

Categories and Subject Descriptors D.1.3 [Programming Techniques]: Concurrent Programming – parallel programming.

General Terms Algorithms, Performance, Languages,.

Keywords

4. REFERENCES

Multicore Programming, Divide and Conquer, Work Stealing.

[1] Intel Corporation, Intel® Cilk++ SDK Programmer's Guide, 2009, http://software.intel.com/file/23634 (retrieved 10-Oct2012).

1. AUDIENCE FOR TUTORIAL

[2] Taft, S. T., Designing ParaSail, a new programming language, blog, 2009 http://parasail-programminglanguage.blogspot.com (retrieved 10-Oct-2012)

This tutorial is aimed at engineers and students who are interested in learning more about parallel programming, particularly for systems with growing numbers of physical processors or cores.

[3] Intel Corporation, Intel Threaded Building Blocks for Open Source, http://threadingbuildingblocks.org/ (retrieved 10Oct-2012).

2. PREREQUISITE SKILLS Some familiarity with threads, mutual exclusion, synchronization, scheduling, etc. will be useful.

[4] Blumofe, R. D., Leisersen, C. E., “Scheduling Multithreaded Computations by Work Stealing,” Journal of the ACM, pp. 720–748, September, 1999, http://supertech.csail.mit.edu/papers/steal.pdf (retrieved 10Oct-2012)

3. TUTORIAL TOPICS This tutorial will introduce the attendee to some of the issues of parallel programming for multicore systems. We will discuss some of the models used for creating and then managing efficiently large numbers of picothreads. The tutorial will first cover the basic technique of divide and conquer as it applies to splitting up computations into large numbers of separate sub-

[5] Harris, M., “About GPGPU.org,” General Purpose Computation on Graphics Hardware, 2012, http://gpgpu.org/about (retrieved 10-Oct-2012).

Copyright is held by the author/owner(s). HILT’12, December 2–6, 2012, Boston, Massachusetts, USA. ACM 978-1-4503-1505-0/12/12.

13