pargo

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 12, 2019 License: BSD-3-Clause Imports: 0 Imported by: 0

README

pargo

A library for parallel programming in Go

Package pargo provides functions and data structures for expressing parallel algorithms. While Go is primarily designed for concurrent programming, it is also usable to some extent for parallel programming, and this library provides convenience functionality to turn otherwise sequential algorithms into parallel algorithms, with the goal to improve performance.

Documentation: http://godoc.org/github.com/ExaScience/pargo and http://github.com/ExaScience/pargo/wiki

Documentation

Overview

Package pargo provides functions and data structures for expressing parallel algorithms. While Go is primarily designed for concurrent programming, it is also usable to some extent for parallel programming, and this library provides convenience functionality to turn otherwise sequential algorithms into parallel algorithms, with the goal to improve performance.

For documentation that provides a more structured overview than is possible with Godoc, see the wiki at https://github.com/exascience/pargo/wiki

Pargo provides the following subpackages:

pargo/parallel provides simple functions for executing series of thunks or predicates, as well as thunks, predicates, or reducers over ranges in parallel. See also https://github.com/ExaScience/pargo/wiki/TaskParallelism

pargo/speculative provides speculative implementations of most of the functions from pargo/parallel. These implementations not only execute in parallel, but also attempt to terminate early as soon as the final result is known. See also https://github.com/ExaScience/pargo/wiki/TaskParallelism

pargo/sequential provides sequential implementations of all functions from pargo/parallel, for testing and debugging purposes.

pargo/sort provides parallel sorting algorithms.

pargo/sync provides an efficient parallel map implementation.

pargo/pipeline provides functions and data structures to construct and execute parallel pipelines.

Pargo has been influenced to various extents by ideas from Cilk, Threading Building Blocks, and Java's java.util.concurrent and java.util.stream packages. See http://supertech.csail.mit.edu/papers/steal.pdf for some theoretical background, and the sample chapter at https://mitpress.mit.edu/books/introduction-algorithms for a more practical overview of the underlying concepts.

Directories

Path Synopsis
Package parallel provides functions for expressing parallel algorithms.
Package parallel provides functions for expressing parallel algorithms.
Package pipeline provides means to construct and execute parallel pipelines.
Package pipeline provides means to construct and execute parallel pipelines.
Package sequential provides sequential implementations of the functions provided by the parallel and speculative packages.
Package sequential provides sequential implementations of the functions provided by the parallel and speculative packages.
Package sort provides implementations of parallel sorting algorithms.
Package sort provides implementations of parallel sorting algorithms.
Package speculative provides functions for expressing parallel algorithms, similar to the functions in package parallel, except that the implementations here terminate early when they can.
Package speculative provides functions for expressing parallel algorithms, similar to the functions in package parallel, except that the implementations here terminate early when they can.
Package sync provides synchronization primitives similar to the sync package of Go's standard library, however here with a focus on parallel performance rather than concurrency.
Package sync provides synchronization primitives similar to the sync package of Go's standard library, however here with a focus on parallel performance rather than concurrency.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL