/mpllib

Official library for the MPL compiler (https://github.com/mpllang/mpl)

Primary LanguageStandard MLMIT LicenseMIT

mpllib

Official library for the MPL compiler for Parallel ML. MPL extends Standard ML with support for (nested) fork-join parallelism, and has excellent multicore performance. This library contains a variety of parallel algorithms, data structures, and utilities, including:

  • sequences, sets, dictionaries, matrices, concurrent collections
  • sorting, searching, shuffling
  • text processing (tokenization, string search)
  • images (.ppm, .gif formats)
  • graph processing (CSR and edge list formats)
  • audio (signal processing and .wav format)
  • computational geometry (nearest neighbors, meshes, triangulation, convex hull)
  • command-line arguments
  • benchmarking
  • and more...

To see these in action, check out the Parallel ML benchmark suite.

This library is compatible with the smlpkg package manager.

Usage

$ smlpkg add github.com/mpllang/mpllib
$ smlpkg sync

And then add one of the following .mlb source files to your project.

Library sources

Two source files:

  • lib/github.com/mpllang/mpllib/sources.mpl.mlb
  • lib/github.com/mpllang/mpllib/sources.mlton.mlb

The former is for use with MPL, the latter with MLton.

Documentation

Primitives for parallelism and concurrency

Files and Command-line Arguments

Sequences

Sorting and Permutations

Searching

Graphs

Geometry

  • structure Geometry2D
  • structure Geometry3D
  • structure Topology2D
  • structure MeshToImage
  • structure NearestNeighbors

Images

Audio

  • structure NewWaveIO
  • structure Signal

Text

  • structure Tokenize
  • functor MkGrep

Matrices

  • structure TreeMatrix

Augmented Maps

  • functor PAM

Collections

  • structure Hashset
  • structure Hashtable
  • functor ChunkedTreap
  • structure ParFuncArray