3 //* This file is property of and copyright by the ALICE HLT Project *
4 //* ALICE Experiment at CERN, All rights reserved. *
5 //* See cxx source for full Copyright notice *
7 #ifndef ALIHLTTPCCAPROCESS_H
8 #define ALIHLTTPCCAPROCESS_H
12 * Definitions needed for AliHLTTPCCATracker
16 #include "AliHLTTPCCADef.h"
17 #include "AliHLTTPCCATrackParam.h"
19 class AliHLTTPCCATracker;
21 #if defined(HLTCA_GPUCODE)
23 template<class TProcess>
24 GPUg() void AliHLTTPCCAProcess()
26 AliHLTTPCCATracker &tracker = *((AliHLTTPCCATracker*) cTracker);
28 GPUshared() typename TProcess::AliHLTTPCCASharedMemory smem;
30 TProcess::Thread( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, 0, smem, tracker );
32 #define GPUPROCESS(iSync) \
33 if( TProcess::NThreadSyncPoints()>=iSync ){ \
35 TProcess::Thread( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, iSync, smem, tracker ); \
42 //for( Int_t iSync=0; iSync<=TProcess::NThreadSyncPoints(); iSync++){
44 //TProcess::ThreadGPU( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, iSync, smem, tracker );
52 template<class TProcess>
53 GPUg() void AliHLTTPCCAProcess( Int_t nBlocks, Int_t nThreads, AliHLTTPCCATracker &tracker )
55 for( Int_t iB=0; iB<nBlocks; iB++ ){
56 typename TProcess::AliHLTTPCCASharedMemory smem;
57 for( Int_t iS=0; iS<=TProcess::NThreadSyncPoints(); iS++)
58 for( Int_t iT=0; iT<nThreads; iT++ ){
59 TProcess::Thread( nBlocks, nThreads, iB, iT, iS, smem, tracker );
68 #if defined(HLTCA_GPUCODE)
70 template<typename TProcess>
71 GPUg() void AliHLTTPCCAProcess1()
73 AliHLTTPCCATracker &tracker = *((AliHLTTPCCATracker*) cTracker);
74 AliHLTTPCCATrackParam tParam;
76 GPUshared() typename TProcess::AliHLTTPCCASharedMemory sMem;
78 typename TProcess::AliHLTTPCCAThreadMemory rMem;
80 for( Int_t iSync=0; iSync<=TProcess::NThreadSyncPoints(); iSync++){
82 TProcess::Thread( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, iSync,
83 sMem, rMem, tracker, tParam );
89 template<typename TProcess>
90 GPUg() void AliHLTTPCCAProcess1( Int_t nBlocks, Int_t nThreads, AliHLTTPCCATracker &tracker )
92 for( Int_t iB=0; iB<nBlocks; iB++ ){
93 typename TProcess::AliHLTTPCCASharedMemory smem;
94 typename TProcess::AliHLTTPCCAThreadMemory rMem[nThreads];
95 AliHLTTPCCATrackParam tParam[nThreads];
96 for( Int_t iS=0; iS<=TProcess::NThreadSyncPoints(); iS++){
97 for( Int_t iT=0; iT<nThreads; iT++ )
98 TProcess::Thread( nBlocks, nThreads, iB, iT, iS, smem, rMem[iT], tracker, tParam[iT] );