Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
e96106d
Fix missing return in payload recoder
mortenvp Jul 1, 2013
250c23b
Updating news
mortenvp Jul 1, 2013
b1e8c8c
Preparing to create tag 11.1.0
mortenvp Jul 1, 2013
972ae08
Updating documentation about dependencies
mortenvp Jul 4, 2013
c6d8ecc
Updating documentation about dependencies
mortenvp Jul 4, 2013
7edfe03
Updating documentation about dependencies
mortenvp Jul 4, 2013
b081c6a
Updating documentation about dependencies
mortenvp Jul 4, 2013
edbd993
Updating documentation about dependencies
mortenvp Jul 4, 2013
8637473
Updating documentation about dependencies
mortenvp Jul 4, 2013
86631f8
Updating documentation about dependencies
mortenvp Jul 4, 2013
aedec32
Updating documentation about dependencies
mortenvp Jul 4, 2013
e9455c9
Updating documentation about dependencies
mortenvp Jul 4, 2013
c9b602e
Updating documentation about dependencies
mortenvp Jul 4, 2013
bfb7ec0
Updating documentation about dependencies
mortenvp Jul 4, 2013
3b74775
Updating documentation about dependencies
mortenvp Jul 4, 2013
3c0a8f2
Updating documentation about dependencies
mortenvp Jul 4, 2013
48e0616
Updating documentation about dependencies
mortenvp Jul 4, 2013
c479575
Updating documentation about dependencies
mortenvp Jul 4, 2013
b07678f
Updating documentation about dependencies
mortenvp Jul 4, 2013
37e5f4f
Updating documentation about dependencies
mortenvp Jul 4, 2013
d3b30e5
Updating documentation about dependencies
mortenvp Jul 4, 2013
8c66b53
Updating documentation about dependencies
mortenvp Jul 4, 2013
d7ea80b
Updating documentation about dependencies
mortenvp Jul 4, 2013
afe8051
Updating documentation about dependencies
mortenvp Jul 4, 2013
71520ec
Updating documentation about dependencies
mortenvp Jul 4, 2013
a7449c6
Updating documentation about dependencies
mortenvp Jul 4, 2013
1ce775f
Merge branch 'master' into docs-manual-dependencies
mortenvp Jul 4, 2013
bf5c924
Adding new policies for direction of linear block decoder
mortenvp Jul 5, 2013
2b17123
Commiting the intial version of the forward policy
mortenvp Jul 5, 2013
00078fc
Working on the policies for the linear block decoder
mortenvp Jul 5, 2013
cdd7ab6
Working on the policies for the linear block decoder
mortenvp Jul 5, 2013
317cadc
Building blocks for directional block decoder done, missing unit-tests
mortenvp Jul 7, 2013
9fcbbec
kodo: support partial decoding
Jul 8, 2013
ad84950
Working on the partial decoding state variables
mortenvp Jul 8, 2013
ba17c4a
Intial commit of the partial decoding tracker
mortenvp Jul 8, 2013
7330b3b
Adding news
mortenvp Jul 8, 2013
9208cb1
Merge branch 'master' into adding-reverse-linear-block-decoder
mortenvp Jul 8, 2013
76195ae
Working on the revers linear block decoder
mortenvp Jul 17, 2013
42d1ad3
Adding on-the-fly stack
mortenvp Jul 20, 2013
93be979
Restructuring the tests
mortenvp Jul 20, 2013
0f464e9
Adding the partial decoding tracker
mortenvp Jul 20, 2013
51c5c35
Updating news
mortenvp Jul 20, 2013
50fa00d
Working on tests for the on-the-fly stacks
mortenvp Jul 22, 2013
e3c3078
Working on the partial decoding tests
mortenvp Jul 22, 2013
656e086
Merge pull request #33 from steinwurf/add-on-the-fly-stack
petya2164 Jul 22, 2013
fda2619
Preparing to create tag 11.2.0
petya2164 Jul 22, 2013
1d9926b
Improving partial decoding support
mortenvp Aug 2, 2013
f6def12
added benchmark feature to wscripts
jpihl Aug 2, 2013
64dcfd7
Merge pull request #34 from steinwurf/readied-benchmarks
jpihl Aug 2, 2013
38415ba
Remove std::cout from test
mortenvp Aug 6, 2013
bcfd165
Adding unit tests for the partial complete decoding
mortenvp Aug 7, 2013
b67b405
Change interation range for checking partial decoded symbols
mortenvp Aug 7, 2013
444b557
Merge branch 'master' into add_rank_payload
mortenvp Aug 7, 2013
e3819c0
Updating news
mortenvp Aug 7, 2013
8f98f92
Fix possibility to pass zero to rand_nonzero which is not allowed
mortenvp Aug 7, 2013
4124ba8
Preparing to create tag 12.0.0
mortenvp Aug 7, 2013
1d8715f
Fix name of directional encoder/decoder
mortenvp Aug 9, 2013
1633d4f
Fix merge with master linear_block_decoder
mortenvp Aug 9, 2013
ec235fa
Renaming linear_block_decoder to forward_linear_block_decoder
mortenvp Aug 9, 2013
65f1cb1
Fix backward linear block decoder test
mortenvp Aug 10, 2013
d8c2892
Reducing the number of interations in unit test to speed up test runs
mortenvp Aug 10, 2013
056b486
Adding delayed stack to the backward and forward linear block decoder…
mortenvp Aug 11, 2013
b0f0c4b
Modifying the coefficient API to allow non square decoding matrices
mortenvp Aug 12, 2013
1f40c6f
kodo: add option to save benchmark plots
Aug 12, 2013
b8b5d04
Only call pdf.savefig(transparent=True) if args.outfile defined
mortenvp Aug 12, 2013
0704683
Update README.rst
Aug 16, 2013
e6eb0bb
Update README.rst
Aug 16, 2013
96a47bf
Update getting_the_sourcecode.rst
Aug 16, 2013
bc62c37
Changing coefficients_count to coefficients_elements to better reflec…
mortenvp Aug 16, 2013
af913d7
removed pointer and factory typedefs
jpihl Aug 19, 2013
ce60d49
Merge pull request #35 from steinwurf/remove-unused-typedefs
jpihl Aug 19, 2013
890faa2
added unit tests for coefficient info and storage debugging, and impr…
jpihl Aug 19, 2013
69faef2
Merge pull request #36 from steinwurf/modify-debug-coefficient-storag…
jpihl Aug 19, 2013
721a94f
Adding additional unit-tests for the on-the-fly codes
mortenvp Aug 20, 2013
eee5825
initial commit
jpihl Aug 21, 2013
080c169
non-zero -> nonzero
jpihl Aug 21, 2013
f052936
windows fix
jpihl Aug 21, 2013
542eaed
fixed test
jpihl Aug 21, 2013
4cece75
fixed type error
jpihl Aug 26, 2013
aa69ac0
updated readme
jpihl Aug 26, 2013
9206a8a
Merge pull request #37 from steinwurf/enable-specification-of-number-…
jpihl Aug 26, 2013
68eb52d
Adding generic support for printing debug information
mortenvp Aug 26, 2013
0a47218
Merge branch 'master' into add-generic-debug-functions
mortenvp Aug 26, 2013
605853d
Working on the generic API
mortenvp Aug 26, 2013
1763931
Drop experiment with has macro
mortenvp Aug 26, 2013
88f4d4e
Adding more functions to the generic API
mortenvp Aug 26, 2013
f889dbc
Set fill value
mortenvp Aug 26, 2013
1f3de2f
Alternative implementation for msvc complicance
mortenvp Aug 26, 2013
19d8b29
Alternative implementation for msvc compliance
mortenvp Aug 26, 2013
f4083cf
Alternative implementation for msvc compliance
mortenvp Aug 26, 2013
5357876
Adding debug_on_the_fly_decoder
mortenvp Aug 26, 2013
6b441b7
Finalizing the on-the-fly debug
mortenvp Aug 26, 2013
827b8eb
Preparing to create tag 13.0.0
mortenvp Aug 26, 2013
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 41 additions & 1 deletion NEWS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,46 @@ News for Kodo
This file lists the major changes between versions. For a more detailed list
of every change, see the Git log.

Latest
13.0.0
------
* Major: Replaced the linear_block_decoder with the
bidirectional_linear_block_decoder layer. The bidirectional linear
block decoder layer uses a direction policy to determine whether to
perform Gaussian elimination from left-to-right or
right-to-left. Certain newer network coding algorithms can be
implemented efficiently utilizing this flexibility. Based on the
bidirectional layer we have added the forward and backwards linear
block decoder.
* Minor: Added support for specifying the number of nonzero symbols in the
sparse codes (this extends the API which previously only supported a
fraction of nonzero symbols to be specified).
* Minor: Added generic functions for printing debug information from codec
stacks where this functionality is supported.

12.0.0
------
* Major: Changed the partial_decoding_tracker to only provide the
functionality needed to detect "early" or partial decoding. The
monitor functionality has been moved to the largest_nonzero_index_decoder
layer.
* Minor: Added the payload_rank_encoder and payload_rank_decoder layers
which will explicitly exchange the rank of the encoder matrix and the
decoder matrix to support partial decoding.

11.2.0
------
* Minor: Added the partial_decoding_tracker layer which "monitors" the
coding vectors being passed to a decoder in order to detect early
decoding opportunities. This means that although not all packets have
yet been sent from the encoder, it might happen that we can decode
anyway. This kind of functionality is useful especially for applications
which require low delay.
* Minor: Added on-the-fly encoding and decoding stacks in
src/kodo/rlnc/on_he_fly_codes.hpp the on-the-fly stacks have the advantage
that they allow encoding and decoding to proceed even without having all
encoding symbols available.

11.1.0
------
* Minor: Added new cached_symbol_decoder layer, this layer does not perform
any decoding on the incoming symbol, but provides access to the encoded
Expand All @@ -13,6 +52,7 @@ Latest
* Minor: Added new example showing some one way to use some of the debug
layers in kodo. The example is in the examples folder called
use_debug_layers
* Bug: Fix missing return in the payload_recoder recode() function.

11.0.0
------
Expand Down
15 changes: 10 additions & 5 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
License
-------

To obtain a valid Kodo license **you must fil out the license request** form_.

Kodo is available under a research and educational friendly licensee, see the details in the LICENSE.rst file.

.. _form: http://steinwurf.com/license/


Introduction
------------

Expand All @@ -10,11 +20,6 @@ a multitude of build blocks and parameters that can be combined in
order to create codes. To ensure ease of use several codes are
predefined, and high level API's provided.

License
-------
Kodo is available under a research and educational friendly licensee,
see the details in the LICENSE.rst file.

Documentation
-------------
To get started see the manual here:
Expand Down
4 changes: 2 additions & 2 deletions benchmark/count_operations/codes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ namespace kodo
plain_symbol_id_reader<
// Codec API
aligned_coefficients_decoder<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down Expand Up @@ -87,7 +87,7 @@ namespace kodo
// Codec API
aligned_coefficients_decoder<
linear_block_decoder_delayed<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down
2 changes: 1 addition & 1 deletion benchmark/count_operations/wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# encoding: utf-8

bld.program(
features = 'cxx',
features = 'cxx benchmark',
source = ['main.cpp'],
target = 'kodo_count_operations',
use = ['kodo_includes', 'fifi_includes', 'sak_includes',
Expand Down
4 changes: 2 additions & 2 deletions benchmark/decoding_probability/codes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace kodo
// Codec API
aligned_coefficients_decoder<
linear_block_decoder_delayed<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down Expand Up @@ -56,7 +56,7 @@ namespace kodo
// Codec API
aligned_coefficients_decoder<
linear_block_decoder_delayed<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down
2 changes: 1 addition & 1 deletion benchmark/decoding_probability/wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# encoding: utf-8

bld.program(
features = 'cxx',
features = 'cxx benchmark',
source = ['main.cpp'],
target = 'kodo_decoding_probability',
use = ['kodo_includes', 'fifi_includes', 'sak_includes',
Expand Down
4 changes: 2 additions & 2 deletions benchmark/overhead/codes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ namespace kodo
// Codec API
aligned_coefficients_decoder<
linear_block_decoder_delayed<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down Expand Up @@ -56,7 +56,7 @@ namespace kodo
// Codec API
aligned_coefficients_decoder<
linear_block_decoder_delayed<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down
2 changes: 1 addition & 1 deletion benchmark/overhead/wscript_build
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# encoding: utf-8

bld.program(
features = 'cxx',
features = 'cxx benchmark',
source = ['main.cpp'],
target = 'kodo_overhead',
use = ['kodo_includes', 'fifi_includes', 'sak_includes',
Expand Down
34 changes: 33 additions & 1 deletion benchmark/throughput/codes.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <kodo/rlnc/full_vector_codes.hpp>
#include <kodo/linear_block_decoder_delayed.hpp>
#include <kodo/sparse_uniform_generator.hpp>
#include <kodo/backward_linear_block_decoder.hpp>


namespace kodo
Expand All @@ -30,7 +31,7 @@ namespace kodo
// Codec API
aligned_coefficients_decoder<
linear_block_decoder_delayed<
linear_block_decoder<
forward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
Expand Down Expand Up @@ -83,6 +84,37 @@ namespace kodo
> > > > > > > > > > > > > > > > >
{ };

/// RLNC decoder which uses the policy based linear block decoder
template<class Field>
class backward_full_rlnc_decoder
: public // Payload API
payload_recoder<recoding_stack,
payload_decoder<
// Codec Header API
systematic_decoder<
symbol_id_decoder<
// Symbol ID API
plain_symbol_id_reader<
// Codec API
aligned_coefficients_decoder<
backward_linear_block_decoder<
// Coefficient Storage API
coefficient_storage<
coefficient_info<
// Storage API
deep_symbol_storage<
storage_bytes_used<
storage_block_info<
// Finite Field API
finite_field_math<typename fifi::default_field<Field>::type,
finite_field_info<Field,
// Factory API
final_coder_factory_pool<
// Final type
backward_full_rlnc_decoder<Field>
> > > > > > > > > > > > > > >
{ };


}

92 changes: 74 additions & 18 deletions benchmark/throughput/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -340,7 +340,8 @@ struct sparse_throughput_benchmark :
/// The type of the base benchmark
typedef throughput_benchmark<Encoder,Decoder> Super;

/// We need access to the encoder built to adjust the density
/// We need access to the encoder built to adjust the number of
/// nonzero symbols
using Super::m_encoder;

public:
Expand All @@ -350,26 +351,27 @@ struct sparse_throughput_benchmark :
auto symbols = options["symbols"].as<std::vector<uint32_t> >();
auto symbol_size = options["symbol_size"].as<std::vector<uint32_t> >();
auto types = options["type"].as<std::vector<std::string> >();
auto density = options["density"].as<std::vector<double> >();
auto nonzero_symbols =
options["nonzero_symbols"].as<std::vector<uint32_t> >();

assert(symbols.size() > 0);
assert(symbol_size.size() > 0);
assert(types.size() > 0);
assert(density.size() > 0);
assert(nonzero_symbols.size() > 0);

for(const auto& s : symbols)
{
for(const auto& p : symbol_size)
{
for(const auto& t : types)
{
for(const auto& d: density)
for(const auto& n: nonzero_symbols)
{
gauge::config_set cs;
cs.set_value<uint32_t>("symbols", s);
cs.set_value<uint32_t>("symbol_size", p);
cs.set_value<std::string>("type", t);
cs.set_value<double>("density", d);
cs.set_value<uint32_t>("nonzero_symbols", n);

Super::add_configuration(cs);
}
Expand All @@ -384,8 +386,8 @@ struct sparse_throughput_benchmark :

gauge::config_set cs = Super::get_current_configuration();

double density = cs.get_value<double>("density");
m_encoder->set_density(density);
uint32_t symbols = cs.get_value<uint32_t>("nonzero_symbols");
m_encoder->set_nonzero_symbols(symbols);
}

};
Expand Down Expand Up @@ -436,27 +438,32 @@ BENCHMARK_OPTION(throughput_options)
gauge::runner::instance().register_options(options);
}

BENCHMARK_OPTION(throughput_density_options)
BENCHMARK_OPTION(throughput_nonzero_symbols_options)
{
gauge::po::options_description options;

std::vector<double> density;
density.push_back(0.1);
density.push_back(0.2);
density.push_back(0.3);
density.push_back(0.4);
density.push_back(0.5);
std::vector<uint32_t> nonzero_symbols;
nonzero_symbols.push_back(1);
nonzero_symbols.push_back(2);
nonzero_symbols.push_back(3);
nonzero_symbols.push_back(4);
nonzero_symbols.push_back(5);

auto default_density =
gauge::po::value<std::vector<double> >()->default_value(
density, "")->multitoken();
auto default_nonzero_symbols =
gauge::po::value<std::vector<uint32_t> >()->default_value(
nonzero_symbols, "")->multitoken();

options.add_options()
("density", default_density, "Set the density of the sparse codes");
("nonzero_symbols",
default_nonzero_symbols,
"Set the number of nonzero symbols of the sparse codes");

gauge::runner::instance().register_options(options);
}

//------------------------------------------------------------------
// FullRLNC
//------------------------------------------------------------------

typedef throughput_benchmark<
kodo::full_rlnc_encoder<fifi::binary>,
Expand Down Expand Up @@ -494,6 +501,55 @@ BENCHMARK_F(setup_rlnc_throughput2325, FullRLNC, Prime2325, 5)
run_benchmark();
}

//------------------------------------------------------------------
// BackwardFullRLNC
//------------------------------------------------------------------

typedef throughput_benchmark<
kodo::full_rlnc_encoder<fifi::binary>,
kodo::backward_full_rlnc_decoder<fifi::binary> >
setup_backward_rlnc_throughput;

BENCHMARK_F(setup_backward_rlnc_throughput, BackwardFullRLNC, Binary, 5)
{
run_benchmark();
}

typedef throughput_benchmark<
kodo::full_rlnc_encoder<fifi::binary8>,
kodo::backward_full_rlnc_decoder<fifi::binary8> >
setup_backward_rlnc_throughput8;

BENCHMARK_F(setup_backward_rlnc_throughput8, BackwardFullRLNC, Binary8, 5)
{
run_benchmark();
}

typedef throughput_benchmark<
kodo::full_rlnc_encoder<fifi::binary16>,
kodo::backward_full_rlnc_decoder<fifi::binary16> >
setup_backward_rlnc_throughput16;

BENCHMARK_F(setup_backward_rlnc_throughput16, BackwardFullRLNC, Binary16, 5)
{
run_benchmark();
}

typedef throughput_benchmark<
kodo::full_rlnc_encoder<fifi::prime2325>,
kodo::backward_full_rlnc_decoder<fifi::prime2325> >
setup_backward_rlnc_throughput2325;

BENCHMARK_F(setup_backward_rlnc_throughput2325, BackwardFullRLNC, Prime2325, 5)
{
run_benchmark();
}


//------------------------------------------------------------------
// FullDelayedRLNC
//------------------------------------------------------------------

typedef throughput_benchmark<
kodo::full_rlnc_encoder<fifi::binary>,
kodo::full_delayed_rlnc_decoder<fifi::binary> >
Expand Down
Loading