Add option to manually select GPU device number for GPU tracker
authordrohr <drohr@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Oct 2013 14:49:45 +0000 (14:49 +0000)
committerdrohr <drohr@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Oct 2013 14:49:45 +0000 (14:49 +0000)
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.cxx
HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.h

index 7bb77fd..bc380ac 100644 (file)
@@ -72,6 +72,7 @@ ClassImp( AliHLTTPCCATrackerComponent )
   fGPUHelperThreads(-1),
   fCPUTrackers(0),
   fGlobalTracking(0),
+  fGPUDeviceNum(-1),
   fGPULibrary("")
 {
   // see header file for class documentation
@@ -103,6 +104,7 @@ AliHLTProcessor(),
   fGPUHelperThreads(-1),
   fCPUTrackers(0),
   fGlobalTracking(0),
+  fGPUDeviceNum(-1),
   fGPULibrary("")
 {
   // see header file for class documentation
@@ -277,6 +279,13 @@ int AliHLTTPCCATrackerComponent::ReadConfigurationString(  const char* arguments
       continue;
     }
 
+    if ( argument.CompareTo( "-GPUDeviceNum" ) == 0 ) {
+      if ( ( bMissingParam = ( ++i >= pTokens->GetEntries() ) ) ) break;
+      fGPUDeviceNum = ( ( TObjString* )pTokens->At( i ) )->GetString().Atoi();
+      HLTInfo( "Using GPU Device Number %d", fGPUDeviceNum );
+      continue;
+    }
+
     if ( argument.CompareTo( "-GPULibrary" ) == 0 ) {
       if ( ( bMissingParam = ( ++i >= pTokens->GetEntries() ) ) ) break;
       fGPULibrary = ( ( TObjString* )pTokens->At( i ) )->GetString();
@@ -428,7 +437,7 @@ int AliHLTTPCCATrackerComponent::DoInit( int argc, const char** argv )
     fMinSlice = 0;
     fSliceCount = fgkNSlices;
     //Create tracker instance and set parameters
-    fTracker = new AliHLTTPCCATrackerFramework(fAllowGPU, fGPULibrary);
+    fTracker = new AliHLTTPCCATrackerFramework(fAllowGPU, fGPULibrary, fGPUDeviceNum);
     fClusterData = new AliHLTTPCCAClusterData[fgkNSlices];
     if (fGPUHelperThreads != -1)
     {
index 292a57a..b1232f4 100644 (file)
@@ -103,6 +103,7 @@ class AliHLTTPCCATrackerComponent : public AliHLTProcessor
     int fGPUHelperThreads;            // Number of helper threads for GPU tracker, set to -1 to use default number
     int fCPUTrackers;                 //Number of CPU trackers to run in addition to GPU tracker
     bool fGlobalTracking;             //Activate global tracking feature
+       int fGPUDeviceNum;                                //GPU Device to use, default -1 for auto detection
        TString fGPULibrary;                      //Name of the library file that provides the GPU tracker object
 
     /** set configuration parameters **/
index bcfbd7d..51b819c 100644 (file)
@@ -215,7 +215,7 @@ int AliHLTTPCCATrackerFramework::InitializeSliceParam(int iSlice, AliHLTTPCCAPar
 #define GPULIBNAME "libAliHLTTPCCAGPU"
 #endif
 
-AliHLTTPCCATrackerFramework::AliHLTTPCCATrackerFramework(int allowGPU, const char* GPU_Library) : fGPULibAvailable(false), fGPUTrackerAvailable(false), fUseGPUTracker(false), fGPUDebugLevel(0), fGPUTracker(NULL), fGPULib(NULL), fOutputControl( NULL ), fKeepData(false), fGlobalTracking(false)
+AliHLTTPCCATrackerFramework::AliHLTTPCCATrackerFramework(int allowGPU, const char* GPU_Library, int GPUDeviceNum) : fGPULibAvailable(false), fGPUTrackerAvailable(false), fUseGPUTracker(false), fGPUDebugLevel(0), fGPUTracker(NULL), fGPULib(NULL), fOutputControl( NULL ), fKeepData(false), fGlobalTracking(false)
 {
        //Constructor
        if (GPU_Library && !GPU_Library[0]) GPU_Library = NULL;
@@ -268,7 +268,7 @@ AliHLTTPCCATrackerFramework::AliHLTTPCCATrackerFramework(int allowGPU, const cha
 
        if (allowGPU && fGPULibAvailable)
        {
-               fUseGPUTracker = (fGPUTrackerAvailable = (fGPUTracker->InitGPU() == 0));
+               fUseGPUTracker = (fGPUTrackerAvailable = (fGPUTracker->InitGPU(-1, GPUDeviceNum) == 0));
                HLTInfo("GPU Tracker Initialized and available in framework");
        }
 }
index e068de8..c74bca6 100644 (file)
@@ -28,7 +28,7 @@ class AliHLTTPCCATrackerFramework : AliHLTLogging
 #endif
 
 public:
-       AliHLTTPCCATrackerFramework(int allowGPU = 1, const char* GPU_Library = NULL);
+       AliHLTTPCCATrackerFramework(int allowGPU = 1, const char* GPU_Library = NULL, int GPUDeviceNum = -1);
        ~AliHLTTPCCATrackerFramework();
 
        int InitGPU(int sliceCount = 1, int forceDeviceID = -1);