2 // ************************************************************************
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 //*************************************************************************
9 #ifndef ALIHLTTPCCAPROCESS_H
10 #define ALIHLTTPCCAPROCESS_H
14 * Definitions needed for AliHLTTPCCATracker
18 #include "AliHLTTPCCADef.h"
19 #include "AliHLTTPCCATrackParam.h"
21 class AliHLTTPCCATracker;
23 #if defined(HLTCA_GPUCODE)
25 template<class TProcess>
26 GPUg() void AliHLTTPCCAProcess()
28 AliHLTTPCCATracker &tracker = *( ( AliHLTTPCCATracker* ) gAliHLTTPCCATracker );
30 GPUshared() typename TProcess::AliHLTTPCCASharedMemory smem;
32 TProcess::Thread( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, 0, smem, tracker );
34 #define GPUPROCESS(iSync) \
35 if( TProcess::NThreadSyncPoints()>=iSync ){ \
37 TProcess::Thread( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, iSync, smem, tracker ); \
44 //for( int iSync=0; iSync<=TProcess::NThreadSyncPoints(); iSync++){
46 //TProcess::ThreadGPU( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, iSync, smem, tracker );
54 template<class TProcess>
55 GPUg() void AliHLTTPCCAProcess( int nBlocks, int nThreads, AliHLTTPCCATracker &tracker )
57 for ( int iB = 0; iB < nBlocks; iB++ ) {
58 typename TProcess::AliHLTTPCCASharedMemory smem;
59 for ( int iS = 0; iS <= TProcess::NThreadSyncPoints(); iS++ )
60 for ( int iT = 0; iT < nThreads; iT++ ) {
61 TProcess::Thread( nBlocks, nThreads, iB, iT, iS, smem, tracker );
70 #if defined(HLTCA_GPUCODE)
72 template<typename TProcess>
73 GPUg() void AliHLTTPCCAProcess1()
75 AliHLTTPCCATracker &tracker = *( ( AliHLTTPCCATracker* ) gAliHLTTPCCATracker );
76 AliHLTTPCCATrackParam tParam;
78 GPUshared() typename TProcess::AliHLTTPCCASharedMemory sMem;
80 typename TProcess::AliHLTTPCCAThreadMemory rMem;
82 for ( int iSync = 0; iSync <= TProcess::NThreadSyncPoints(); iSync++ ) {
84 TProcess::Thread( gridDim.x, blockDim.x, blockIdx.x, threadIdx.x, iSync,
85 sMem, rMem, tracker, tParam );
91 template<typename TProcess>
92 GPUg() void AliHLTTPCCAProcess1( int nBlocks, int nThreads, AliHLTTPCCATracker &tracker )
94 for ( int iB = 0; iB < nBlocks; iB++ ) {
95 typename TProcess::AliHLTTPCCASharedMemory smem;
96 typename TProcess::AliHLTTPCCAThreadMemory *rMem = new typename TProcess::AliHLTTPCCAThreadMemory[nThreads];
97 AliHLTTPCCATrackParam *tParam = new AliHLTTPCCATrackParam[ nThreads ];
98 for ( int iS = 0; iS <= TProcess::NThreadSyncPoints(); iS++ ) {
99 for ( int iT = 0; iT < nThreads; iT++ )
100 TProcess::Thread( nBlocks, nThreads, iB, iT, iS, smem, rMem[iT], tracker, tParam[iT] );