Skip to content

Commit

Permalink
Merge pull request #31704 from cms-patatrack/patatrack_integration_6_…
Browse files Browse the repository at this point in the history
…N_calorimeters_common

Patatrack integration - calorimeters shared code (6/N)
  • Loading branch information
cmsbuild authored Oct 21, 2020
2 parents 9508947 + 8938c57 commit cb16ffd
Show file tree
Hide file tree
Showing 7 changed files with 537 additions and 9 deletions.
6 changes: 6 additions & 0 deletions CUDADataFormats/CaloCommon/BuildFile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<use name="CUDADataFormats/Common" />
<use name="HeterogeneousCore/CUDAUtilities"/>

<export>
<lib name="1"/>
</export>
68 changes: 68 additions & 0 deletions CUDADataFormats/CaloCommon/interface/Common.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#ifndef CUDADataFormats_CaloCommon_interface_Common_h
#define CUDADataFormats_CaloCommon_interface_Common_h

#include <vector>

#include "HeterogeneousCore/CUDAUtilities/interface/HostAllocator.h"
#include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"

namespace calo {
namespace common {

// FIXME: not able to get enums to work with genreflex
namespace tags {

struct Vec {};
struct Ptr {};
struct DevPtr {};

} // namespace tags

template <typename tag>
struct AddSize {};

template <>
struct AddSize<tags::Ptr> {
uint32_t size;
};

template <>
struct AddSize<tags::DevPtr> {
uint32_t size;
};

struct ViewStoragePolicy {
using TagType = tags::Ptr;

template <typename T>
struct StorageSelector {
using type = T*;
};
};

struct DevStoragePolicy {
using TagType = tags::DevPtr;

template <typename T>
struct StorageSelector {
using type = cms::cuda::device::unique_ptr<T[]>;
};
};

template <template <typename> typename Allocator = std::allocator>
struct VecStoragePolicy {
using TagType = tags::Vec;

template <typename T>
struct StorageSelector {
using type = std::vector<T, Allocator<T>>;
};
};

template <typename T>
using CUDAHostAllocatorAlias = cms::cuda::HostAllocator<T>;

} // namespace common
} // namespace calo

#endif // CUDADataFormats_CaloCommon_interface_Common_h
2 changes: 2 additions & 0 deletions CUDADataFormats/CaloCommon/src/classes.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#include "DataFormats/Common/interface/Wrapper.h"
#include "CUDADataFormats/CaloCommon/interface/Common.h"
8 changes: 8 additions & 0 deletions CUDADataFormats/CaloCommon/src/classes_def.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<lcgdict>
<enum name="calo::common::tags::Ptr"/>
<enum name="calo::common::tags::Vec"/>
<enum name="calo::common::tags::DevPtr"/>
<class name="calo::common::AddSize<calo::common::tags::Ptr>"/>
<class name="calo::common::AddSize<calo::common::tags::Vec>"/>
<class name="calo::common::AddSize<calo::common::tags::DevPtr>"/>
</lcgdict>
Loading

0 comments on commit cb16ffd

Please sign in to comment.