Project
Loading...
Searching...
No Matches
GPUTPCCFStreamCompaction.h
Go to the documentation of this file.
1// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3// All rights not expressly granted are reserved.
4//
5// This software is distributed under the terms of the GNU General Public
6// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7//
8// In applying this license CERN does not waive the privileges and immunities
9// granted to it by virtue of its status as an Intergovernmental Organization
10// or submit itself to any jurisdiction.
11
14
15#ifndef O2_GPU_STREAM_COMPACTION_H
16#define O2_GPU_STREAM_COMPACTION_H
17
18#include "clusterFinderDefs.h"
19#include "GPUGeneralKernels.h"
20#include "GPUConstantMem.h"
21#include "GPUTPCClusterFinder.h"
22
23namespace o2::gpu
24{
25
27{
28
29 public:
30 enum K : int32_t {
32 scanUp = 1,
36 };
37
38#if defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS)
39 struct GPUSharedMemory : public GPUKernelTemplate::GPUSharedMemoryScan64<int32_t, GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE> {
40 };
41 static_assert(GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE == GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFStreamCompaction_scanStart));
42 static_assert(GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE == GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFStreamCompaction_scanUp));
43 static_assert(GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE == GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFStreamCompaction_scanTop));
44 static_assert(GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE == GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFStreamCompaction_scanDown));
45 static_assert(GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE == GPUCA_GET_THREAD_COUNT(GPUCA_LB_GPUTPCCFStreamCompaction_compactDigits));
46#endif
47
50 {
51 return processors.tpcClusterer;
52 }
53
54 GPUhdi() constexpr static GPUDataTypes::RecoStep GetRecoStep()
55 {
57 }
58
59 template <int32_t iKernel = GPUKernelTemplate::defaultKernel, typename... Args>
60 GPUd() static void Thread(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread, GPUSharedMemory& smem, processorType& clusterer, Args... args);
61
62 private:
63 static GPUd() int32_t CompactionElems(processorType& clusterer, int32_t stage);
64};
65
66} // namespace o2::gpu
67
68#endif
#define GPUCA_PAR_CF_SCAN_WORKGROUP_SIZE
#define GPUCA_GET_THREAD_COUNT(...)
int32_t int32_t int32_t processorType & processors
GPUhdi() const expr static GPUDataTypes
int32_t int32_t int32_t GPUSharedMemory & smem
int32_t int32_t int32_t GPUSharedMemory processorType Args args
int32_t int32_t int32_t GPUSharedMemory processorType & clusterer
GPUhdi() static processorType *Processor(GPUConstantMem &processors)
GPUd() static void Thread(int32_t nBlocks