Skip to content

aff3ct/aff3ct-core

Repository files navigation

AFF3CT-core

GitLab Pipeline Status GitLab Code Coverage Documentation License: MIT

AFF3CT-core is a Domain Specific Embedded Language (DSEL) for streaming applications. It comes in the form of a C++11 library to link with.

Sequence and pipeline

Here are the main features of AFF3CT-core:

  • Definition of dataflow components: modules, tasks and sockets
  • Elementary modules and tasks implementations
  • Multi-threaded runtime with replication and pipeline parallel constructs

This DSEL/library is suitable for SDR systems, audio/video processing and more generally it matches single-rate Synchronous DataFlow (SDF) streaming applications.

It is used as the multi-threaded runtime of AFF3CT: a simulator for channel coding and a library for real time Software-Defined Radio (SDR) systems.

Linking with the Library

AFF3CT-core exposes two CMake targets:

  • aff3ct-core-shared-lib: AFF3CT-core shared library, includes and definitions
  • aff3ct-core-static-lib: AFF3CT-core static library, includes and definitions

For now, the recommended way to use AFF3CT-core is to add it as a add_subdirectory into your CMakeList.txt file.

Let us suppose that we want to produce the my-exe executable that links with AFF3CT-core static library, here is a minimal CMakeLists.txt file to generate the my-exe executable:

cmake_minimum_required(VERSION 3.5)

project(my_project CXX)

# require C++11 compiler ------------------------------------------------------
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

# create the `my-exe` executable from `src/main.cpp` --------------------------
add_executable(my-exe ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp)

# compile `AFF3CT-core` static lib --------------------------------------------
option(AFF3CT_CORE_COMPILE_STATIC_LIB "" ON) # compile the static lib
option(AFF3CT_CORE_COMPILE_SHARED_LIB "" OFF) # do NOT compile the shared lib
option(AFF3CT_CORE_TESTS "" OFF) # do NOT compile the tests
# here we suppose that `AFF3CT-core` sources are located in `lib/aff3ct-core/`
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/lib/aff3ct-core/)

# `my-exe` links with `AFF3CT-core` static lib --------------------------------
target_link_libraries(my-exe PUBLIC aff3ct-core-static-lib)

Documentation

  • User documentation
    • Slides used to teach AFF3CT-core to Master students in Computer Science at Sorbonne University
    • Contains many illustrative and simple use cases: a good document to start with AFF3CT-core
  • Developer documentation
    • Online doc that focuses on how AFF3CT-core is built and works
    • Particularly useful to learn how to modify AFF3CT-core and to contribute

License

The project is licensed under the MIT license.

How to cite AFF3CT-core

The main contributions of this work are described in the following journal article:

  • A. Cassagne, R. Tajan, O. Aumage, D. Barthou, C. Leroux and C. Jégo,
    A DSEL for High Throughput and Low Latency Software-Defined Radio on Multicore CPUs,“
    Wiley Concurrency and Computation: Practice and Experience (CCPE), 2023.
    [Open access article] [Bibtex entry]

To thank us even more, we encourage you to also cite the original AFF3CT journal article to give more visibility to our work:

  • A. Cassagne, O. Hartmann, M. Léonardon, K. He, C. Leroux, R. Tajan, O. Aumage, D. Barthou, T. Tonnellier, V. Pignoly, B. Le Gal and C. Jégo,
    AFF3CT: A Fast Forward Error Correction Toolbox!,“
    Elsevier SoftwareX, 2019.
    [Open access article] [Bibtex entry]

About

Domain specific embedded language for streaming applications.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published