summaryrefslogtreecommitdiff
path: root/README
diff options
context:
space:
mode:
authorJim Plank <plank@cs.utk.edu>2014-01-24 16:50:41 -0500
committerJim Plank <plank@cs.utk.edu>2014-01-24 16:50:41 -0500
commit9124ad138206efba650871cd8d27e9d051e55dfa (patch)
treedbcd83cf09035a9527d9db29d67d07be4d0a70f1 /README
parent9cca12d46fba0c80274685f2dde171bfacdcba73 (diff)
downloadjerasure-9124ad138206efba650871cd8d27e9d051e55dfa.tar.gz
Ran through all of the examples to make them current. I'll have to
do another sanity-checking pass, and fix multby_2 in the reed_sol code, but then we're done.
Diffstat (limited to 'README')
-rw-r--r--README39
1 files changed, 20 insertions, 19 deletions
diff --git a/README b/README
index b705d10..ae6cf4c 100644
--- a/README
+++ b/README
@@ -1,5 +1,7 @@
This is revision 2.0 of Jerasure. This is pretty much Jerasure 1.2 without the
-original Galois Field backend. Version 2.0 links directly to GF-Complete.
+original Galois Field backend. Version 2.0 links directly to GF-Complete, which
+is more flexible than the original, and *much* faster, because it leverages SIMD
+instructions.
External Documentation:
@@ -12,10 +14,9 @@ Custom usgae of GF-Complete is explained in this file (see below).
NOTE: You must have GF-Complete installed in order to use Jerasure 2.0.
-There are two directories:
+There are two directories of source code:
The src directory contains the jerasure code.
-
The Examples directory contains the example programs.
The makefile assumes that Examples is a subdirectory of the home directory.
@@ -33,7 +34,7 @@ Installing:
This will install the examples under PREFIX/bin, the library under PREFIX/lib
and the header files under PREFIX/include
-See individual source file to determine what the examples do.
+See individual source files to determine what the examples do.
Inclusion of GF-Complete:
@@ -44,8 +45,8 @@ determine the default field to use, if one is not specified.
If you would like to explore a using a different Galois Field implementation,
you can dynamically set the backend GF for a given word-size (w).
-The new galois.[ch] exports the following functions to be used by applications
-for dynamically setting the backend GF:
+The new galois.c and galois.h export the following functions to be used by applications
+for dynamically setting the back-end GF:
1.) galois_change_technique
@@ -53,21 +54,25 @@ for dynamically setting the backend GF:
void galois_change_technique(gf_t *gf, int w);
+ This is the recommended way for you to change techniques.
+
This function will take a pointer to a Galois field structure and set it as the
current backend for all operations in GF(2^w). Note that you must specify 'w'
here, since the internal GF structure is mostly opaque to Jerasure. Be sure to
change the technique with the correct structure and word-size.
- There are a few ways to get a pointer to a gf_t structure: via GF-Complete or
- using the helper functions provided by Jerasure: galois_init_field and
- galois_init_composite_field.
+ There are a few ways to get a pointer to a gf_t structure: GF-Complete gives three
+ primitives for this -- create_gf_from_argv(), gf_init_easy() and gf_init_hard().
+ Please read the documentation on GF-Complete for how these work. By far, the
+ most powerful and easy is create_gf_from_argv(), which parses an argv-style
+ string. Otherwise, the most flexible is gf_init_hard().
- GF-Complete exposes create_gf_from_argv, gf_init_easy and gf_init_hard. See
- the GF-Complete documentation for more detail on how to use those functions.
- You can definitely create more complicated fields with the GF-Complete
- initialization functions, but the two helper functions provided by Jerasure
- (galois_init_field and galois_init_composite_field) can be used to create most
- of the supported Galois Fields.
+ In galois.c/galois.h, we have defined galois_init_field(), which is pretty much
+ identical to gf_init_hard(), except it performs memory allocation with malloc(),
+ and galois_init_composite_field(), which facilitates creating composite fields.
+
+ These are described below, but once again, we recommend using create_gf_from_argv()
+ or gf_init_hard() if you want to change your Galois field.
2.) galois_init_field
@@ -149,10 +154,6 @@ For more information on how to change the backing fields for Jerasure, please re
2.) Examples/reed_sol_time_gf.c: Runs more thorough timing and validation tests
for a backing GF (uses create_gf_from_argv to get gf_t pointer)
- 3.) Examples/reed_sol_hard_time_gf.c: Runs more thorough timing and validation tests
- for a backing GF (uses galois_init_field and galois_init_composite_field to get gf_t
- pointer)
-
Performance:
There are two performance-based test scripts: time_all_gfs_argv_init.sh and