Skip to content

MPLLang/mpllib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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