Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:15:39

0001 #ifndef HeterogeneousCore_AlpakaCore_interface_alpaka_typelookup_h
0002 #define HeterogeneousCore_AlpakaCore_interface_alpaka_typelookup_h
0003 
0004 #include "FWCore/Utilities/interface/typelookup.h"
0005 #include "HeterogeneousCore/AlpakaCore/interface/alpaka/ESDeviceProduct.h"
0006 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0007 
0008 // TODO: this place is suboptimal given that the framework's
0009 // typelookup.h is in FWCore/Utilities (i.e. independent of the
0010 // framework itself). The ESDeviceProduct should be in the same
0011 // package.
0012 
0013 // force expanding ALPAKA_ACCELERATOR_NAMESPACE before stringification inside TYPELOOKUP_DATA_REG
0014 #define TYPELOOKUP_ALPAKA_DATA_REG2(name) TYPELOOKUP_DATA_REG(name)
0015 
0016 // Model 1 for ESProducts with Alpaka: ESProduct class for host
0017 // is defined in global namespace, and for devices in
0018 // ALPAKA_ACCELERATOR_NAMESPACE
0019 #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
0020 // all host backends
0021 #define TYPELOOKUP_ALPAKA_DATA_REG(name)
0022 #else
0023 #define TYPELOOKUP_ALPAKA_DATA_REG(name) \
0024   TYPELOOKUP_ALPAKA_DATA_REG2(ALPAKA_ACCELERATOR_NAMESPACE::ESDeviceProduct<ALPAKA_ACCELERATOR_NAMESPACE::name>)
0025 #endif
0026 
0027 // Model 2 for ESProducts with Alpaka: ESProduct class templated over device type
0028 // TODO: should really instantiated and registered per "memory space" rather than per backend
0029 #ifdef ALPAKA_ACC_CPU_B_SEQ_T_SEQ_ENABLED
0030 // all host backends
0031 #define TYPELOOKUP_ALPAKA_TEMPLATED_DATA_REG(name)
0032 #else
0033 #define TYPELOOKUP_ALPAKA_TEMPLATED_DATA_REG(name) \
0034   TYPELOOKUP_ALPAKA_DATA_REG2(ALPAKA_ACCELERATOR_NAMESPACE::ESDeviceProduct<name<ALPAKA_ACCELERATOR_NAMESPACE::Device>>)
0035 #endif
0036 
0037 #endif