Libraries

1988, Chare Kernel, University of Illinois at Urbana-Champaign

In 1988, it was simply a C library. The key notion was to break a program into small bits of work, called chares, and the scheduler would take care of packing these efficiently (in both space and time) onto processors. Mapping tasks onto threads instead of programming threads directly is an important concept. The Chare Kernel was later extended with some features for marshalling to address distributed memory machines, becoming Charm++ (http://charm.cs.uiuc.edu/research/charm/index.shtml).

Key influences on design of Intel Threading Building Blocks

Figure 12-1. Key influences on design of Intel Threading Building Blocks

1993, Standard Template Library (STL) for C++, Hewlett-Packard

STL was presented in November 1993 to the ANSI/ISO C++ committee and HP made it freely available in 1994. It was adopted into the C++ standard. Arch Robison related: “I once heard Stepanov give a great talk on generic programming, where he went through how to write a really generic greatest-common-factor algorithm. [The paper at http://www.stepanovpapers.com/gcd.pdf is similar to that talk, but with more mathematical emphasis.] In its full glory, generic programming is not just parametric types, but programming with concepts.” There is a very good explanation of generic programming in the box on Benefits of http://www.osl.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf. More works by Stepanov on STL and generic programming are listed later in this chapter.

1999, Java Specification Request #166 (JSR-166), Doug Lea

It was actually not standardized until later, but 1999 was the year Lea first introduced it. FJTask was an attempt to put Cilk-style parallelism into the stock Java library. It was proposed for JSR-166, but it did not make it into that standard. An overview is available at http://java.sun.com/developer/technicalArticles/J2SE/concurrency.

2001, Standard Template Adaptive Parallel Library (STAPL), Texas A&M

STAPL introduced the notion of recursive parallel ranges (“pRanges”) and the concept of using these ranges instead of iterators to bind parallel generic algorithms to parallel containers. STL lacks a recursive range. STAPL is more complex than Threading Building Blocks because it encompasses distributed memory architectures typical of High Performance Computing (HPC). Furthermore, STAPL supports the specification of arbitrary execution order for parallel task graphs. This allows the use of multiple scheduling policies to optimize execution time (http://parasol.tamu.edu/stapl).

2004, ECMA CLI parallel profile, Intel

This ECMA spec for the .NET virtual machine has classes for parallel iteration, designed by Arch Robison. See http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-335.pdf, pp. 554–555.

2006, McRT-Malloc, Intel Research

A scalable transactional memory allocator, McRT forms the basis of the Scalable Memory Allocator supplied with Intel Threading Building Blocks. Sections 3 and 3.1 of a 2006 paper by Hudson, Saha, Adl-Tabatabai, and Hertzberg (http://doi.acm.org/10.1145/1133956.1133967) describe roughly what is in the Scalable Memory Allocator in Threading Building Blocks.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.129.210.17