Exploring polyglot software frameworks in ALICE with FairMQ and fer
S. Binet (for the ALICE Collaboration)

TL;DR
This paper presents fer, a Go-based toolkit that interoperates with FairMQ, enabling polyglot distributed frameworks within the ALICE-O2 data processing environment to handle high data rates efficiently.
Contribution
Introduction of fer, a new Go-based toolkit that interoperates with FairMQ, facilitating polyglot programming in ALICE-O2's distributed data processing framework.
Findings
fer enables cross-language data exchange with FairMQ
Supports high data rates in ALICE-O2 framework
Demonstrates polyglot framework capabilities
Abstract
In order to meet the challenges of the Run 3 data rates and volumes, the ALICE collaboration is merging the online and offline infrastructures into a common framework: ALICE-O2. O2 is based on FairRoot and FairMQ, a message-based, multi-threaded and multi-process control framework. In FairMQ, processes (possibly on different machines) exchange data via message queues either through 0MQ or nanomsg. In turn, this enables developers to write their reconstruction or analysis process in whatever language they choose or deem appropriate for the task at hand, as long as that programming language can send and receive data through these message queues. This paper introduces fer, a Go-based toolkit that interoperates with the C++ toolkit FairMQ, to explore the realm of polyglot distributed frameworks.
Click any figure to enlarge with its caption.
Figure 1
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Figure 7
Figure 8
Figure 9
Figure 10
Figure 11
Figure 12
Figure 13Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
11institutetext: CNRS/IN2P3, LPC, F-63000 Clermont-Ferrand, France
Exploring polyglot software frameworks in ALICE with FairMQ and fer
\firstnameSébastien \lastnameBinet\fnsep on behalf of the ALICE collaboration 11 [email protected]
Abstract
In order to meet the challenges of the Run 3 data rates and volumes, the ALICE collaboration is merging the online and offline infrastructures into a common framework: ALICE-. is based on FairRoot and FairMQ, a message-based, multi-threaded and multi-process control framework. In FairMQ, processes (possibly on different machines) exchange data via message queues either through 0MQ or nanomsg. In turn, this enables developers to write their reconstruction or analysis process in whatever language they choose or deem appropriate for the task at hand, as long as that programming language can send and receive data through these message queues. This paper introduces fer, a Go-based toolkit that interoperates with the C++ toolkit FairMQ, to explore the realm of polyglot distributed frameworks.
1 Introduction
The ALICE collaboration is merging the online and offline infrastructures into a common framework: ALICE- ref-aliceo2 . This work is needed to meet the challenges of the Run 3 data rates and volumes. is a message-based, multi-threaded and multi-process control framework based on two libraries: FairRoot ref-fairroot and FairMQ ref-fairmq . Sophisticated processing pipelines can be modeled with FairMQ: router/dealer, request/reply, publish/subscribe, client/server, etc. The nodes of these pipelines are processes (possibly on different machines) exchanging data via message queues either through ZeroMQ ref-zeromq or nanomsg ref-nanomsg .
From the standpoint of the FairMQ toolkit, the programming language used to implement a given process in the pipeline is irrelevant, as long as data is correctly propagated through the message queues. This enables developers to write their reconstruction or analysis process in whatever language they choose or deem appropriate for the task at hand.
This paper presents fer, a Go-based ref-golang library compatible and interoperable with FairMQ. This paper starts with a brief introduction of the builtin features that make Go a solid choice when dealing with I/O and concurrency. The principal components of fer and how they interact with C++ FairMQ will then be described. Finally, Sec. 4 will report on the performance (CPU, VMem) of fer and conclude with the main figures of merit of fer, in the context of deployment in a distributed computing setup.
2 FairMQ concepts
FairMQ is a distributed processing toolkit, written in C++, with pluggable transports (ZeroMQ, nanomsg, shmem, InfiniBand). In FairMQ, the bulk of the processing is performed by devices: UNIX processes that are connected with other devices through message queues. Devices can be connected in various ways, through a wide variety of topologies: router/dealer, request/reply, publish/subscribe, client/server, etc. The medium used for the connection between devices can be chosen among the following options: tcp, udp, ipc, inproc, shared-memory. Figure 1 shows a typical FairMQ processing pipeline, fanning out data read off a source (sampler) to a pair of processors and then fanning in the data to a single output sink.
FairMQ applications are currently configured via a JSON configuration file, declaring the devices, the ports they are listening on or sending data to, the type and topology of the message queues, etc. An example of such a configuration file is shown in Fig. 2.
The reference list from the paper itself. Each links out to its DOI / PubMed record.
- 1(1) M. Al-Turany et al. ALFA: The new ALICE-FAIR software framework, Journal of Physics: Conference Series, Volume 664 , 072001 (2015)
- 2(2) M. Al-Turany et al. The Fair Root framework, Journal of Physics: Conference Series, Volume 396 , 022001 (2012)
- 3(3) https://github.com/Fair Root Group/Fair MQ , visited: August 2018
- 4(4) http://zeromq.org/ ( v 4.2.5 , visited: August 2018)
- 5(5) https://nanomsg.org/ ( v 1.1.5 , visited: August 2018)
- 6(6) A. Manafov and A. Lebedev, DDS: The Dynamic Deployment System, GSI Report 2015-1, p 371 (2015) doi:10.15120/GR-2015-1-INFRASTRUCTURE-IT-04
- 7(7) The Go programming language, https://golang.org ( v 1.11 , visited: August 2018)
- 8(8) C. A. R. Hoare, Communications of the ACM Volume 21 Issue 8, pp 666-677 (1978)
