The Gaudi Framework
v30r3 (a5ef0a68)
|
Package : GaudiKernel Commit Id: $Format:%H$ ================================ Gaudi v28r3 ================================= ! 2017-07-28 - Illya Shapoval (commit 866890ef) - Merge branch 'extend-DR-criterion' into 'master' Extend the criterion of data dependency resolution Promote an algorithm to DATAREADY if all its data supplying algorithms were executed, regardless of EVTACCEPTED or EVTREJECTED state. See merge request !368 ! 2017-07-26 - Alessio Gianelle (commit bc7941fc) - Merge branch 'coverity' into 'master' Fixed coverity issues: * KeyedObjectManager.cpp * 64154: Iterator container mismatch * 64281: Invalid iterator comparison * ProcessDescriptor.cpp * 64293: Out-of-bounds write * AvalancheSchedulerSvc.cpp * 94135: Dereference after null check * 94134: Dereference after null check * 94669: Unchecked dynamic_cast * HiveTestAlgorithm.cpp * 82289: Unchecked dynamic_cast See merge request !357 ! 2017-05-30 - scott snyder (commit edf8447c) - Merge branch 'DataObjIDSort-master-20170525' into 'master' Sort scheduler debugging dumps in a well-defined order See merge request !343 ! 2017-05-22 - Charles Leggett (commit a0ab6887) - Merge branch 'dev/AvalancheSchedProps' into 'master' Update Properties of AvalancheSchedulerSvc See merge request !322 ! 2017-05-22 - Illya Shapoval (commit dfa35537) - Merge branch 'fix-df-trav' into 'master' Fix tunnel data-ready notifications See merge request !333 ! 2017-05-19 - Sebastien Ponce (commit c7c1a663) - Merge branch 'AlgoExecutionTaskClangFix' into 'master' Dropped unused algoindex from AlgoExecutionTask See merge request !324 ! 2017-05-05 - Illya Shapoval (commit 995157c5) - Merge branch 'fix-cRUNch-smearing' into 'master' Fix the cRUNch TIME smearing engine of CPUCruncher algorithms See merge request !323 ! 2017-05-05 - Charles Leggett, leggett (commit db47610f) - Merge branch 'dev/Clonable' into 'master' Algorithm clonability should be explicitly set by Alg author See merge request !316 ! 2017-04-26 - Charles Leggett (commit 752218d2) - Merge branch 'dev/dev/CircDataDeps' into 'master' filter circular data dependencies See merge request !314 ! 2017-04-15 - Illya Shapoval (commit a9d90326) - Merge branch 'prgraph-traversals-refactor-upstr' into 'master' Move from recursive pattern to hierarchical visitor one in traversals of the graph of precedence rules See merge request !308 ================================ Gaudi v28r2 ================================= ! 2017-03-20 - Illya Shapoval (commit f9e62de) - Merge branch 'scheduler-sequential' into 'master' Sequential scheduling of an algorithm set (native support) See merge request !305 ! 2017-03-16 - Marco Clemencic (commit 44bbb22) - updated FetchDataFromFile algorithm See merge request !300 ! 2017-03-10 - Illya Shapoval (commit 51aa3b1) - Merge branch 'schedulers-cleanup' into 'master' Add AvalancheSchedulerSvc and clean up the ForwardSchedulerSvc See merge request !288 ! 2017-03-10 - Gerhard Raven (commit 34c34b8) - Merge branch 'make_unique_alglist_unique' into 'master' Make sure that entries in m_flatUniqueAlgList are actually unique See merge request !255 Conflicts: GaudiHive/src/AlgResourcePool.cpp ! 2017-03-10 - Charles Leggett (commit 1c2b2e1) - Merge branch 'dev/combSeq' into 'master' Support for AthSequencers in Scheduler See merge request !287 ! 2017-03-10 - Charles Leggett (commit 6d9a472) - Merge branch 'dev/AutoDataLoad' into 'master' Attribute unmet INPUT dependencies to a DataLoader Algorithm See merge request !269 ! 2017-03-10 - Gerhard Raven (commit f3d7bff) - remove all references to endreq See merge request !79 ! 2017-02-23 - Charles Leggett (commit 215f2b1) - added ConcurrencyFlags class The static ConcurrencyFlags allows easy access to information about the number of threads, concurrent events, and processes. For running in serial, numThreads == 0, numConcEvents == 0, numProcs == 0, useful to distinguish between running serial, and running MT with 1 thread, or MP with 1 process. See merge request !277 ! 2017-02-13 - Charles Leggett (commit 34172fa) - cleanup duplicate includes in ForwardSchedulerSvc.h See merge request !286 ! 2017-02-08 - Charles Leggett (commit 09859bd) - add sysExecute(EventContext) and extract errorCount from Algorithm base class We need to extract the `m_errorCount` variable from the Algorithm base class, as it's not important on a per-instance basis, but rather on a job level. This is moved to the AlgExecStateSvc. This merge request also adds an explicit `IAlgorithm::sysExecute(const EventContext&)`, which should become the standard entry point to `Algorithm::execute`. This sets the local m_event_context variable, so derived classes can get quick access to the current context instead of going through the slower thead local `Gaudi::Hive::currentContext()`. Note that `IAlgorithm::sysExecute()` has been removed, to avoid "overloaded virtual" compiler errors, and should be replaced in all clients with `IAlgorithm::sysExecute(EventContext)`, or if the context is not immediately available, with `IAlgorithm::sysExecute(Gaudi::Hive::currentContext())`. All this is being done in preparation to re-introduce the ReEntrantAlgorithm class from merge !177 (see also !274) See merge request !273 ! 2017-01-13 - Illya Shapoval (commit 2cb0c7b) - Change of terminology within the graph-based scheduler This is a minor MR that introduces more accurate terminology within the graph-based scheduler. In particular, the `ExecutionFlowGraph` is renamed to `PrecedenceRulesGraph`. See merge request !266 ================================ Gaudi v28r1 ================================= ! 2016-12-14 - Attila Krasznahorkay (commit a42ff2a) - CMake configuration changes to build Gaudi with optional externals missing In the last days I experimented a bit with teaching Gaudi how to build when only ROOT, Boost and TBB are available to it. This is the result. As far as I can tell the code builds in the same way as the current master branch when all possible externals are available. (All the ones available in a full ATLAS offline build at least.) And I'm also able to build the project in these modes: * On Ubuntu 16.04 with the system provided Boost and TBB versions, against a privately built ROOT 6 version. * On macOS Sierra against privately built Boost, ROOT and TBB versions. Both when building the project completely on its own, and when building it against an ATLAS externals project. Some notes: * The code uses C++14 expressions in quite a few places by now. So I raised the default C++ standard to C++14. This is the default in ATLAS builds since a while, I only saw this as an issue when building Gaudi "on its own" with a very minimal configuration command. * While the code advertises that it still has support for ROOT 5, it's not able to build against it since a wile. Since the updates I put in for TLS variables on macOS. (The macros used there are ROOT 6 only.) And this update makes things even worse. As the code now relies on not providing the definition of some classes to the dictionary generator in GaudiPython that are not available. (Because AIDA or XercesC is missing.) While ROOT 6 handles this with just a build warning, ROOT 5's genreflex treats this with an ERROR message. That I was unable to get rid of. So, extended testing is clearly necessary, the configuration code could definitely be fine tuned as I probably turned off the build of more source files than absolutely necessary, but I think we should move ahead with such a configuration organisation. See merge request !241 ! 2016-12-14 - Sebastien Ponce (commit efc88ab) - Context fixes See merge request !248 ! 2016-12-07 - Sebastien Ponce (commit 102daf4) - Improvements on Hivetimeline script In particular : - proper display of slots for the events bars at the top - scalable display, with command line options to change size - option to skip first events (useful for first one where cache are not warm) - worked around ROOT bug of TLines not working properly - allow to change on command line number of colors for the events See merge request !243 ! 2016-12-07 - many contributors (commit dc1b505) - port LHCb MT developments to Gaudi master among others we have - `Gaudi::Functional`: base classes to write algorithms as pure functions - `AnyDataWrapper`/`AnyDataHandle`: helper to store any type in the Transient Store (DataSvc) - fixes to `DataObjectHandle` - fixes to `GaudiHive` - new tests and examples - modernization (removed empty destructors, ...) See merge request !245 ! 2016-12-06 - Sebastien Ponce (commit abf1182) - Fixed uninitialized variable in the Gaudi Forward Scheduler, leading to random dead lock See merge request !244 ! 2016-11-30 - Frank Winklmeier (commit ead2d09) - Add script to plot timeline as created by TimelineSvc The script `hivetimeline.py` makes a nice graphical representation of the timline.cvs file created by the TimlineSvc. See merge request !234 ================================ Gaudi v28r0 ================================= ! 2016-11-08 - Marco Clemencic (commit ec96c27) - cleaning up last minute glitches - fixed warnings from clang - fixed issues with ROOT 6.08 - minor polishing - minor fixes to tests - fixed GAUDI-1221 See merge request !230 ! 2016-11-02 - Charles Leggett (commit 92567c2) - make IHiveWhiteBoard::getNumberOfStores() const See merge request !229 ! 2016-10-31 - Marco Clemencic (commit b9f002b) - minor fixes to failing tests - fixed issue in CMake modules test - fixed BrunelScenarioGraphScheduler - clean up CPUCruncher See merge request !227 ! 2016-10-28 - Marco Clemencic (commit 7a372bb) - fixed a few compilation warnings See merge request !221 ! 2016-10-27 - Gerhard Raven, Marco Clemencic (commit b111898) - modernization of Property This is a major rewrite of the system of `Property` classes. Started as the implementation of GAUDI-1214, it continued as a review of `IProperty` and `PropertyMgr`, to end up in a complete rewrite (and optimization) of `PropertyWithValue`. * Fixes GAUDI-1214 - added missing `declareProperty` signature - added `PropertyHolder` (an updated `PropertyMgr`) - adapted all properties in Gaudi * improved use of `PropertyHolder` - use inheritance instead of composition - removed ~200 (duplicated) lines of code in GaudiKernel * optimization of Property (fixes GAUDI-1229) - use templates and automatic code generation to handle efficiently both value and reference properties - avoid creation of values on the heap (see GAUDI-1229) - removed the *owned* boolean flag - improved usability of properties (e.g. begin/end wrappers for C++11 loops, increment/decrement operators...) - deprecated use of C arrays as properties - merged features of `PropertyWithVerifier`, `SimpleProperty` and `SimplePropertyRef` into `PropertyWithValue` - deduplication of name and doc strings via [`boost::string_ref`](http://www.boost.org/doc/libs/1_61_0/libs/utility/doc/html/string_ref.html) and a static storage (see GAUDI-1229) * Fixes GAUDI-1205 * add deprecation warnings in service accessors of `Algorithm` (@graven) * renamed `Property` base class to `Gaudi::Details::PropertyBase` and `PropertyWithValue` to `Gaudi::Property` - added backward compatibility type aliases (but not compatible with forward declarations of `class Property`, which should be replaced by `#include "GaudiKernel/PropertyFwd.h"`) * added macro `GAUDI_PROPERTY_v2` to allow easy implementation of backward compatible changes in derived projects (e.g. when user code relied on `DoubleProperty` having a verifier) * Fixes GAUDI-1268 The changes are as backward compatible as much as possible (except if you explicitly inherit from `SimpleProperty`, or you forward declared `class Property`, which now are typedefs), but must be validated in the experiment frameworks. See merge request !182 ! 2016-10-26 - Benedikt Hegner (commit 668ce4b) - Remove deprecated schedulers - remove deprecated RoundRobin, ParallelSequential and Sequential schedulers (see GAUDI-1263) - remove deprecated copy of state machine interface from IAlgManager. This removal has been checked grep'ing the git repo of ATLAS See merge request !202 ! 2016-10-25 - Chris Jones (commit be54ccc) - Update GaudiHandle to return const Tool access from const Handle via `->` and `*` operators and `get()` method Also removed unused `ThreadPoolSvc::getThreadInitTools()`. See merge request !217 ! 2016-10-24 - Attila Krasznahorkay (commit ac4dbc7) - Changes to build on MacOS X 10.11 See merge request !200 ! 2016-10-24 - Marco Clemencic (commit a8d6605) - hidden/fixed "missing override" warnings exposed after !192 - warnings from external headers are hidden declaring the include directories as `-system` - warnings from a couple of new files have been fixed - warnings in `HistogramSvc` are hidden because unavoidable (see f83c3d8e) - warnings related to CLHEP-136 have been hidden with a special trick (see 0a238135) See merge request !205 ! 2016-10-19 - Charles Leggett (commit 958570b) - Algorithm Execution State Service Introduction of AlgExecStateSvc All event state information removed from Algorithm base class (m_filterPassed, m_isExecuted) as it will cause difficulties with re-entrant Algorithms. event success/fail flag removed from EventContext These flags are moved to be under control of a new service, the AlgExecStateSvc, which keeps track of the execution state of all Algorithms, and the Event as a whole. Algorithm status kept in a new class ```AlgExecState``` which has ``` bool m_filterPassed {true}; bool m_isExecuted {false}; StatusCode m_execStatus {StatusCode::FAILURE}; ``` AlgExecStateSvc holds an AlgExecState for each Algorithm in each Event Slot, as well as an overall ```EventStatus``` for each EventSlot, which can be one of ``` Invalid = 0, Success = 1, AlgFail = 2, AlgStall = 3, Other = 4 ``` Algorithms add themselves to the AlgExecStateSvc upon initialization, but the Service's initialization of the data structures is deferred until the first time ```AlgExecStateSvc::reset()``` is called, at which point it's probably safe to figure out if there's a WhiteBoard, and the number of slots to allocate. The EventLoopMgr should call ```AlgExecStateSvc::reset()``` at the start of each event. If it's a concurrent EventLoopMgr, it should be ```AlgExecStateSvc::reset(EventContext)```, after the EventContext object has been updated to reflect the new event. Also added an EventContext object to the MinimalEventLoopMgr, so that serial/concurrent behaviour is similar. Concurrent queries to the AlgExecStateSvc must contain the EventContext, so the correct EventSlot can be determined. Serial access is via methods that don't have the EventContext as a parameter. For access from Algorithm base class (eg from setFilterPassed, isExecuted, etc), if the EventContext ptr (m_event_context) in the Algorithm is null, we assume we're running serially. See merge request !197 ! 2016-10-13 - Illya Shapoval (commit 72a37ca) - Refactor the 'precedence' package and add the latest ATLAS MC data reconstruction scenario to the Gaudi Hive portfolio of simulators This merge request contains refactoring of the 'precedence' package (used for configuration of Hive execution flow simulations), which makes it experiment independent. Also, it adds the latest ATLAS MC data reconstruction scenario to portfolio of Hive execution flow simulators. See merge request !204 ! 2016-10-12 - Marco Clemencic (commit b5e05a1) - improved handling of package version in CMake configuration use project version if a package version is not provided See GAUDI-1215. See merge request !175 ! 2016-10-10 - Marco Clemencic (commit 5df4dde) - fix tests failing after mr !178 See merge request !206 ! 2016-10-03 - Illya Shapoval (commit 95cdba1) - A prototype of a scheduler for efficient handling of heterogeneous tasks The prototype is described in detail in [chapter 4](https://cds.cern.ch/record/2149420). See merge request !178 ! 2016-10-01 - Marco Clemencic (commit 99b1001) - enable missing override warnings (gcc >= 5.1) Fixes GAUDI-1241 See merge request !192 ! 2016-08-19 - Marco Clemencic (commit f3050c3) - Fix compile time warnings fixed/hidden all warnings in GCC builds See merge request !189 ! 2016-07-25 - Illya Shapoval (commit 6cf6ca2) - Resurrect the AthenaScenario test in Gaudi Hive The test was broken (produced a stall). This merge request introduces the migration of the test to the graph-based scheduler, which returns the test back to life. See [GAUDI-1239](https://its.cern.ch/jira/browse/GAUDI-1239) for the work/test log. See merge request !190 ! 2016-07-25 - Marco Clemencic (commit e3d4b07) - remove CMT configuration and related files * removed CMT configuration files * adapted scripts not to use CMT Fixes GAUDI-1216 Fixes GAUDI-979 See merge request !186 ! 2016-07-08 - Marco Clemencic (commit c2d751d) - replaced endreq with endmsg in ForwardSchedulerSvc See merge request !184 ! 2016-06-23 - Sami Kama (commit 3735737) - Adding concurrent incident support and example utilization. `GaudiExamples/options/AsyncIncidents.py` demonstrates example utilization of asynchronous incident mechanism. Fixes GAUDI-1213 See merge request !181 ! 2016-05-31 - Charles Leggett (commit c8d7b8b) - Propagate failure of event to the EventContext for more cases see atlas/Gaudi!21 This patch fixes: - setting fail flag in the EventContext for a stall - setting fail flag in the EventContext if an Algorithm throws an exception - don't unset the fail flag in the EventContext when an Algorithm hasn't failed See merge request !165 ! 2016-05-18 - Sami Kama (commit 9eeef96) - allow build of Gaudi without LCG and fix ThreadPoolSvc Allow building of Gaudi with local externals. It also contains a fix to an issue introduced with merge request !160 (GAUDI-1212). Fixes GAUDI-1211, GAUDI-1212. See merge request !166 ! 2016-05-03 - Charles Leggett (commit 1d3f99c) - ThreadPoolSvc: Bugfix/barrier fix (from Steve Farrell) see https://gitlab.cern.ch/atlas/Gaudi/merge_requests/17 This merge fixes a serious undefined behavior condition in ThreadPoolSvc introduced in the thread-tool-terminate merge. The boost::barrier was moved to a function local which could drop out of scope before workers returned from waiting. Now, the barrier is again a class member of the ThreadPoolSvc. Tests are successful. Additionally, I added a safety check in ThreadPoolSvc::terminateTool that returns FAILURE if the pool wasn't actually initialized. Finally, I put the ThreadPoolSvc's raw pointer class members into unique_ptrs for automatic deletion. See merge request !160 ! 2016-04-19 - Steve Farrell (commit ff70ca3) - Thread tool termination This set of changes completes the work started by @leggett in a875c69e3ac6b1d1253e4086daea076860a95e52 on thread initialization tools. Such tools are invoked by the ThreadPoolSvc on each worker thread when the pool is initialized and can be used to setup thread-local workspaces in cases where necessary (e.g. for running multi-threaded Geant4). These commits enable the thread-termination part of those tools for corresponding cleanup/finalization of thread-local memory. This is done primarily by adding a terminatePool method to IThreadPoolSvc which is called at the end of ForwardSchedulerSvc::activate. The ThreadPoolSvc underwent some slight refactoring to support the thread-termination tasks. Also included in this merge request are a number of whitespace and indentation fixes, as well as some added class documentation in the affected classes. See merge request !142 ! 2016-04-09 - Charles Leggett (commit 84020b9) - Isolate EventContext from Algorithm in order to not have re-entrant Algorithms stomp on each others' EventContexts, we need to isolate the EventContext from the Algorithm, and move it to the AlgoExecutionTask. We can then pass the EventContext explicitly to the tbb::task, instead of carrying it via the Algorithm, which would fail for re-entrant Algs. This also requires a change to the signature of ForwardSchedulerSvc::promoteToExecuted. We should also make the EventContext* of the Algorithm const, to prevent any modification from inside the Alg. See merge request !147 =============================== GaudiHive v2r0 =============================== ! 2016-03-10 - commit 02f2560 - use StringKey for Alg name, add IAlgorithm::setIndex this patch does 3 things: - makes Algorithm::index() const (as it should have been), set the initial value to 0 instead of 123 (!) - adds a protected Algorithm::setIndex(unsigned int) method. this allows you to distinguish between clones. AlgResourcePool is the one who does the setting, and is declared as a friend to IAlgorithm - turns Algorithm::m_name into a StringKey (from a string), so we can hash on the name of Algorithms more easily (a useful ability when dealing with Alg clones, and trying to treat them all the same way) See merge request !125 ! 2016-03-10 - commit a001f80 - fixed compile time warning in ExecutionFlowGraph commit a1a61fc caused the warning: statement has no effect [-Wunused-value] See merge request !137 ! 2016-03-10 - commit 4a18175 - removed uses of templates implements[1-4], extends[1-4] and extend_interfaces[1-4] Since merge request !22 they are unnecessary. See merge request !133 ! 2016-03-09 - commit bae38a9 - fully use DataObjID in ExecutionFlowGraph `ExecutionFlowGraph` was still using some string paths instead of `DataObjID`. See merge request !123 ! 2016-03-03 - commit 5925940 - restored DeclareFactoryEntry macros for ATLAS restored the (dummy) DeclareFactoryEntry macros for ATLAS compatibility. these are protected with a `#ifdef ATLAS` macro also fixed GaudiHive/CPUCruncher to remove this usage See merge request !126 ! 2016-03-02 - commit a146191 - separate thread local EventContext handling from ContextSpecificPtr Moved all the setting/getting methods for the thread local `EventContext` from `GaudiKernel/ContextSpecificPtr.h` to a new file `GaudiKernel/ThreadLocalContext.h`. See merge request !122 ! 2016-02-29 - commit aa945af - better failure handling during initialization Several essential services that fail initialization during the `ForwardSchedulerSvc::initialize` merely print error/warning messages, but the errors aren't propagated, and the job doesn't abort. Fixes GAUDI-1184 See merge request !117 ! 2016-02-11 - commit b0618f7 - Improve CommonMessaging Implementation of GAUDI-1146: Improve CommonMessaging and use it in more places. See merge request !76 Conflicts: GaudiExamples/tests/qmtest/refs/AlgTools2.ref GaudiExamples/tests/qmtest/refs/MultiInput/Read.ref GaudiExamples/tests/qmtest/refs/conditional_output/write.ref GaudiKernel/GaudiKernel/AlgTool.h GaudiKernel/GaudiKernel/Algorithm.h GaudiKernel/GaudiKernel/Service.h GaudiKernel/src/Lib/AlgTool.cpp GaudiKernel/src/Lib/Algorithm.cpp ! 2016-02-09 - commit 11d42e4 - DataHandles fixes for LHCb - renamed IDataHandleHolder::accept to acceptDHVisitor to avoid build time warnings in LHCb - fixed reference file for GaudiExamples.thistwrite See merge request !104 ! 2016-02-09 - commit a4bea2b - remove unprotected DEBUG messages added in v27r0 The merge of the 'hive' branch introduced several _unprotected_ DEBUG messages, which is against LHCb policies. Fixes GAUDI-1174. See merge request !102 ! 2016-02-06 - commit d905569 - introduce DataHandle and DataObjectHandle See merge requests !57 !94 !95 =============================== GaudiHive v1r1 =============================== ! 2016-01-12 - commit 4dbdc8e - fixed clang 3.7 compilation warnings Fixes GAUDI-1083. See merge request !89 ! 2016-01-07 - commit fabc739 - fixed compilation with clang 3.7 (after hive merge) * fixed compilation problems related to `operator<<` (gcc is more permissive than clang). * fixed also some clang warnings. Fixes GAUDI-1157. See merge request !84 ! 2015-11-11 - commit 0a0032f - Merge branch 'GAUDI-1130' into 'master' fixes to support native build on Ubuntu 15.10 Fixes GAUDI-1130. See merge request !70 ! 2015-11-02 - commit 57f356c - Merge branch 'hive' into 'master' Fixes GAUDI-978. See merge request !65