Skip to content

This project provides backend and sample python-frontend for the Fast Forward Error Correction toolbox.

License

Notifications You must be signed in to change notification settings

simonrus/aff3ct-bfe

Repository files navigation

Introduction (Motivation)

The project allows 3rd party applications to remotely encode/decode messages using different FEC codecs from AFF3CT library

The messages and codec settings are transmitted using RPC over flatbuffers

The project can be used to compare FEC codec implementations with a well-known reference implementation

Current state

Still in development phase!

Rename from MISSFEC -> aff3ct-bfe (Aff3ct backend-fronend)

Components

This project provides backend and sample python-frontend for the Fast Forward Error Correction toolbox.

It has the following parts:

  • Aff3ct-server is a backend. It runs as a stand-alone server, executes RPC commands and allows to encode/decode messages using FEC.
  • RPC Protocol describes synchronous mechanism and messages used to -- configure aff3ct-library server -- push/pull data (vectors/matrices) from frontend to backend -- execute operations on the vectors/matrix using aff3ct-library
  • Aff3ct-client is a simple frontend, written in Python. It provides an interactive command shell to control remote aff3ct server

Mac M1 support

remove march=native option from cmake configuration

Repo management

1.1 Sync procedure with main repo

$ git pull sync master
$ git push -u origin master

Usefull links

https://www.uni-kl.de/channel-codes/channel-codes-database/more-ldpc-codes http://www.inference.org.uk/mackay/codes/alist.html

Pre-req

(Ubuntu)

$ sudo apt-get install pkg-config

ZeroMQ

$ sudo apt-get install libzmq3-dev

cxxtest(Optional)

$ sudo apt-get install cxxtest

Python3 (anaconda way)

$ conda create --name py3 python=3.5
$ conda activate py3
$ pip install -r requirements.txt

flatbuffers (local install)

$ git submodule update --init --recursive
$ cd 3rdparty/flatbuffers
$ cmake . && make -j 4 all

Macos

ZeroMQ

$ brew install zmq
# brew doesn't ship zmq.hpp, take it separetely https://github.com/zeromq/cppzmq/blob/master/zmq.hpp
$ wget --no-check-certificate --content-disposition https://raw.githubusercontent.com/zeromq/cppzmq/master/zmq.hpp
$ mv zmq.hpp aff3ct-server/include

Python

$ pip install -r requirements.txt

flatbuffers

$ brew install flatbuffers

Building

aff3ct-bfe

$ git clone [email protected]:simonrus/aff3ct-bfe.git
$ cd aff3ct-bfe/lib
$ git submodule update --init --recursive

Select compiler (Optional)

Aff3ct uses structures inside class to declare i.e. parameters. The GCC toolchain and gdb are not happy with this and ofter cannot find symbols.

For debugging puposes it is better to use CLANG $ export CC=/usr/bin/clang-6.0 $ export CXX=/usr/bin/clang++-6.0

aff3ct library

$ cd aff3ct
$ mkdir build
$ cd build
$ cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS="-funroll-loops -march=native" -DAFF3CT_COMPILE_EXE="OFF" -DAFF3CT_COMPILE_STATIC_LIB="ON" -DAFF3CT_COMPILE_SHARED_LIB="ON"
or for the Debug version
$ cmake .. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=" -march=native -ggdb -fno-limit-debug-info" -DAFF3CT_COMPILE_EXE="OFF" -DAFF3CT_COMPILE_STATIC_LIB="ON" -DAFF3CT_COMPILE_SHARED_LIB="ON"
then
$ make -j8
$ cd ../../../aff3ct-server

aff3ct binaries (optional) for compare own LDPC decoder implementation

$ cd aff3ct
$ mkdir build_exe
$ cd build_exe
$ cmake .. -G"Unix Makefiles" -DCMAKE_CXX_COMPILER="g++" -DCMAKE_BUILD_TYPE="Release" -DCMAKE_CXX_FLAGS="-funroll-loops -march=native"
$ make -j8

post steps

follow aff3ct-server/README.md

Running Samples

Server

$ aff3ct-server

Interactive Client

$ source ~/bin/anaconda.sh
$ conda activate py3

About

This project provides backend and sample python-frontend for the Fast Forward Error Correction toolbox.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published