Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.7%) to scientific vocabulary
Keywords
Repository
C++ Message Queuing Library and Framework
Basic Info
Statistics
- Stars: 89
- Watchers: 12
- Forks: 34
- Open Issues: 29
- Releases: 26
Topics
Metadata Files
README.md
FairMQ
C++ Message Queuing Library and Framework
Docs: Book
Find all FairMQ releases here.
Introduction
FairMQ is designed to help implementing large-scale data processing workflows needed in next-generation Particle Physics experiments. FairMQ is written in C++ and aims to * provide an asynchronous message passing abstraction of different data transport technologies, * provide a reasonably efficient data transport service (zero-copy, high throughput), * be data format agnostic, and * provide basic building blocks that can be used to implement higher level data processing workflows.
The core of FairMQ provides an abstract asynchronous message passing API with scalability protocols
inspired by ZeroMQ (e.g. PUSH/PULL, PUB/SUB).
FairMQ provides multiple implementations for its API (so-called "transports",
e.g. zeromq and shmem (latest release of the ofi transport in v1.4.56, removed since v1.5+)) to cover
a variety of use cases
(e.g. inter-thread, inter-process, inter-node communication) and machines (e.g. Ethernet, Infiniband).
In addition to this core functionality FairMQ provides a framework for creating "devices" - actors which
are communicating through message passing. FairMQ does not only allow the user to use different transport
but also to mix them; i.e: A Device can communicate using different transport on different channels at the
same time. Device execution is modelled as a simple state machine that shapes the integration points for
the user task. Devices also incorporate a plugin system for runtime configuration and control.
Next to the provided devices and
plugins the user can extend FairMQ
by developing his own plugins to integrate his devices with external configuration and control services.
FairMQ has been developed in the context of its mother project FairRoot - a simulation, reconstruction and analysis framework.
Installation from Source
Recommended:
bash
git clone https://github.com/FairRootGroup/FairMQ fairmq_source
cmake -S fairmq_source -B fairmq_build -GNinja -DCMAKE_BUILD_TYPE=Release [-DBUILD_TESTING=ON]
cmake --build fairmq_build
[ctest --test-dir fairmq_build --output-on-failure --schedule-random -j<ncpus>] # needs -DBUILD_TESTING=ON
cmake --install fairmq_build --prefix $(pwd)/fairmq_install
Please consult the manpages of your CMake version for more options.
If dependencies are not installed in standard system directories, you can hint the installation location via
-DCMAKE_PREFIX_PATH=... or per dependency via -D{DEPENDENCY}_ROOT=... (*_ROOT variables can also be environment variables).
Installation via Spack
Prerequisite: Spack
bash
spack info fairmq # inspect build options
spack install fairmq # build latest packaged version with default options
Build FairMQ's dependencies via Spack for development: ```bash git clone -b dev https://github.com/FairRootGroup/FairMQ fairmqsource spack --env fairmqsource install # installs deps declared in fairmqsource/spack.yaml spack env activate fairmqsource # sets $CMAKEPREFIXPATH which is used by CMake to find FairMQ's deps cmake -S fairmqsource -B fairmqbuild -GNinja -DCMAKEBUILDTYPE=Debug -DBUILD_TESTING=ON
develop, compile, test
spack env deactivate # at end of dev session, or simply close the shell ```
Usage
FairMQ ships as a CMake package, so in your CMakeLists.txt you can discover it like this:
cmake
find_package(FairCMakeModules 1.0 REQUIRED)
include(FairFindPackage2)
find_package2(FairMQ)
find_package2_implicit_dependencies()
The FairFindPackage2 module is part of the FairCMakeModules package.
If FairMQ is not installed in system directories, you can hint the installation:
cmake
list(PREPEND CMAKE_PREFIX_PATH /path/to/fairmq_install)
Dependencies
- Boost
- CMake
- Doxygen
- FairCMakeModules (optionally bundled)
- FairLogger
- GTest (optionally bundled)
- ZeroMQ
Which dependencies are required depends on which components are built.
Supported platform is Linux. macOS is supported on a best-effort basis.
CMake options
On command line:
-DDISABLE_COLOR=ONdisables coloured console output.-DBUILD_TESTING=OFFdisables building of tests.-DBUILD_EXAMPLES=OFFdisables building of examples.-DBUILD_DOCS=ONenables building of API docs.-DFAIRMQ_CHANNEL_DEFAULT_AUTOBIND=OFFdisable channelautoBindby default- You can hint non-system installations for dependent packages, see the #installation-from-source section above
After the find_package(FairMQ) call the following CMake variables are defined:
| Variable | Info |
| --- | --- |
| ${FairMQ_PACKAGE_DEPENDENCIES} | the list of public package dependencies |
| ${FairMQ_<dep>_VERSION} | the minimum <dep> version FairMQ requires |
| ${FairMQ_<dep>_COMPONENTS} | the list of <dep> components FairMQ depends on |
| ${FairMQ_PACKAGE_COMPONENTS} | the list of components FairMQ consists of |
| ${FairMQ_#COMPONENT#_FOUND} | TRUE if this component was built |
| ${FairMQ_VERSION} | the version in format MAJOR.MINOR.PATCH |
| ${FairMQ_GIT_VERSION} | the version in the format returned by git describe --tags --dirty --match "v*" |
| ${FairMQ_PREFIX} | the actual installation prefix |
| ${FairMQ_BINDIR} | the installation bin directory |
| ${FairMQ_INCDIR} | the installation include directory |
| ${FairMQ_LIBDIR} | the installation lib directory |
| ${FairMQ_DATADIR} | the installation data directory (../share/fairmq) |
| ${FairMQ_CMAKEMODDIR} | the installation directory of shipped CMake find modules |
| ${FairMQ_BUILD_TYPE} | the value of CMAKE_BUILD_TYPE at build-time |
| ${FairMQ_CXX_FLAGS} | the values of CMAKE_CXX_FLAGS and CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE} at build-time |
Documentation
Owner
- Name: FairRoot Group at GSI
- Login: FairRootGroup
- Kind: organization
- Email: m.al-turany@gsi.de
- Location: GSI Darmstadt/ Germany
- Website: fairroot.gsi.de
- Repositories: 37
- Profile: https://github.com/FairRootGroup
CodeMeta (codemeta.json)
{
"@context": "https://doi.org/10.5063/schema/codemeta-2.0",
"@type": "SoftwareSourceCode",
"name": "FairMQ",
"description": "C++ Message Queuing Library and Framework",
"license": "./COPYRIGHT",
"datePublished": "2018-04-15",
"developmentStatus": "active",
"softwareVersion": "master",
"releaseNotes": "https://github.com/FairRootGroup/FairMQ/releases",
"codeRepository": "https://github.com/FairRootGroup/FairMQ/",
"readme": "https://github.com/FairRootGroup/FairMQ/#readme",
"issueTracker": "https://github.com/FairRootGroup/FairMQ/issues",
"identifier": "https://doi.org/10.5281/zenodo.1689985",
"maintainer": [
{
"@type": "ResearchOrganisation",
"@id": "https://ror.org/02k8cbn47",
"name": "GSI Helmholtz Centre for Heavy Ion Research"
}
],
"author": [
{
"@type": "Person",
"@id": "https://orcid.org/0000-0002-8071-4497",
"givenName": "Mohammad",
"familyName": "Al-Turany"
},
{
"@type": "Person",
"@id": "https://orcid.org/0000-0003-3787-1910",
"givenName": "Dennis",
"familyName": "Klein"
},
{
"@type": "Person",
"givenName": "Thorsten",
"familyName": "Kollegger"
},
{
"@type": "Person",
"@id": "https://orcid.org/0000-0002-6249-155X",
"givenName": "Alexey",
"familyName": "Rybalchenko"
},
{
"@type": "Person",
"givenName": "Nicolas",
"familyName": "Winckler"
}
],
"contributor": [
{
"@type": "Person",
"givenName": "Laurent",
"familyName": "Aphecetche"
},
{
"@type": "Person",
"givenName": "Sebastien",
"familyName": "Binet"
},
{
"@type": "Person",
"givenName": "Giulio",
"familyName": "Eulisse"
},
{
"@type": "Person",
"givenName": "Radoslaw",
"familyName": "Karabowicz"
},
{
"@type": "Person",
"givenName": "Matthias",
"familyName": "Kretz",
"email": "kretz@kde.org"
},
{
"@type": "Person",
"givenName": "Mikolaj",
"familyName": "Krzewicki"
},
{
"@type": "Person",
"givenName": "Andrey",
"familyName": "Lebedev"
},
{
"@type": "Person",
"givenName": "Teo",
"familyName": "Mrnjavac",
"email": "teo.m@cern.ch"
},
{
"@type": "Person",
"givenName": "Gvozden",
"familyName": "Neskovic"
},
{
"@type": "Person",
"givenName": "Matthias",
"familyName": "Richter"
},
{
"@type": "Person",
"@id": "https://orcid.org/0000-0002-5321-8404",
"givenName": "Christian",
"familyName": "Tacke"
},
{
"@type": "Person",
"givenName": "Florian",
"familyName": "Uhlig"
},
{
"@type": "Person",
"givenName": "Sandro",
"familyName": "Wenzel"
}
]
}
GitHub Events
Total
- Create event: 10
- Release event: 3
- Issues event: 6
- Watch event: 5
- Delete event: 5
- Issue comment event: 51
- Push event: 14
- Pull request review comment event: 4
- Pull request review event: 19
- Pull request event: 25
- Fork event: 1
Last Year
- Create event: 10
- Release event: 3
- Issues event: 6
- Watch event: 5
- Delete event: 5
- Issue comment event: 51
- Push event: 14
- Pull request review comment event: 4
- Pull request review event: 19
- Pull request event: 25
- Fork event: 1
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 47
- Total pull requests: 77
- Average time to close issues: over 1 year
- Average time to close pull requests: 10 days
- Total issue authors: 6
- Total pull request authors: 7
- Average comments per issue: 2.26
- Average comments per pull request: 1.22
- Merged pull requests: 61
- Bot issues: 0
- Bot pull requests: 6
Past Year
- Issues: 3
- Pull requests: 14
- Average time to close issues: about 16 hours
- Average time to close pull requests: 22 days
- Issue authors: 2
- Pull request authors: 4
- Average comments per issue: 2.67
- Average comments per pull request: 1.57
- Merged pull requests: 4
- Bot issues: 0
- Bot pull requests: 6
Top Authors
Issue Authors
- dennisklein (32)
- rbx (7)
- ktf (6)
- matthiasrichter (1)
- ironMann (1)
- ChristianTackeGSI (1)
Pull Request Authors
- rbx (38)
- dennisklein (20)
- dependabot[bot] (14)
- ktf (9)
- ChristianTackeGSI (6)
- MohammadAlTurany (1)
- knopers8 (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 0
- Total maintainers: 2
spack.io: fairmq
C++ Message Queuing Library and Framework (https://doi.org/10.5281/zenodo.1689985)
- Homepage: https://github.com/FairRootGroup/FairMQ
- License: []
Rankings
Maintainers (2)
Dependencies
- fair-software/howfairis-github-action 0.2.1 composite
- actions/checkout v3 composite