Download presentation
Presentation is loading. Please wait.
Published byRichard Hawkins Modified over 6 years ago
1
Feedback on a first use of the ALFA and O2 software
Barthélémy von Haller
2
Use case Make an existing program publish histograms
Have another program get the histograms My program uses ROOT6, CMake, C++11 and boost ; it runs on SLC6. ROOT 6 histogram Same env as alfa/o2 Should have minimal impact on my programs. Those programs ultimately will run in o2 facility, today not.
3
Reminder from TDR : O2 stakeholders & SW design
« ALFA is the result of a common effort of the ALICE and FAIR experiments to provide the underlying communication layer as well as the common parts for a multi-process system. » ALFA for the communication
4
Expected steps and usage
Installation Download a new yum repo file Yum install alfa Installs all the necessary dependencies [Setup environment] (if not installed in standard OS locations) Execute a bash command or add a line to bashrc Environment points to the installed software Documentation Quick start Explains the most basic use cases in the simplest possible way I can copy-paste from it to start using ALFA General introduction to the library Classes documentation Use CMake Add find_package(Alfa CONFIG COMPONENTS Base Devices REQUIRED) to my CMakeLists.txt Add ${ALFA_INCLUDE_DIR} to include_directories Add ${ALFA_LIBRARIES} to target_link_libraries for my program My class(es) #include <…> … Use stuff from the quick start documentation and build on it No FindAlfa !
5
Actual steps Installation
There is no ALFA, one has to install FairRoot Install many dependencies Some unexpected : Geant, Pythia, GSL Some already there : ROOT, ZeroMQ, CMake, boost Everything is downloaded and compiled Alfaconfig.sh had incompatible options and silent failures After compilation : 24GB (source+build) + 5.5GB (Install) Took me 1 day just to finish all compilations successfully
6
Actual steps Setup Documentation Export SIMPATH and FAIRROOTPATH
Incomplete environment to start using ALFA Documentation « Getting started » page from FairRoot is not really fit for O2. It mentions the flp2epn tutorial7 though. Lack of documentation. Example : no class diagram to get an idea of design. Example : FairMQChannel(string type, string method, string address) -> What are the possible values for type ? What is a Device ? A Channel ?
7
Actual steps Use CMake My class(es) Compilation Execution
FindFairRoot.cmake -> use FairRootConfig.cmake At least provide FAIRROOT_LIBRARIES, avoid using link_directories My class(es) Inherit from FairMQDevice and uses FairMQChannel by copying parts of AliceO2::flp2epn, but it is already a complex example. Compilation Fails because LD_LIBRARY_PATH not properly set Fails because I have my own ROOT6 somewhere Fails because my FindROOT.cmake is different from the one in FairRoot Execution Crash because … not sure actually. Tried a few things and decided to wait for reinforcement.
8
Recommendations Modularize as previously designed
Split code, create ALFA repo, rename accordingly Define clear support lines, e.g. mailing lists, for each SW component Provide packages and repositories At least compatible with CERN production OS (SLC6, CC7) [Compatible with other supported OS (Unbuntu, Mac ?) Aim at the easiest and least impactful usage See slide numbered 3 Apply specific recommendations See slides numbered 4-6 AliceO2 specific Follow the coding conventions Repository organization Cf DDS What ? When ? Who ?
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.