25GPUdii()
void GPUTPCCFDeconvolution::Thread<0>(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, GPUSharedMemory& smem, processorType& clusterer)
33 const
Array2D<uint8_t>& peakMap,
36 const uint32_t digitnum)
40 bool iamDummy = (
idx >= digitnum);
41 idx = iamDummy ? digitnum - 1 :
idx;
45 bool iamPeak = CfUtils::isPeak(peakMap[
pos]);
47 int8_t peakCount = (iamPeak) ? 1 : 0;
53 bool exclude3x3 = iamPeak || !
pos.valid();
54 partId = CfUtils::partition<SCRATCH_PAD_WORK_GROUP_SIZE>(smem, ll, exclude3x3, SCRATCH_PAD_WORK_GROUP_SIZE, &in3x3);
57 smem.posBcast1[partId] =
pos;
64 SCRATCH_PAD_WORK_GROUP_SIZE,
68 cfconsts::InnerNeighbors,
74 peakCount = countPeaksInner(partId, smem.buf, &aboveThreshold);
78 partId = CfUtils::partition<SCRATCH_PAD_WORK_GROUP_SIZE>(smem, partId, peakCount > 0 && !exclude3x3, in3x3, &in5x5);
81 smem.posBcast1[partId] =
pos;
82 smem.aboveThresholdBcast[partId] = aboveThreshold;
86 CfUtils::condBlockLoad<uint8_t, true>(
89 SCRATCH_PAD_WORK_GROUP_SIZE,
93 cfconsts::OuterNeighbors,
95 smem.aboveThresholdBcast,
99 peakCount = countPeaksOuter(partId, aboveThreshold, smem.buf);
103 if (iamDummy || !
pos.valid()) {
107 bool has3x3 = (peakCount > 0);
108 peakCount = CAMath::Abs(int32_t(peakCount));
109 bool split = (peakCount > 1);
111 peakCount = (peakCount == 0) ? 1 : peakCount;
121 const uint8_t* isPeak,
122 uint8_t* aboveThreshold)
126 for (uint8_t
i = 0;
i < 8;
i++) {
127 uint8_t p = isPeak[ll * 8 +
i];
128 peaks += CfUtils::isPeak(p);
129 *aboveThreshold |= uint8_t(CfUtils::isAboveThreshold(p)) <<
i;
137 uint8_t aboveThreshold,
138 const uint8_t* isPeak)
142 for (uint8_t
i = 0;
i < 16;
i++) {
144 peaks += CfUtils::isPeak(p);
#define get_local_size(dim)
#define get_local_id(dim)
#define get_num_groups(dim)
#define get_global_id(dim)
#define get_group_id(dim)
#define GPUCA_UNROLL(optCu, optHi)
GPUdii() void GPUTPCCFDeconvolution
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
uint8_t itsSharedClusterMap uint8_t
std::vector< std::string > split(const std::string &str, char delimiter=',')
for(int irof=0;irof< 1000;irof++)