Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 40 additions & 40 deletions GPU/GPUTracking/Definitions/GPUSettingsList.h
Original file line number Diff line number Diff line change
Expand Up @@ -126,34 +126,34 @@ AddOptionRTC(cfInnerThreshold, unsigned char, 0, "", 0, "Cluster Finder extends
AddOptionRTC(cfMinSplitNum, unsigned char, 1, "", 0, "Minimum number of split charges in a cluster for the cluster to be marked as split")
AddOptionRTC(cfNoiseSuppressionEpsilon, unsigned char, 10, "", 0, "Cluster Finder: Difference between peak and charge for the charge to count as a minima during noise suppression")
AddOptionRTC(cfNoiseSuppressionEpsilonRelative, unsigned char, 76, "", 0, "Cluster Finder: Difference between peak and charge for the charge to count as a minima during noise suppression, relative as fraction of 255")
AddOptionRTC(nWays, char, 3, "", 0, "Do N fit passes in final fit of merger")
AddOptionRTC(nWaysOuter, char, 0, "", 0, "Store outer param")
AddOptionRTC(trackFitRejectMode, char, 5, "", 0, "0: no limit on rejection or missed hits, >0: break after n rejected hits, <0: reject at max -n hits")
AddOptionRTC(nWays, signed char, 3, "", 0, "Do N fit passes in final fit of merger")
AddOptionRTC(nWaysOuter, signed char, 0, "", 0, "Store outer param")
AddOptionRTC(trackFitRejectMode, signed char, 5, "", 0, "0: no limit on rejection or missed hits, >0: break after n rejected hits, <0: reject at max -n hits")
AddOptionRTC(dEdxTruncLow, unsigned char, 2, "", 0, "Low truncation threshold, fraction of 128")
AddOptionRTC(dEdxTruncHigh, unsigned char, 77, "", 0, "High truncation threshold, fraction of 128")
AddOptionRTC(globalTracking, char, 1, "", 0, "Enable Global Tracking (prolong tracks to adjacent sectors to find short segments)")
AddOptionRTC(globalTracking, signed char, 1, "", 0, "Enable Global Tracking (prolong tracks to adjacent sectors to find short segments)")
AddOptionRTC(disableRefitAttachment, unsigned char, 0, "", 0, "Bitmask to disable certain attachment steps during refit (1: attachment, 2: propagation, 4: loop following, 8: mirroring)")
AddOptionRTC(rejectionStrategy, unsigned char, GPUCA_NAMESPACE::gpu::GPUSettings::RejectionStrategyA, "", 0, "Enable rejection of TPC clusters for compression (0 = no, 1 = strategy A, 2 = strategy B)")
AddOptionRTC(mergeLoopersAfterburner, unsigned char, 1, "", 0, "Run afterburner for additional looper merging")
AddOptionRTC(compressionTypeMask, unsigned char, GPUCA_NAMESPACE::gpu::GPUSettings::CompressionFull, "", 0, "TPC Compression mode bits (1=truncate charge/width LSB, 2=differences, 4=track-model)")
AddOptionRTC(compressionSortOrder, unsigned char, GPUCA_NAMESPACE::gpu::GPUSettings::SortTime, "", 0, "Sort order of TPC compression (0 = time, 1 = pad, 2 = Z-time-pad, 3 = Z-pad-time, 4 = no sorting (use incoming order))")
AddOptionRTC(sigBitsCharge, unsigned char, 4, "", 0, "Number of significant bits for TPC cluster charge in compression mode 1")
AddOptionRTC(sigBitsWidth, unsigned char, 3, "", 0, "Number of significant bits for TPC cluster width in compression mode 1")
AddOptionRTC(forceEarlyTransform, char, -1, "", 0, "Force early TPC transformation also for continuous data (-1 = auto)")
AddOptionRTC(forceEarlyTransform, signed char, -1, "", 0, "Force early TPC transformation also for continuous data (-1 = auto)")
AddOptionRTC(dropLoopers, unsigned char, 0, "", 0, "Drop looping tracks starting from second loop")
AddOptionRTC(mergerCovSource, unsigned char, 2, "", 0, "Method to obtain covariance in track merger: 0 = simple filterErrors method, 1 = use cov from track following, 2 = refit (default)")
AddOptionRTC(mergerInterpolateErrors, unsigned char, 1, "", 0, "Use interpolation instead of extrapolation for chi2 based cluster rejection")
AddOptionRTC(mergeCE, unsigned char, 1, "", 0, "Merge tracks accross the central electrode")
AddOptionRTC(retryRefit, char, 1, "", 0, "Retry refit with seeding errors and without cluster rejection when fit fails (=2 means retry in same kernel, =1 for separate kernel")
AddOptionRTC(looperInterpolationInExtraPass, char, -1, "", 0, "Perform looper interpolation in an extra pass")
AddOptionRTC(mergerReadFromTrackerDirectly, char, 1, "", 0, "Forward data directly from tracker to merger on GPU")
AddOptionRTC(dropSecondaryLegsInOutput, char, 1, "", 0, "Do not store secondary legs of looping track in TrackTPC")
AddOptionRTC(enablePID, char, 1, "", 0, "Enable PID response")
AddOptionRTC(PID_useNsigma, char, 1, "", 0, "Use nSigma instead of absolute distance in PID response")
AddOptionRTC(adddEdxSubThresholdClusters, char, 1, "", 0, "Add sub threshold clusters in TPC dEdx computation")
AddOptionRTC(rejectEdgeClustersInSeeding, char, 0, "", 0, "Reject edge clusters based on uncorrected track Y during seeding")
AddOptionRTC(rejectEdgeClustersInTrackFit, char, 0, "", 0, "Reject edge clusters based on uncorrected track Y during track fit")
AddOptionArray(PID_remap, char, 9, (0, 1, 2, 3, 4, 5, 6, 7, 8), "", 0, "Remap Ipid to PID_reamp[Ipid] (no remap if<0)") // BUG: CUDA cannot yet hand AddOptionArrayRTC
AddOptionRTC(retryRefit, signed char, 1, "", 0, "Retry refit with seeding errors and without cluster rejection when fit fails (=2 means retry in same kernel, =1 for separate kernel")
AddOptionRTC(looperInterpolationInExtraPass, signed char, -1, "", 0, "Perform looper interpolation in an extra pass")
AddOptionRTC(mergerReadFromTrackerDirectly, signed char, 1, "", 0, "Forward data directly from tracker to merger on GPU")
AddOptionRTC(dropSecondaryLegsInOutput, signed char, 1, "", 0, "Do not store secondary legs of looping track in TrackTPC")
AddOptionRTC(enablePID, signed char, 1, "", 0, "Enable PID response")
AddOptionRTC(PID_useNsigma, signed char, 1, "", 0, "Use nSigma instead of absolute distance in PID response")
AddOptionRTC(adddEdxSubThresholdClusters, signed char, 1, "", 0, "Add sub threshold clusters in TPC dEdx computation")
AddOptionRTC(rejectEdgeClustersInSeeding, signed char, 0, "", 0, "Reject edge clusters based on uncorrected track Y during seeding")
AddOptionRTC(rejectEdgeClustersInTrackFit, signed char, 0, "", 0, "Reject edge clusters based on uncorrected track Y during track fit")
AddOptionArray(PID_remap, signed char, 9, (0, 1, 2, 3, 4, 5, 6, 7, 8), "", 0, "Remap Ipid to PID_reamp[Ipid] (no remap if<0)") // BUG: CUDA cannot yet hand AddOptionArrayRTC
AddHelp("help", 'h')
EndConfig()

Expand All @@ -180,13 +180,13 @@ EndConfig()

BeginSubConfig(GPUSettingsRec, rec, configStandalone, "REC", 0, "Reconstruction settings", rec)
AddOptionRTC(maxTrackQPtB5, float, 1.f / GPUCA_MIN_TRACK_PTB5_DEFAULT, "", 0, "required max Q/Pt (==min Pt) of tracks")
AddOptionRTC(nonConsecutiveIDs, char, false, "", 0, "Non-consecutive cluster IDs as in HLT, disables features that need access to slice data in TPC merger")
AddOptionRTC(nonConsecutiveIDs, signed char, false, "", 0, "Non-consecutive cluster IDs as in HLT, disables features that need access to slice data in TPC merger")
AddOptionRTC(fwdTPCDigitsAsClusters, unsigned char, 0, "", 0, "Forward TPC digits as clusters (if they pass the ZS threshold)")
AddOptionRTC(bz0Pt10MeV, unsigned char, 60, "", 0, "Nominal Pt to set when bz = 0 (in 10 MeV)")
AddOptionRTC(fitInProjections, char, -1, "", 0, "Fit in projection, -1 to enable full fit for all but passes but the first one")
AddOptionRTC(fitPropagateBzOnly, char, -1, "", 0, "Propagate using Bz only for n passes")
AddOptionRTC(useMatLUT, char, 0, "", 0, "Use material lookup table for TPC refit")
AddOptionRTC(trackingRefitGPUModel, char, 1, "", 0, "Use GPU track model for the Global Track Refit")
AddOptionRTC(fitInProjections, signed char, -1, "", 0, "Fit in projection, -1 to enable full fit for all but passes but the first one")
AddOptionRTC(fitPropagateBzOnly, signed char, -1, "", 0, "Propagate using Bz only for n passes")
AddOptionRTC(useMatLUT, signed char, 0, "", 0, "Use material lookup table for TPC refit")
AddOptionRTC(trackingRefitGPUModel, signed char, 1, "", 0, "Use GPU track model for the Global Track Refit")
AddCustomCPP(void SetMinTrackPtB5(float v) { maxTrackQPtB5 = v > 0.001f ? (1.f / v) : (1.f / 0.001f); })
AddSubConfig(GPUSettingsRecTPC, tpc)
AddSubConfig(GPUSettingsRecTRD, trd)
Expand Down Expand Up @@ -228,12 +228,12 @@ AddOption(checkKernelFailures, bool, false, "", 0, "Synchronize after each kerne
AddOption(deterministicGPUReconstruction, int, -1, "", 0, "Make CPU and GPU debug output comparable (sort / skip concurrent parts), -1 = automatic if debugLevel >= 6")
AddOption(showOutputStat, bool, false, "", 0, "Print some track output statistics")
AddOption(runCompressionStatistics, bool, false, "compressionStat", 0, "Run statistics and verification for cluster compression")
AddOption(resetTimers, char, 1, "", 0, "Reset timers every event")
AddOption(resetTimers, signed char, 1, "", 0, "Reset timers every event")
AddOption(deviceTimers, bool, true, "", 0, "Use device timers instead of host-based time measurement")
AddOption(keepAllMemory, bool, false, "", 0, "Allocate all memory on both device and host, and do not reuse")
AddOption(keepDisplayMemory, bool, false, "", 0, "Like keepAllMemory, but only for memory required for event display")
AddOption(disableMemoryReuse, bool, false, "", 0, "Disable memory reusage (for debugging only)")
AddOption(memoryAllocationStrategy, char, 0, "", 0, "Memory Allocation Stragegy (0 = auto, 1 = individual allocations, 2 = single global allocation)")
AddOption(memoryAllocationStrategy, signed char, 0, "", 0, "Memory Allocation Stragegy (0 = auto, 1 = individual allocations, 2 = single global allocation)")
AddOption(forceMemoryPoolSize, unsigned long, 1, "memSize", 0, "Force size of allocated GPU / page locked host memory", min(0ul))
AddOption(forceHostMemoryPoolSize, unsigned long, 0, "hostMemSize", 0, "Force size of allocated host page locked host memory (overriding memSize)", min(0ul))
AddOption(memoryScalingFactor, float, 1.f, "", 0, "Factor to apply to all memory scalers")
Expand All @@ -245,28 +245,28 @@ AddOption(ompThreads, int, -1, "omp", 't', "Number of OMP threads to run (-1: al
AddOption(ompKernels, unsigned char, 2, "", 0, "Parallelize with OMP inside kernels instead of over slices, 2 for nested parallelization over TPC sectors and inside kernels")
AddOption(ompAutoNThreads, bool, true, "", 0, "Auto-adjust number of OMP threads, decreasing the number for small input data")
AddOption(nDeviceHelperThreads, int, 1, "", 0, "Number of CPU helper threads for CPU processing")
AddOption(nStreams, char, 8, "", 0, "Number of GPU streams / command queues")
AddOption(nTPCClustererLanes, char, -1, "", 0, "Number of TPC clusterers that can run in parallel (-1 = autoset)")
AddOption(nStreams, signed char, 8, "", 0, "Number of GPU streams / command queues")
AddOption(nTPCClustererLanes, signed char, -1, "", 0, "Number of TPC clusterers that can run in parallel (-1 = autoset)")
AddOption(overrideClusterizerFragmentLen, int, -1, "", 0, "Force the cluster max fragment len to a certain value (-1 = autodetect)")
AddOption(trackletSelectorSlices, char, -1, "", 0, "Number of slices to processes in parallel at max")
AddOption(trackletConstructorInPipeline, char, -1, "", 0, "Run tracklet constructor in the pipeline")
AddOption(trackletSelectorInPipeline, char, -1, "", 0, "Run tracklet selector in the pipeline")
AddOption(trackletSelectorSlices, signed char, -1, "", 0, "Number of slices to processes in parallel at max")
AddOption(trackletConstructorInPipeline, signed char, -1, "", 0, "Run tracklet constructor in the pipeline")
AddOption(trackletSelectorInPipeline, signed char, -1, "", 0, "Run tracklet selector in the pipeline")
AddOption(fullMergerOnGPU, bool, true, "", 0, "Perform full TPC track merging on GPU instead of only refit")
AddOption(delayedOutput, bool, true, "", 0, "Delay output to be parallel to track fit")
AddOption(mergerSortTracks, char, -1, "", 0, "Sort track indizes for GPU track fit")
AddOption(alternateBorderSort, char, -1, "", 0, "Alternative implementation for sorting of border tracks")
AddOption(tpcCompressionGatherMode, char, -1, "", 0, "TPC Compressed Clusters Gather Mode (0: DMA transfer gather gpu to host, 1: serial DMA to host and gather by copy on CPU, 2. gather via GPU kernal DMA access, 3. gather on GPU via kernel, dma afterwards")
AddOption(tpcCompressionGatherModeKernel, char, -1, "", 0, "TPC Compressed Clusters Gather Mode Kernel (0: unbufferd, 1-3: buffered, 4: multi-block)")
AddOption(mergerSortTracks, signed char, -1, "", 0, "Sort track indizes for GPU track fit")
AddOption(alternateBorderSort, signed char, -1, "", 0, "Alternative implementation for sorting of border tracks")
AddOption(tpcCompressionGatherMode, signed char, -1, "", 0, "TPC Compressed Clusters Gather Mode (0: DMA transfer gather gpu to host, 1: serial DMA to host and gather by copy on CPU, 2. gather via GPU kernal DMA access, 3. gather on GPU via kernel, dma afterwards")
AddOption(tpcCompressionGatherModeKernel, signed char, -1, "", 0, "TPC Compressed Clusters Gather Mode Kernel (0: unbufferd, 1-3: buffered, 4: multi-block)")
AddOption(tpccfGatherKernel, bool, true, "", 0, "Use a kernel instead of the DMA engine to gather the clusters")
AddOption(doublePipeline, bool, false, "", 0, "Double pipeline mode")
AddOption(doublePipelineClusterizer, bool, true, "", 0, "Include the input data of the clusterizer in the double-pipeline")
AddOption(prefetchTPCpageScan, char, 0, "", 0, "Prefetch Data for TPC page scan in CPU cache")
AddOption(prefetchTPCpageScan, signed char, 0, "", 0, "Prefetch Data for TPC page scan in CPU cache")
AddOption(runMC, bool, false, "", 0, "Process MC labels")
AddOption(runQA, int, 0, "qa", 'q', "Enable tracking QA (negative number to provide bitmask for QA tasks)", message("Running QA: %s"), def(1))
AddOption(qcRunFraction, float, 100.f, "", 0, "Percentage of events to process with QC")
AddOption(outputSharedClusterMap, bool, false, "", 0, "Ship optional shared cluster map as output for further use")
AddOption(disableTPCNoisyPadFilter, bool, false, "", 0, "Disables all TPC noisy pad filters (Not the normal noise filter!)")
AddOption(createO2Output, char, 2, "", 0, "Create Track output in O2 format (2 = skip non-O2 output in GPU track format (reverts to =1 if QA is requested))")
AddOption(createO2Output, signed char, 2, "", 0, "Create Track output in O2 format (2 = skip non-O2 output in GPU track format (reverts to =1 if QA is requested))")
AddOption(clearO2OutputFromGPU, bool, false, "", 0, "Free the GPU memory used for O2 output after copying to host, prevents further O2 processing on the GPU")
AddOption(ignoreNonFatalGPUErrors, bool, false, "", 0, "Continue running after having received non fatal GPU errors, e.g. abort due to overflow")
AddOption(tpcIncreasedMinClustersPerRow, unsigned int, 0, "", 0, "Impose a minimum buffer size for the clustersPerRow during TPC clusterization")
Expand Down Expand Up @@ -557,13 +557,13 @@ EndConfig()
// Derrived parameters used in GPUParam
BeginHiddenConfig(GPUSettingsParam, param)
AddVariableRTC(dAlpha, float, 0.f) // angular size
AddVariableRTC(assumeConstantBz, char, 0) // Assume a constant magnetic field
AddVariableRTC(toyMCEventsFlag, char, 0) // events were build with home-made event generator
AddVariableRTC(continuousTracking, char, 0) // Continuous tracking, estimate bz and errors for abs(z) = 125cm during seeding
AddVariableRTC(resetTimers, char, 0) // Reset benchmark timers before event processing
AddVariableRTC(dodEdx, char, 0) // Do dEdx computation
AddVariableRTC(earlyTpcTransform, char, 0) // do Early TPC transformation
AddVariableRTC(debugLevel, char, 0) // Debug level
AddVariableRTC(assumeConstantBz, signed char, 0) // Assume a constant magnetic field
AddVariableRTC(toyMCEventsFlag, signed char, 0) // events were build with home-made event generator
AddVariableRTC(continuousTracking, signed char, 0) // Continuous tracking, estimate bz and errors for abs(z) = 125cm during seeding
AddVariableRTC(resetTimers, signed char, 0) // Reset benchmark timers before event processing
AddVariableRTC(dodEdx, signed char, 0) // Do dEdx computation
AddVariableRTC(earlyTpcTransform, signed char, 0) // do Early TPC transformation
AddVariableRTC(debugLevel, signed char, 0) // Debug level
AddVariableRTC(continuousMaxTimeBin, int, 0) // Max time bin for continuous tracking
EndConfig()

Expand Down
6 changes: 3 additions & 3 deletions GPU/GPUTracking/utils/qconfig.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -334,10 +334,10 @@ inline int qAddOptionType<bool>(qConfigSettings<bool>& settings, bool& ref, int&
true);
}
template <>
inline int qAddOptionType<char>(qConfigSettings<char>& settings, char& ref, int& i, const char** argv, const int argc, char /*def*/)
inline int qAddOptionType<signed char>(qConfigSettings<signed char>& settings, signed char& ref, int& i, const char** argv, const int argc, signed char /*def*/)
{
return qAddOptionGeneric<char>(
settings, ref, i, argv, argc, settings.set, [](const char* a) -> char {
return qAddOptionGeneric<signed char>(
settings, ref, i, argv, argc, settings.set, [](const char* a) -> signed char {
return atoi(a);
},
settings.doDefault);
Expand Down
5 changes: 5 additions & 0 deletions GPU/GPUTracking/utils/qconfig_helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,11 @@ inline std::string print_type<char>(char val)
return std::to_string(val);
};
template <>
inline std::string print_type<signed char>(signed char val)
{
return std::to_string(val);
};
template <>
inline std::string print_type<unsigned char>(unsigned char val)
{
return std::to_string(val);
Expand Down