4 // ************************************************************************
5 // This file is property of and copyright by the ALICE HLT Project *
6 // ALICE Experiment at CERN, All rights reserved. *
7 // See cxx source for full Copyright notice *
9 //*************************************************************************
11 // @file AliHLTTPCCAGPUTrackerNVCC.h
12 // @author David Rohr, Sergey Gorbunov
14 // @brief TPC CA Tracker for the NVIDIA GPU
18 #ifndef ALIHLTTPCCAGPUTRACKERNVCC_H
19 #define ALIHLTTPCCAGPUTRACKERNVCC_H
21 #include "AliHLTTPCCAGPUTrackerBase.h"
23 class AliHLTTPCCAGPUTrackerNVCC : public AliHLTTPCCAGPUTrackerBase
26 AliHLTTPCCAGPUTrackerNVCC();
27 virtual ~AliHLTTPCCAGPUTrackerNVCC();
29 virtual int InitGPU_Runtime(int sliceCount = -1, int forceDeviceID = -1);
30 virtual int Reconstruct(AliHLTTPCCASliceOutput** pOutput, AliHLTTPCCAClusterData* pClusterData, int fFirstSlice, int fSliceCount = -1);
31 virtual int ReconstructPP(AliHLTTPCCASliceOutput** pOutput, AliHLTTPCCAClusterData* pClusterData, int fFirstSlice, int fSliceCount = -1);
32 virtual int ExitGPU_Runtime();
33 virtual int RefitMergedTracks(AliHLTTPCGMMerger* Merger);
34 virtual int GPUMergerAvailable();
37 virtual void ActivateThreadContext();
38 virtual void ReleaseThreadContext();
39 virtual void SynchronizeGPU();
40 virtual int GPUSync(char* state = "UNKNOWN", int stream = -1, int slice = 0);
43 void DumpRowBlocks(AliHLTTPCCATracker* tracker, int iSlice, bool check = true);
44 void* fCudaContext; //Pointer to CUDA context
45 bool GPUFailedMsgA(cudaError_t error, const char* file, int line);
47 void* fpCudaStreams; //Pointer to array of CUDA Streams
50 AliHLTTPCCAGPUTrackerNVCC( const AliHLTTPCCAGPUTrackerNVCC& );
51 AliHLTTPCCAGPUTrackerNVCC &operator=( const AliHLTTPCCAGPUTrackerNVCC& );
53 ClassDef( AliHLTTPCCAGPUTrackerNVCC, 0 )
57 #define DLL_EXPORT __declspec(dllexport)
62 extern "C" DLL_EXPORT AliHLTTPCCAGPUTracker* AliHLTTPCCAGPUTrackerNVCCCreate();
63 extern "C" DLL_EXPORT void AliHLTTPCCAGPUTrackerNVCCDestroy(AliHLTTPCCAGPUTracker* ptr);
65 #endif //ALIHLTTPCCAGPUTRACKER_H