Skip to content

CPU algorithms configurable in sequence and automatic Monte Carlo validation configuration

Daniel Campora Perez requested to merge dcampora_cpu_sequence into master

This MR adds in the ability to configure CPU algorithms in the sequence by a similar method to the existing one. In addition, the Monte Carlo validation iterates over all configured algorithms and is run only for those that were pre-configured to be validated when run.

  • CPU algorithms can be configured in the sequence now.
  • A CPU_ALGORITHM must be declared, with its function and desired type name. Header files can include CpuHandler.cuh. for this purpose.
  • The header file should be included in ConfiguredSequence.cuh.
  • Algorithm dependencies must be defined for CPU algorithms too. The dependencies refer only to GPU datatypes.
  • A new sequence, CPUSciFi, has been defined.
  • The configured sequence is iterated for validation with Monte Carlo data at the end of the sequence, if configured to do so (-c 1).
  • Sequence checkers need to be specified under the sequence_checkers/include directory, and included under Stream.cu. The existing ones can also be extended.
  • Huge refactoring of the Monte Carlo validation code.
  • velopix-input-reader has been refactored into the more fitting name MCEvent.
  • Monte Carlo data are only read once for all checkers, and data is replicated into three containers: velo_mcps, ut_mcps and scifi_mcps, with templated data accessors for each.
  • All tools to use the checker have been moved to checker/tracking.
  • As a consequence, TrackChecking is now a CUDA library, as it requires to know about cuda_runtime.h.
  • The class PrCheckerInvoker has been created, and it has a constructor and a single templated check method.
  • PrepareTracks holds all methods to prepare tracks, specialized for existing datatypes.
  • Obsolete run options have been removed. -x no more configures an x86 sequence, this is done at compile time now. The option for the "simplified Kalman filter" has been removed since it was not used anymore.
  • Printing the memory consumption is only done once after all allocations have taken place.

Merge request reports