This repository is now deprecated, AFF3CT-core
has been renamed in StreamPU
and moved here: https://github.com/aff3ct/streampu/.
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.
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.
AFF3CT-core
exposes two CMake targets:
aff3ct-core-shared-lib
:AFF3CT-core
shared library, includes and definitionsaff3ct-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)
- 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
- Slides used to teach
- 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
- Online doc that focuses on how
The project is licensed under the MIT license.
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]