fGPUHelperThreads(-1),
fCPUTrackers(0),
fGlobalTracking(0),
+ fGPUDeviceNum(-1),
fGPULibrary("")
{
// see header file for class documentation
fGPUHelperThreads(-1),
fCPUTrackers(0),
fGlobalTracking(0),
+ fGPUDeviceNum(-1),
fGPULibrary("")
{
// see header file for class documentation
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();
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)
{
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 **/
#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;
if (allowGPU && fGPULibAvailable)
{
- fUseGPUTracker = (fGPUTrackerAvailable = (fGPUTracker->InitGPU() == 0));
+ fUseGPUTracker = (fGPUTrackerAvailable = (fGPUTracker->InitGPU(-1, GPUDeviceNum) == 0));
HLTInfo("GPU Tracker Initialized and available in framework");
}
}
#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);