ATLAS Offline Software
Loading...
Searching...
No Matches
GPUClusterInfoAndMomentsCalculatorImplHelper.h File Reference
#include "CaloRecGPU/Helpers.h"
#include "CaloRecGPU/CUDAFriendlyClasses.h"
#include "GPUClusterInfoAndMomentsCalculatorImpl.h"
#include "FPHelpers.h"
#include "TemporaryHelpers.h"
#include "CaloGeoHelpers/CaloSampling.h"
#include <cmath>
#include <type_traits>
Include dependency graph for GPUClusterInfoAndMomentsCalculatorImplHelper.h:

Go to the source code of this file.

Namespaces

namespace  CMCTemporaries
namespace  ToLoad
namespace  ToCalculate

Macros

#define CALORECGPU_CMC_EXPAND(...)
#define CALORECGPU_CMC_LOAD(NAME, NEEDED, PREVNEEDED, VARS, INIT)
#define CALORECGPU_CMC_LOAD_SIMPLE_CELL_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_LOAD_SIMPLE_GEOMETRY_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_LOAD_SIMPLE_CLUSTER_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_LOAD_SIMPLE_MOMENT_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_MOMENT_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_LOAD_SIMPLE_TEMPORARY_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_TEMPORARY_INFO(NAME, VARNAME, PROPNAME)
#define CALORECGPU_CMC_MOMENT_CALC(NAME, BEFORELOAD, BEFOREEXEC, CELLLOAD, CLUSTERLOAD, CELLEXEC, AFTERLOAD, AFTEREXEC)

Macro Definition Documentation

◆ CALORECGPU_CMC_EXPAND

#define CALORECGPU_CMC_EXPAND ( ...)
Value:
__VA_ARGS__

Definition at line 666 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

◆ CALORECGPU_CMC_LOAD

#define CALORECGPU_CMC_LOAD ( NAME,
NEEDED,
PREVNEEDED,
VARS,
INIT )
Value:
struct NAME \
{ \
using AssumedList = TypeList<CALORECGPU_CMC_EXPAND NEEDED >; \
using AssumedPreviousList = TypeList<CALORECGPU_CMC_EXPAND PREVNEEDED >; \
template <class Final> __device__ NAME(const Final & f, Parameters p, const int idx) { CALORECGPU_CMC_EXPAND INIT } \
}
#define INIT(__TYPE)

Definition at line 669 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

669#define CALORECGPU_CMC_LOAD(NAME, NEEDED, PREVNEEDED, VARS, INIT) \
670 struct NAME \
671 { \
672 using AssumedList = TypeList<CALORECGPU_CMC_EXPAND NEEDED >; \
673 using AssumedPreviousList = TypeList<CALORECGPU_CMC_EXPAND PREVNEEDED >; \
674 CALORECGPU_CMC_EXPAND VARS \
675 template <class Final> __device__ NAME(const Final & f, Parameters p, const int idx) { CALORECGPU_CMC_EXPAND INIT } \
676 }

◆ CALORECGPU_CMC_LOAD_SIMPLE_CELL_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_CELL_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(), \
(), \
(std::decay_t<decltype(std::declval<CaloRecGPU::CellInfoArr>().PROPNAME[0])> VARNAME;), \
(VARNAME = p.cell_info_arr->PROPNAME[idx];) \
);
#define CALORECGPU_CMC_LOAD(NAME, NEEDED, PREVNEEDED, VARS, INIT)

Definition at line 680 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

680#define CALORECGPU_CMC_LOAD_SIMPLE_CELL_INFO(NAME, VARNAME, PROPNAME) \
681 CALORECGPU_CMC_LOAD(NAME, \
682 (), \
683 (), \
684 (std::decay_t<decltype(std::declval<CaloRecGPU::CellInfoArr>().PROPNAME[0])> VARNAME;), \
685 (VARNAME = p.cell_info_arr->PROPNAME[idx];) \
686 );

◆ CALORECGPU_CMC_LOAD_SIMPLE_CLUSTER_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_CLUSTER_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(), \
(), \
(std::decay_t<decltype(std::declval<CaloRecGPU::ClusterInfoArr>().PROPNAME[0])> VARNAME;), \
(VARNAME = p.clusters_arr->PROPNAME[idx];) \
);

Definition at line 696 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

696#define CALORECGPU_CMC_LOAD_SIMPLE_CLUSTER_INFO(NAME, VARNAME, PROPNAME) \
697 CALORECGPU_CMC_LOAD(NAME, \
698 (), \
699 (), \
700 (std::decay_t<decltype(std::declval<CaloRecGPU::ClusterInfoArr>().PROPNAME[0])> VARNAME;), \
701 (VARNAME = p.clusters_arr->PROPNAME[idx];) \
702 );

◆ CALORECGPU_CMC_LOAD_SIMPLE_GEOMETRY_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_GEOMETRY_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(CellHashID), \
(), \
(std::decay_t<decltype(std::declval<CaloRecGPU::GeometryArr>().PROPNAME[0])> VARNAME;), \
(VARNAME = p.geometry->PROPNAME[f.hash_ID];) \
);

Definition at line 688 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

688#define CALORECGPU_CMC_LOAD_SIMPLE_GEOMETRY_INFO(NAME, VARNAME, PROPNAME) \
689 CALORECGPU_CMC_LOAD(NAME, \
690 (CellHashID), \
691 (), \
692 (std::decay_t<decltype(std::declval<CaloRecGPU::GeometryArr>().PROPNAME[0])> VARNAME;), \
693 (VARNAME = p.geometry->PROPNAME[f.hash_ID];) \
694 );

◆ CALORECGPU_CMC_LOAD_SIMPLE_MOMENT_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_MOMENT_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(), \
(), \
(std::decay_t<decltype(std::declval<CaloRecGPU::ClusterInfoArr>().moments.PROPNAME[0])> VARNAME;), \
(VARNAME = p.clusters_arr->moments.PROPNAME[idx];) \
);

Definition at line 704 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

704#define CALORECGPU_CMC_LOAD_SIMPLE_MOMENT_INFO(NAME, VARNAME, PROPNAME) \
705 CALORECGPU_CMC_LOAD(NAME, \
706 (), \
707 (), \
708 (std::decay_t<decltype(std::declval<CaloRecGPU::ClusterInfoArr>().moments.PROPNAME[0])> VARNAME;), \
709 (VARNAME = p.clusters_arr->moments.PROPNAME[idx];) \
710 );

◆ CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_MOMENT_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_MOMENT_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(), \
(), \
(std::decay_t<decltype(std::declval<CaloRecGPU::ClusterInfoArr>().moments.PROPNAME[0][0])> VARNAME;), \
(VARNAME = p.clusters_arr->moments.PROPNAME[f.sampling][idx];) \
);

Definition at line 714 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

714#define CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_MOMENT_INFO(NAME, VARNAME, PROPNAME) \
715 CALORECGPU_CMC_LOAD(NAME, \
716 (), \
717 (), \
718 (std::decay_t<decltype(std::declval<CaloRecGPU::ClusterInfoArr>().moments.PROPNAME[0][0])> VARNAME;), \
719 (VARNAME = p.clusters_arr->moments.PROPNAME[f.sampling][idx];) \
720 );

◆ CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_TEMPORARY_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_TEMPORARY_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(), \
(), \
(std::decay_t<decltype(CMCTemporaries::PROPNAME(std::declval<CaloRecGPU::ClusterInfoArr *>(),0,0))> VARNAME;), \
(VARNAME = CMCTemporaries::PROPNAME(p.clusters_arr, f.sampling, idx);) \
);

Definition at line 732 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

732#define CALORECGPU_CMC_LOAD_SIMPLE_PER_SAMPLING_TEMPORARY_INFO(NAME, VARNAME, PROPNAME) \
733 CALORECGPU_CMC_LOAD(NAME, \
734 (), \
735 (), \
736 (std::decay_t<decltype(CMCTemporaries::PROPNAME(std::declval<CaloRecGPU::ClusterInfoArr *>(),0,0))> VARNAME;), \
737 (VARNAME = CMCTemporaries::PROPNAME(p.clusters_arr, f.sampling, idx);) \
738 );

◆ CALORECGPU_CMC_LOAD_SIMPLE_TEMPORARY_INFO

#define CALORECGPU_CMC_LOAD_SIMPLE_TEMPORARY_INFO ( NAME,
VARNAME,
PROPNAME )
Value:
(), \
(), \
(std::decay_t<decltype(CMCTemporaries::PROPNAME(std::declval<CaloRecGPU::ClusterInfoArr *>(),0))> VARNAME;), \
(VARNAME = CMCTemporaries::PROPNAME(p.clusters_arr, idx);) \
);

Definition at line 722 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

722#define CALORECGPU_CMC_LOAD_SIMPLE_TEMPORARY_INFO(NAME, VARNAME, PROPNAME) \
723 CALORECGPU_CMC_LOAD(NAME, \
724 (), \
725 (), \
726 (std::decay_t<decltype(CMCTemporaries::PROPNAME(std::declval<CaloRecGPU::ClusterInfoArr *>(),0))> VARNAME;), \
727 (VARNAME = CMCTemporaries::PROPNAME(p.clusters_arr, idx);) \
728 );

◆ CALORECGPU_CMC_MOMENT_CALC

#define CALORECGPU_CMC_MOMENT_CALC ( NAME,
BEFORELOAD,
BEFOREEXEC,
CELLLOAD,
CLUSTERLOAD,
CELLEXEC,
AFTERLOAD,
AFTEREXEC )
Value:
struct NAME \
{ \
using BeforeLoading = TypeList<CALORECGPU_CMC_EXPAND BEFORELOAD>; \
template <class T> __device__ static void before(Parameters p, \
const T & data, \
const int cluster) \
{ CALORECGPU_CMC_EXPAND BEFOREEXEC } \
using CellLoading = TypeList<CALORECGPU_CMC_EXPAND CELLLOAD>; \
using ClusterLoading = TypeList<CALORECGPU_CMC_EXPAND CLUSTERLOAD>; \
template <class T> __device__ static void per_cell(Parameters p, \
const T & data, \
const int cell, \
const int cluster) \
{ CALORECGPU_CMC_EXPAND CELLEXEC } \
using AfterLoading = TypeList<CALORECGPU_CMC_EXPAND AFTERLOAD>; \
template <class T> __device__ static void after(Parameters p, \
const T & data, \
const int cluster) \
{ CALORECGPU_CMC_EXPAND AFTEREXEC } \
}
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11

Definition at line 1201 of file GPUClusterInfoAndMomentsCalculatorImplHelper.h.

1201#define CALORECGPU_CMC_MOMENT_CALC(NAME, BEFORELOAD, BEFOREEXEC, CELLLOAD, CLUSTERLOAD, CELLEXEC, AFTERLOAD, AFTEREXEC) \
1202 struct NAME \
1203 { \
1204 using BeforeLoading = TypeList<CALORECGPU_CMC_EXPAND BEFORELOAD>; \
1205 template <class T> __device__ static void before(Parameters p, \
1206 const T & data, \
1207 const int cluster) \
1208 { CALORECGPU_CMC_EXPAND BEFOREEXEC } \
1209 using CellLoading = TypeList<CALORECGPU_CMC_EXPAND CELLLOAD>; \
1210 using ClusterLoading = TypeList<CALORECGPU_CMC_EXPAND CLUSTERLOAD>; \
1211 template <class T> __device__ static void per_cell(Parameters p, \
1212 const T & data, \
1213 const int cell, \
1214 const int cluster) \
1215 { CALORECGPU_CMC_EXPAND CELLEXEC } \
1216 using AfterLoading = TypeList<CALORECGPU_CMC_EXPAND AFTERLOAD>; \
1217 template <class T> __device__ static void after(Parameters p, \
1218 const T & data, \
1219 const int cluster) \
1220 { CALORECGPU_CMC_EXPAND AFTEREXEC } \
1221 }