[Mnet-devel] erasure code optimization project

Lenny G Arbage alengarbage at yahoo.com
Thu Aug 5 17:02:20 BST 2004


--- Zooko <zooko at zooko.com> wrote:
> ...
>
> Now do likewise with the other implementation.  Now
> optimize one of 
> them and
> send me the patch!

  Would you be interested in a 10x speed improvement? 
Large-block FECs can really outperform their
counterparts for file-size data.  Comparison of
LDPC/LDGM (found at
http://www.inrialpes.fr/planete/people/roca/mcl/mcl_download.html)
to the Plank encoder/decoder is very encouraging (I
didn't fiddle around with getting the Rizzo code to
compile):

time ~/tmp/ecopt/plankerasureimpl/rs_encode_file r1 84
170 r1.pcoded/x
 
real    0m0.273s
user    0m0.190s
sys     0m0.010s

time ~/client/fileCoder r1 84 170 x
 
real    0m0.025s
user    0m0.010s
sys     0m0.010s

************ ~= 11x faster!  *****************


Decoding is just as dramatic:

time ~/tmp/ecopt/plankerasureimpl/rs_decode_file x >
r1.decoder 2>decoder.log
 
real    0m0.148s
user    0m0.100s
sys     0m0.050s


time ~/client/fileDecoder 84 170 x
recovered file after 110 blocks.
 
real    0m0.011s
user    0m0.010s
sys     0m0.000s

************ ~= 13x faster!  *****************


  Notice that the decode step for LDGP requires
"slightly more than k" blocks to succeed.  I don't
know what the exact bounds for this number are, but I
believe you can make hard guarantees about what this
value would be, with the common case coming in below
this value.  Requiring more than k blocks to
reconstruct is a tradeoff you'd have to consider.  And
anyway, I may not have picked optimal values for the
parameters into the coder/decoder.  There is a paper
at the website that goes into some depth about
"inefficiency," and shows that values of about k*1.05
are achievable.

  The library was built to support reliable multicast
protocols, and thus all the code/samples are socket-
instead of file-based.  I've written a wrapper library
with sample file coder/decoder programs (which I used
to get the above numbers).  If you are interested in
investigating this for Mnet, I'd be happy to check it
into the ecopt repository.


> I intend to do that last step myself, but first I'm
> going to help an 
> Mnet newbie
> set up a private Mnet network, and update the Mnet
> docs so that the 
> next such
> newbie won't need my help.

  Excellent! 
  
  Lenny



		
__________________________________
Do you Yahoo!?
Read only the mail you want - Yahoo! Mail SpamGuard.
http://promotions.yahoo.com/new_mail 


More information about the Mnet-devel mailing list