Skip to content

Draft: Structured parameters and buffer dependencies - Part I

The long-term goal for this MR is to allow a Gaudi-like syntax for algorithm and reduce the number of input/outputs, making configuration and algorithm definitions more user-friendly and maintainable. As this goal involve a lot of changes in the backend, and in the user-facing api, this MR will be split in 2 parts. The first part focuses on the backend changes, while the 2nd will implement features that need change to all algorithms and lines.

Goals for part I:

  • Implement reference counted shared buffer to manage data dependencies
  • Decouple store and memory managers => remove tags from memory managers, make them behave like standard allocators
  • Also free host arguments when their lifetime ends (there is no distinction between host and device in the scheduler, it is now part of the type)
  • Make the output handler a functional algorithm
  • Merge Host and device store => Remove HostBufferManager
  • Add memory visualisation tool

Goals for part II:

  • Decouple argument and buffer classes => allow storage of any struct in arguments
  • Group together relevant buffers to reduce the number of input/output of algorithms
  • Make algorithms adopt Gaudi's std::tuple<Out...> operator(In...) syntax
  • Remove set_argument_size => do reserve directly in operator()

FYI @raaij @dovombru @cagapopo @sponce @graven @clemenci

Updated main loop:

image

Edited by Arthur Marius Hennequin

Merge request reports

Loading