v-17.10
MohammadAlTurany
released this
22 Oct 04:13
·
1649 commits
to master
since this release
CMake
- Bump minimum required cmake version to 3.9.4
- Fix overlinking of
libFairMQ
- Add new
FairMQFull
,FairMQAll
,FairMQInstall
, andFairMQTests
targets, see comments. - Add
gtest
,cotire
, andFindPStreams
modules - Link
FairMQLogger
intolibFairMQ
instead of its own shared library. - Add many comments
FairMQ
- [breaking change] FairMQ headers are now installed to
$CMAKE_INSTALL_PREFIX/include/fairmq
. - [new feature] Introduce
FairMQShmMonitor
for shared memory monitoring & cleanup. - [new feature] Introduce
FairMQUnmanagedRegion
for allocating memory via transport (filled, transfered from and cleaned up by the user). - [new feature] Introduce
fair::mq::PluginManager
for loadingfair::mq::Plugin
s from shared libraries. See the example plugin. - [new feature] Introduce
fair::mq::PluginServices
APIs to give FairMQ plugins the ability to control and configure the device. - [new feature] Introduce
fair::mq::DeviceRunner
helper as a more flexible alternative to the fairmq/runFairMQDevice.h header. - [bugfix] Fix monitor not cleaning up more than one region.
- [bugfix] Avoid using placement new for allocating shm meta header that caused problems on some systems.
- [bugfix] Fix
example/advanced/Region
being built only if Geant is found. - [bugfix] Fixed example9 memory leak.
- [bugfix] Fix rate limiting in benchmarkSampler.
- [enhancement] Refactor the transport interface:
- Give transports
Initialize()
method with access to device config. - Avoid using global context in the transport.
- Simplify shutdown procedure (no need for extra thread).
- Move
New*Message
APIs up to the TransportFactory and provide facades atFairMQChannel
andFairMQDevice
.
- Give transports
- [enhancement] Stop device if binding was unsuccessful (both static and dynamic).
- [enhancement]
FairMQDevice::InitTask
runs now in the worker thread (same as other state handlers). - [enhancement] Extend shared memory transport configuration: segment size & name.
- [enhancement] Refactor unit tests (googletest) and extend test coverage
- [enhancement] Extend documentation
- [enhancement] STL iterator interface for
FairMQParts
- [enhancement]
FairMQDevice
can generate an ID, if none provided. - [enhancement] Refactor
FairMQEventManager
tofair::mq::EventManager
to support multiple subscribers. - [misc] Cleanup examples: serialization, Lmd.
General
- IO Manager :
Enabling the user to register branches based on arbitrary types. In particular, it is now possible to register stl containers as branch entries, extending the current TObject* or TCollection* APIs. (See Example/simulation/Tutorial2) - Fixed FairRootManager to return correct event time.
Simulation
- Migration of G4 simulation to multi-threading
- Make FairLink not inherit from TObject
-- reduce memory footprint for FairLinks by removing
inheritance from TObject (which is not needed)
-- remove virtual keyword from operators
-- overall this will gain 24bytes per FairLink
-- other smaller improvements: default destructor, inline trivial constructors - Remove data members / virtual functions from FairMultiLinkedData_Interface
-- remove fVerbose data member which was not used
-- remove fInserHistory member which is duplicated behind the link pointer
-- make accessor to link pointer not virtual - Remove FairLink member + remove virtual functions from FairTimeStamp
- Reduce size of FairLink to 15 byte
- Avoid InheritsFrom function from ROOT
-- This seemingly cosmetic change saves a lot of CPU time because ROOT triggered a lot of internal TClass generation stuff
-- It is also not needed since the dynamic cast does the same job