#include <ProducerBase.h>
Public Member Functions | |
template<edm::Transition Tr = edm::Transition::Event> | |
auto | produces () noexcept |
template<edm::Transition Tr = edm::Transition::Event> | |
auto | produces (std::string instanceName) noexcept |
Private Types | |
using | Base = BaseT< Args..., edm::Transformer > |
Private Member Functions | |
template<typename TProduct , typename TToken , edm::Transition Tr> | |
edm::EDPutTokenT< TToken > | deviceProduces (std::string instanceName) |
template<typename TProduct , edm::Transition Tr> | |
edm::EDPutTokenT< TProduct > | produces (std::string instanceName) |
Friends | |
template<typename TProducer , edm::Transition Tr> | |
class | ProducerBaseAdaptor |
The ProducerBase acts as a common base class for all Alpaka EDProducers. The main benefit is to have a single place for the definition of produces() functions.
The produces() functions return a custom ProducerBaseAdaptor in order to call the deviceProduces(). For device or asynchronous backends the deviceProduces() registers the automatic transfer to host and a transformation from edm::DeviceProduct<T> to U, where U is the host-equivalent of T. The transformation from T to U is done by a specialization of cms::alpakatools::TransferToHost<T> template, that should be provided in the same file where T is defined.
TODO: add "override" for labelsForToken()
Definition at line 37 of file ProducerBase.h.
|
private |
Definition at line 41 of file ProducerBase.h.
|
inlineprivate |
Definition at line 72 of file ProducerBase.h.
|
inlinenoexcept |
Definition at line 45 of file ProducerBase.h.
|
inlinenoexcept |
Definition at line 50 of file ProducerBase.h.
|
inlineprivate |
Definition at line 63 of file ProducerBase.h.
|
friend |
Definition at line 56 of file ProducerBase.h.