Jim Plank's Software
Erasure Coding and Galois Field Arithmetic
To make best use of these codes, please read the following tutorial and accompanying
A Comprehensive Open Source Library for Galois Field Arithmetic, Revision 0.1.
January, 2013. The intent of this library is to provide implementations of every technique
for performing Galois Field arithmetic for erasure coding. In particular, the library uses
the Intel SIMD instrutions for performing multiplication of a region by a constant extremely
- Jerasure: A Library in C/C++ Facilitating Erasure Coding for Storage Applications. Original: September, 2007. Version 1.2: August, 2008.
This includes Reed-Solomon coding, Cauchy Reed-Solomon coding, general
bit-matrix coding, Reed-Solomon coding optimized for RAID-6, Liberation coding, Blaum-Roth coding and Liber8tion coding.
provides some tutorial material on matrix and bit-matrix based erasure coding.
- Jerasure version 1.2A: This is pretty much the same as Jerasure 1.2, only released under the New BSD License rather
than the LGPL License.
- Open Source Encoder and Decoder for SD Erasure Codes -- these are from my 2013 FAST paper with Mario Blaum and Jim Hafner.
and X-Sets: C++ Programs for Optimizing Matrix-Based Erasure Codes for Fault-Tolerant Storage Systems, December, 2010.
- Fast Galois Field Arithmetic Library in C/C++.
April, 2007. This is a library for doing fast Galois Field arithmetic operations for
GF(2w)), for any w from 1 to 32. It changes its algorithms for
different values of w to optimize for speed and memory. This has been supplanted
by GF-Complete above.
- GFLIB. June, 2003.
This is an older library that contains Galois Arithmetic code for w=8 and w=16
only. The performance of w=8 is lacking as compared to the 2007 code. It does,
however, implement Vandermonde-matrix based Reed-Solomon coding and decoding.
James S. Plank, ``A
Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems,''
Software -- Practice & Experience, 27(9), September, 1997, pp. 995-1012.
James S. Plank and Ying Ding,
Correction to the 1997 Tutorial on Reed-Solomon Coding,''
Software -- Practice & Experience, 35(2), February, 2005, pp. 189-194.
All the LoCI software may be found at the LoCI web site.
Jgraph is a program that takes the description of a graph or graphs as
input, and produces a postscript file on the standard output. Jgraph
is ideal for plotting any mixture of scatter point graphs, line
graphs, and/or bar graphs, and embedding the output into LaTeX, or
any other text processing system that can read postscript.
Ickp is a library that enables users of the Intel iPSC/860 to checkpoint
the execution state of their programs to disk. The major use for ickp
is to provide fault-tolerance and/or coarse-grained job swapping to
Libckpt is a portable checkpointing tool for Unix.
It provides a mechanism for enabling fault-tolerance for
Libckpt implements most optimizations that have been proposed
to improve the performance of checkpointing.
Additionally, it implements ``user-directed'' checkpointing, a new
optimization unique to Libckpt.
This page contains pointers to various application programs that
I have used for checkpointing.
This is a library that contains the red-black tree, doubly-linked list and
fields code below. It was updated in 1999, and is easier to use than
the previous code that I had. The old code may be obtained from the links
below, but I recommend that you use this code.
This contains code for using generic red-black trees. Red-black
trees are a dynamic data structure in which all operations are
guaranteed to perform in log time. The code is ansi or non-ansi C,
and is very easy to use.
Dlist: Code for Doubly-Linked
This contains C code for using generic doubly-linked lists.
Fields: Code for fields processing
This makes input processing in C easier, and is used in CS360/CS460.