25GPUdii()
void GPUTPCCFDeconvolution::Thread<0>(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, GPUSharedMemory& smem, processorType& clusterer, uint8_t overwriteCharge)
36 const uint32_t digitnum,
37 uint8_t overwriteCharge)
41 bool iamDummy = (
idx >= digitnum);
42 idx = iamDummy ? digitnum - 1 :
idx;
46 bool iamPeak = CfUtils::isPeak(peakMap[
pos]);
48 int8_t peakCount = (iamPeak) ? 1 : 0;
54 bool exclude3x3 = iamPeak || !
pos.valid();
55 partId = CfUtils::partition<SCRATCH_PAD_WORK_GROUP_SIZE>(smem, ll, exclude3x3, SCRATCH_PAD_WORK_GROUP_SIZE, &in3x3);
58 smem.posBcast1[partId] =
pos;
65 SCRATCH_PAD_WORK_GROUP_SIZE,
69 cfconsts::InnerNeighbors,
75 peakCount = countPeaksInner(partId, smem.buf, &aboveThreshold);
79 partId = CfUtils::partition<SCRATCH_PAD_WORK_GROUP_SIZE>(smem, partId, peakCount > 0 && !exclude3x3, in3x3, &in5x5);
82 smem.posBcast1[partId] =
pos;
83 smem.aboveThresholdBcast[partId] = aboveThreshold;
87 CfUtils::condBlockLoad<uint8_t, true>(
90 SCRATCH_PAD_WORK_GROUP_SIZE,
94 cfconsts::OuterNeighbors,
96 smem.aboveThresholdBcast,
100 peakCount = countPeaksOuter(partId, aboveThreshold, smem.buf);
104 if (iamDummy || !
pos.valid()) {
108 bool has3x3 = (peakCount > 0);
109 peakCount = CAMath::Abs(int32_t(peakCount));
110 bool split = (peakCount > 1);
112 peakCount = (peakCount == 0) ? 1 : peakCount;
116 if (overwriteCharge) {
127 const uint8_t* isPeak,
128 uint8_t* aboveThreshold)
132 for (uint8_t
i = 0;
i < 8;
i++) {
133 uint8_t p = isPeak[ll * 8 +
i];
134 peaks += CfUtils::isPeak(p);
135 *aboveThreshold |= uint8_t(CfUtils::isAboveThreshold(p)) <<
i;
143 uint8_t aboveThreshold,
144 const uint8_t* isPeak)
148 for (uint8_t
i = 0;
i < 16;
i++) {
150 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++)