robot-piglet ce9f8e1124 Intermediate changes 1 year ago
..
README.md 6128c83f47 Add yt into autobuild 1 year ago
codec.cpp 6128c83f47 Add yt into autobuild 1 year ago
codec.h 6128c83f47 Add yt into autobuild 1 year ago
helpers.cpp 6128c83f47 Add yt into autobuild 1 year ago
helpers.h 6128c83f47 Add yt into autobuild 1 year ago
isa_erasure.cpp 6128c83f47 Add yt into autobuild 1 year ago
isa_erasure.h 6128c83f47 Add yt into autobuild 1 year ago
lrc.cpp 6128c83f47 Add yt into autobuild 1 year ago
lrc.h 6128c83f47 Add yt into autobuild 1 year ago
lrc_isa.cpp 6128c83f47 Add yt into autobuild 1 year ago
lrc_isa.h d0303074a6 Add missed #include <functional> 1 year ago
public.cpp 6128c83f47 Add yt into autobuild 1 year ago
public.h 6128c83f47 Add yt into autobuild 1 year ago
reed_solomon.cpp 6128c83f47 Add yt into autobuild 1 year ago
reed_solomon.h 6128c83f47 Add yt into autobuild 1 year ago
reed_solomon_isa.cpp 6128c83f47 Add yt into autobuild 1 year ago
reed_solomon_isa.h 6128c83f47 Add yt into autobuild 1 year ago
ya.make ce9f8e1124 Intermediate changes 1 year ago

README.md

Erasure based codecs for arbitrary data

C++ wrapper for LRC and Reed-Solomon erasure codecs. There are two backends for LRC: Jerasure(http://jerasure.org) and ISA-L(https://github.com/intel/isa-l). ISA-L is much faster - it condsiders different instrucion sets to optimize speed of encode and decode. The only limitations now are if you don't have SSE4.2 instruction set (then base variant is as slow as Jerasure) or if you run it on aarch64 architecture (however, 2.29 version will be going to support fast implementation). However, we still have to keep Jerasure because it is incompatible due to some optimization in it which affect data layout in coded blocks. Also see https://wiki.yandex-team.ru/yt/userdoc/erasure/, https://wiki.yandex-team.ru/ignatijjkolesnichenko/yt/erasure/.

It is possible to use codecs LRC 2k-2-2 and Reed Solomon n-k for any data stream. All you need is to provide CodecTraits (see codecs_ut.cpp for examples). Note that ISA-L only supports WordSize equal to 8. If you use Jerasure codecs with bigger WordSize than MaxWordSize in public.h, codec is not guaranteed to be thread-safe.

You can use interface in codec.h or use the exact codec from lrc_isa.h, lrc_jerasure.h and reed_solomon.h if you like.