Welcome to the Documentation section! Here you can find examples of how to use parallel collections, information about how this framework works, as well as larger application examples. If you would like to start from the beginning, go to the Getting Started section, otherwise, pick one of the sections below.

Getting started

The definite place to get started with using parallel collections. Includes a basic introduction, some simple examples and tips on what to watch out for when using parallel collections.

Design overview

This section describes the overall design of parallel collections. It introduces zippable and reducables, stealers and mergers, and kernels and schedulers.

Sequential optimizations

This section describes the optimize block, used to speed up bulk operations on sequential Scala collections.

Parallel collections classes

The choice of a particular parallel collection can have a noticeable impact on performance. This section contains a comprehensive overview of different parallel collections classes describing their performance characteristics and internals.

Scheduler configuration

While the parallel collection schedulers have good performance irregardless of the workload, they are highly configurable. This section describes how you can set parallelism levels, granularities, scheduling policies, parallel execution thresholds and much more to tune the scheduler to the specifics of your application, if necessary.

Extending the framework

This section contains detailed information on extending parallel collections with custom collections, adding custom parallel operations and using the ScalaBlitz framework as a backend for your own data-parallel API or framework.

Example applications

This section contains several larger benchmark examples, a detailed walkthrough on how to parallelize these applications using parallel collections, and a performance evaluation for each example.

API reference

The API reference is a definitive source of information on the specific data-parallel operations and collections, as well as the internals of the framework.

Performance evaluation

ScalaBlitz are being evaluated on a per-commit basis on a wide of different microbenchmarks and several larger benchmark applications. The evaluation is performed on several platforms with different performance characteristics. This section contains quantitative insight on when parallelizing operations is beneficial and to what extent.