From 10dd80174fe51eb0ea5490bb5ac902dceabd7eb8 Mon Sep 17 00:00:00 2001 From: drohr Date: Mon, 28 Oct 2013 14:49:45 +0000 Subject: [PATCH] Add option to manually select GPU device number for GPU tracker --- .../tracking-ca/AliHLTTPCCATrackerComponent.cxx | 11 ++++++++++- HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h | 1 + .../tracking-ca/AliHLTTPCCATrackerFramework.cxx | 4 ++-- HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.h | 2 +- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx index 7bb77fde669..bc380acdcf9 100644 --- a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx +++ b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.cxx @@ -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) { diff --git a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h index 292a57a7bb4..b1232f4d092 100644 --- a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h +++ b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerComponent.h @@ -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 **/ diff --git a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.cxx b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.cxx index bcfbd7da7d0..51b819cc83f 100644 --- a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.cxx +++ b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.cxx @@ -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"); } } diff --git a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.h b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.h index e068de87784..c74bca64471 100644 --- a/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.h +++ b/HLT/TPCLib/tracking-ca/AliHLTTPCCATrackerFramework.h @@ -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); -- 2.43.0