Components

Overview

PTL’s functionality is split into several components (shown in the table below), which are sold separately. The Tasks component is completely free to use, so you can download it today to get started with PTL! The remaining PTL components have fully-functional free trials that you can also download today.

PTL components offer parallel functionality that the .NET and Java standard libraries lack.

For example, PTL offers parallel for loop and invoke methods for data and task parallelism, which are currently not available in the Java standard library. The .NET Task Parallel Library already offers parallel for loop and invoke methods, but PTL also offers hundreds of ready-to-use parallel methods for many common algorithms (see PTL components below for examples).

Tasks Simplifies the work of writing concurrent and asynchronous code through parallel for loop and invoke methods.
Array Algorithms Parallel versions of many common algorithms that operate on ranges of arrays (e.g. Transform, Compare, Accumulate, AdjacentDifference, InnerProduct, Find, AdjacentFind, Search, Intersect, Union, Sort, etc.).
Iterator Algorithms Parallel versions of many common algorithms that operate on ranges of iterators (same algorithms as the Array Algorithms component).
Containers 32-bit and 64-bit containers that have been optimized for parallelism (e.g. List, LinkedList, Map, Set, Queue, PriorityQueue, Stack, BitArray, BitList). The containers contain parallel versions of many common methods (e.g. Add, Assign, Contains, CopyTo, Equals, Erase, IndexOf, Insert, Remove, RemoveAt).
Persistent Containers Very large, persistent 32-bit and 64-bit containers (e.g. Index, List, Map, Set) that can be used as a data repository for applications and contain parallel versions of common methods (e.g. Add, Assign, Contains, CopyTo, Equals, Erase, IndexOf, Insert, Remove, RemoveAt).
Matrices Matrix containers that are optimized for parallelism and parallel versions of common matrix operations (e.g. Add, Transform, Multiply).

The PTL functions mentioned above are generic functions which work with any type of data. Also, the PTL components are completely decoupled, which allows developers to easily extend PTL’s design for more specific needs (e.g. developers can write custom algorithms that work with PTL containers and custom containers that work with PTL algorithms).

Supporting Components

The PTL components are dependent on four additional PTL components (shown in the table below). These additional components are bundled with the dependent components, and you can use their functionality for more advanced development with PTL. You can view each supporting component's online documentation for more information.

Interfaces Defines interfaces or contracts that allow PTL components (e.g. Algorithms, Containers, Functors, Iterators) to interoperate.
Functors Contains function objects for various operations (e.g. arithmetic, comparison, logical, projection, specialized).
Iterators Defines adaptors for several types of iterators (e.g. BackInsert, Constant, Counting, Filter, FrontInsert, Insert, Transform, Zip).
Types Defines various types (e.g. bit arrays, pair, tuples) and adaptors for standard types (e.g. boolean, byte, character, double, float, integer, long, short, stream).