<HEAD>
<TITLE>MapReduce-MPI Library Users Manual</TITLE>
<META NAME="docnumber" CONTENT="http://www.sandia.gov/~sjplimp/mapreduce.html">
<META NAME="author" CONTENT="Sandia National Laboratories, Copyright (2009) Sandia Corporation">
<META NAME="copyright" CONTENT="This software and manual is distributed under the modified Berkeley Software Distribution (BSD) License.">
</HEAD>

<BODY>

"MapReduce-MPI WWW Site"_mws :c

:link(mws,http://www.sandia.gov/~sjplimp/mapreduce.html)

:line

<H1></H1>

MapReduce-MPI Library :h2,c

This document describes the 15 March 2010 version of the open-source
MapReduce-MPI (MR-MPI) library that implements the "MapReduce
operation"_wiki popularized by Google on top of standard MPI message
passing.  The library is designed for parallel execution on
distributed-memory platforms, but will also operate on a single
processor.  The library is written in C++, is callable from hi-level
langauges (C++, C, Fortran, Python, or other scripting languages), and
requires no additional software except linking with an MPI library if
you wish to perform MapReduces in parallel.

Similar to the original Google design, a user performs a MapReduce by
writing a small program that invokes the library.  The user typically
provides two application-specific functions, a "map" and a "reduce",
that are called by the library when a MapReduce operation is executed.
"Map" and "reduce" are serial functions, meaning they are invoked
independently on individual processors on portions of your data when
performing a MapReduce operation in parallel.

The goal of this library is to provide a simple and portable interface
for users to create their own MapReduce programs, which can then be
run on any desktop or large parallel machine using MPI.  See the
Background section for features and limitations of this
implementation.

Source codes for the library is freely available for download from the
"MR-MPI web site"_mrmpi and is licensed under the modified "Berkeley
Software Distribution (BSD) License"_bsd.  This basically means it can
be used by anyone for any purpose.  See the LICENSE file provided with
the distribution for more details.

The distrubution includes a few examples of simple programs that
illustrate the use of MapReduce.

The authors of this library are "Steve Plimpton"_sjp at Sandia
National Laboratories and "Karen Devine"_kdd who can be contacted via
email: sjplimp at sandia.gov, kddevin at sandia.gov.

:link(wiki,http://en.wikipedia.org/wiki/Mapreduce)
:link(bsd,http://en.wikipedia.org/wiki/BSD_license)
:link(kdd,http://www.cs.sandia.gov/~kddevin)
:link(sjp,http://www.cs.sandia.gov/~sjplimp)
:link(mrmpi,http://www.cs.sandia.gov/~sjplimp/mapreduce.html)

"Background"_background.html :ulb,l
"What is a MapReduce?"_whatis.html :l
"Getting Started"_start.html :l
"Writing a MapReduce program"_program.html :l

"C++ Interface to the MapReduce-MPI Library"_interface_c++.html :l
  "Create a MapReduce object"_create.html :ulb,l
  "Copy a MapReduce object"_copy.html :l
  "Destroy a MapReduce object"_destroy.thml :l
  "MapReduce::add()"_add.html :l
  "MapReduce::aggregate()"_aggregate.html :l
  "MapReduce::clone()"_clone.html :l
  "MapReduce::collapse()"_collapse.html :l
  "MapReduce::collate()"_collate.html :l
  "MapReduce::compress()"_compress.html :l
    "MapReduce::multivalue_blocks()"_compress.html :ulb,l
    "MapReduce::multivalue_block()"_compress.html :l,ule
  "MapReduce::convert()"_convert.html :l
  "MapReduce::gather()"_gather.html :l
  "MapReduce::map()"_map.html :l
  "MapReduce::reduce()"_reduce.html :l
    "MapReduce::multivalue_blocks()"_reduce.html :ulb,l
    "MapReduce::multivalue_block()"_reduce.html :l,ule
  "MapReduce::scrunch()"_scrunch.html :l
  "MapReduce::sort_keys()"_sort_keys.html :l
  "MapReduce::sort_values()"_sort_values.html :l
  "MapReduce::sort_multivalues()"_sort_multivalues.html :l
  "MapReduce::kv_stats()"_stats.html :l
  "MapReduce::kmv_stats()"_stats.html :l
  "MapReduce::cummulative_stats()"_stats.html :l
  "KeyValue::add()"_kv_add.html :l
  "Settings and defaults"_settings.html :l,ule

"C interface to the MapReduce-MPI Library"_interface_c.html :l
"Python interface to the MapReduce-MPI Library"_interface_python.html :l
"Technical Details"_technical.html :l
"Examples"_examples/html :l
  "Word frequency"_examples.html#word :ulb,l
  "R-MAT matrices"_examples.html#rmat :l,ule
:ule

</BODY>
