#include <ProducerBase.h>
Public Member Functions | |
ProducerBase () | |
template<edm::Transition Tr = edm::Transition::Event> | |
auto | produces () noexcept |
template<edm::Transition Tr = edm::Transition::Event> | |
auto | produces (std::string instanceName) noexcept |
Static Public Member Functions | |
static void | prevalidate (edm::ConfigurationDescriptions &descriptions) |
Protected Member Functions | |
void | putBackend (edm::Event &iEvent) const |
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) |
Private Attributes | |
edm::EDPutTokenT< unsigned short > const | backendToken_ |
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 copy 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::CopyToHost<T> class template, that should be provided in the same file where T is defined
TODO: add "override" for labelsForToken()
Definition at line 41 of file ProducerBase.h.
|
private |
Definition at line 45 of file ProducerBase.h.
|
inline |
Definition at line 48 of file ProducerBase.h.
References ALPAKA_ACCELERATOR_NAMESPACE::ProducerBase< BaseT, Args >::backendToken_.
|
inlineprivate |
Definition at line 90 of file ProducerBase.h.
References ALPAKA_ACCELERATOR_NAMESPACE::brokenline::constexpr(), cms::cuda::copyAsync(), eostools::move(), svgfig::template(), and unpackBuffers-CaloStage2::token.
|
inlinestatic |
Definition at line 60 of file ProducerBase.h.
References cms::alpakatools::module_backend_config().
|
inlinenoexcept |
Definition at line 51 of file ProducerBase.h.
|
inlinenoexcept |
|
inlineprivate |
|
inlineprotected |
Definition at line 66 of file ProducerBase.h.
References ALPAKA_ACCELERATOR_NAMESPACE::ProducerBase< BaseT, Args >::backendToken_, and iEvent.
|
friend |
Definition at line 74 of file ProducerBase.h.
|
private |
Definition at line 71 of file ProducerBase.h.
Referenced by ALPAKA_ACCELERATOR_NAMESPACE::ProducerBase< BaseT, Args >::ProducerBase(), and ALPAKA_ACCELERATOR_NAMESPACE::ProducerBase< BaseT, Args >::putBackend().