Skip to content

Commit 089ffad

Browse files
committed
GPU: Add dynamic configuration object to GPUReconstruction
1 parent c1176e5 commit 089ffad

File tree

6 files changed

+26
-8
lines changed

6 files changed

+26
-8
lines changed

GPU/GPUTracking/Base/GPUParam.cxx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ void GPUParam::SetDefaults(float solenoidBz)
124124
par.earlyTpcTransform = false;
125125
}
126126

127-
void GPUParam::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p, const GPURecoStepConfiguration* w)
127+
void GPUParam::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p, const GPURecoStepConfiguration* w, const GPUSettingsRecDyn* d)
128128
{
129129
if (g) {
130130
UpdateBzOnly(g->solenoidBzNominalGPU);
@@ -145,6 +145,9 @@ void GPUParam::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessi
145145
dodEdxDownscaled = (rand() % 100) < p->tpcDownscaledEdx;
146146
}
147147
}
148+
if (d) {
149+
rec.dyn = *d;
150+
}
148151
}
149152

150153
void GPUParam::UpdateBzOnly(float newSolenoidBz)

GPU/GPUTracking/Base/GPUParam.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ struct GPUParam : public internal::GPUParam_t<GPUSettingsRec, GPUSettingsParam>
8484
#ifndef GPUCA_GPUCODE
8585
void SetDefaults(float solenoidBz);
8686
void SetDefaults(const GPUSettingsGRP* g, const GPUSettingsRec* r = nullptr, const GPUSettingsProcessing* p = nullptr, const GPURecoStepConfiguration* w = nullptr);
87-
void UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p = nullptr, const GPURecoStepConfiguration* w = nullptr);
87+
void UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p = nullptr, const GPURecoStepConfiguration* w = nullptr, const GPUSettingsRecDynamic* d = nullptr);
8888
void UpdateBzOnly(float newSolenoidBz);
8989
void LoadClusterErrors(bool Print = 0);
9090
void UpdateRun3ClusterErrors(const float* yErrorParam, const float* zErrorParam);

GPU/GPUTracking/Base/GPUReconstruction.cxx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ int32_t GPUReconstruction::InitPhaseAfterDevice()
427427
(mProcessors[i].proc->*(mProcessors[i].InitializeProcessor))();
428428
}
429429

430-
WriteConstantParams(); // First initialization, if the user doesn't use RunChains
430+
WriteConstantParams(); // Initialize with initial values, can optionally be updated later
431431

432432
mInitialized = true;
433433
return 0;
@@ -1105,7 +1105,12 @@ void GPUReconstruction::DumpSettings(const char* dir)
11051105
}
11061106
}
11071107

1108-
void GPUReconstruction::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p)
1108+
void GPUReconstruction::UpdateDynamicSettings(const GPUSettingsRecDynamic* d)
1109+
{
1110+
UpdateSettings(nullptr, nullptr, d);
1111+
}
1112+
1113+
void GPUReconstruction::UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p, const GPUSettingsRecDynamic* d)
11091114
{
11101115
if (g) {
11111116
mGRPSettings = *g;
@@ -1114,8 +1119,11 @@ void GPUReconstruction::UpdateSettings(const GPUSettingsGRP* g, const GPUSetting
11141119
mProcessingSettings.debugLevel = p->debugLevel;
11151120
mProcessingSettings.resetTimers = p->resetTimers;
11161121
}
1117-
GPURecoStepConfiguration w = mRecoSteps;
1118-
param().UpdateSettings(g, p, &w);
1122+
GPURecoStepConfiguration* w = nullptr;
1123+
if (mRecoSteps.steps.isSet(GPUDataTypes::RecoStep::TPCdEdx)) {
1124+
w = &mRecoSteps;
1125+
}
1126+
param().UpdateSettings(g, p, w, d);
11191127
if (mInitialized) {
11201128
WriteConstantParams();
11211129
}

GPU/GPUTracking/Base/GPUReconstruction.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,8 @@ class GPUReconstruction
200200
void SetSettings(const GPUSettingsGRP* grp, const GPUSettingsRec* rec = nullptr, const GPUSettingsProcessing* proc = nullptr, const GPURecoStepConfiguration* workflow = nullptr);
201201
void SetResetTimers(bool reset) { mProcessingSettings.resetTimers = reset; } // May update also after Init()
202202
void SetDebugLevelTmp(int32_t level) { mProcessingSettings.debugLevel = level; } // Temporarily, before calling SetSettings()
203-
void UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p = nullptr);
203+
void UpdateSettings(const GPUSettingsGRP* g, const GPUSettingsProcessing* p = nullptr, const GPUSettingsRecDynamic *d = nullptr);
204+
void UpdateDynamicSettings(const GPUSettingsRecDynamic* d);
204205
void SetOutputControl(const GPUOutputControl& v) { mOutputControl = v; }
205206
void SetOutputControl(void* ptr, size_t size);
206207
void SetInputControl(void* ptr, size_t size);

GPU/GPUTracking/Base/GPUReconstructionCPU.cxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,7 @@ int32_t GPUReconstructionCPU::RunChains()
228228
mThreadId = GetThread();
229229
}
230230
if (mSlaves.size() || mMaster) {
231-
WriteConstantParams(); // Reinitialize
231+
WriteConstantParams(); // Reinitialize // TODO: Get this in sync with GPUChainTracking::DoQueuedUpdates, and consider the doublePipeline
232232
}
233233
for (uint32_t i = 0; i < mChains.size(); i++) {
234234
int32_t retVal = mChains[i]->RunChain();

GPU/GPUTracking/Definitions/GPUSettingsList.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,11 @@ AddOptionRTC(pileupBwdNBC, uint8_t, 80, "", 0, "Pre-trigger Pile-up integration
181181
AddHelp("help", 'h')
182182
EndConfig()
183183

184+
// Dynamic settings, must NOT use AddOptionRTC(...) !!!
185+
BeginSubConfig(GPUSettingsRecDynamic, dyn, configStandalone.rec, "RECDYN", 0, "Reconstruction settings", rec_dyn)
186+
AddHelp("help", 'h')
187+
EndConfig()
188+
184189
BeginSubConfig(GPUSettingsRec, rec, configStandalone, "REC", 0, "Reconstruction settings", rec)
185190
AddOptionRTC(maxTrackQPtB5, float, 1.f / GPUCA_MIN_TRACK_PTB5_DEFAULT, "", 0, "required max Q/Pt (==min Pt) of tracks")
186191
AddOptionRTC(nonConsecutiveIDs, int8_t, false, "", 0, "Non-consecutive cluster IDs as in HLT, disables features that need access to slice data in TPC merger")
@@ -193,6 +198,7 @@ AddOptionRTC(trackingRefitGPUModel, int8_t, 1, "", 0, "Use GPU track model for t
193198
AddCustomCPP(void SetMinTrackPtB5(float v) { maxTrackQPtB5 = v > 0.001f ? (1.f / v) : (1.f / 0.001f); })
194199
AddSubConfig(GPUSettingsRecTPC, tpc)
195200
AddSubConfig(GPUSettingsRecTRD, trd)
201+
AddSubConfig(GPUSettingsRecDynamic, dyn)
196202
AddHelp("help", 'h')
197203
EndConfig()
198204

0 commit comments

Comments
 (0)