-
Notifications
You must be signed in to change notification settings - Fork 442
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GPU TPC: Decoding: Add option to apply timebin cut to CTF cluster decoding on GPUs #13753
Conversation
REQUEST FOR PRODUCTION RELEASES:
This will add The following labels are available |
@davidrohr timebin cut showed to be 30% slower (both CPU and GPU versions). Is it acceptable? |
I was hoping for 15 - 20% but it is ok.
Could you for now remove the GPU_proc.applyCFCuts... check and rely on on the param.cutTPCTimeBin > 0 check? That will enable it by default if the CCDB object returns != -1.
Later we need a different setting.
Kind Regards
David Rohr
Sent from my mobile. (Excuse the typos!)
…On 29 November 2024 12:19:23 CET, Gabriele Cimador ***@***.***> wrote:
@davidrohr timebin cut showed to be 30% slower (both CPU and GPU versions). Is it acceptable?
--
Reply to this email directly or view it on GitHub:
#13753 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
Is this for applying the cut in 10% of TFs or this is a cost per affected TF? |
Should be per TF when thr CCDB object returns != -1.
Kind Regards
David Rohr
Sent from my mobile. (Excuse the typos!)
…On 29 November 2024 12:25:04 CET, Ruben Shahoyan ***@***.***> wrote:
Is this for applying the cut in 10% of TFs or this is a cost per affected TF?
--
Reply to this email directly or view it on GitHub:
#13753 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
027ab37
to
3e8838c
Compare
3e8838c
to
64bc631
Compare
@cima22 @davidrohr something is wrong (used dev + these 2 commits). 1st of all, running with The plot shows the end of 1st 300 TFs of the run 559545, top pad: the TFs which should not have been touched (i.e.
This tarball contains the results of
you can see that the std_cl.txt and gpu_cl.txt are identical while oldcpu_cl.txt loses cluters at any TF: |
PS: for completeness, tried also with |
@shahor02 Thank you very much for the detailed report.
So it should only be triggered if the CCDB object returns != -1 for the timeBin parameter. Could you please try to run this test just with the new decoding using CPUs only, ( |
@gabriele, note that the ccdb object will return -1 if no cut is to be applied, but the param().cutTPCTimeBin can be 0 in that case, so please use >0 to apply the cut!
|
@shahor02 : Can you check whether the cut is correctly extracted here: <https://github.com/AliceO2Group/AliceO2/blob/167b8c0de7f447ee0a462d88d91f4c69f8677f8b/GPU/Workflow/src/GPUWorkflowTPC.cxx#L309>
|
@cima22
it will reconstruct 4 TFs (2 of which should be cut) and produce surviving clusters TBins for 2 categories. With the options you requested, I get @davidrohr the extraction of the option looks fine, though one could fetch to object from CCDB only once. I've hacked the code adding logging of the selected option (below) and get from the log file:
|
Could you also log param().tpcCutTimeBin
here <https://github.com/AliceO2Group/AliceO2/blob/167b8c0de7f447ee0a462d88d91f4c69f8677f8b/GPU/GPUTracking/Global/GPUChainTrackingCompression.cxx#L208>
and check if it matches?
|
No, it does not reach it:
with
|
Then the problem.is for sure in my code not in Gabriele's. I'll try to have a look at night.
Kind Regards
David Rohr
Sent from my mobile. (Excuse the typos!)
…On 30 November 2024 13:09:38 GMT-03:00, Ruben Shahoyan ***@***.***> wrote:
No, it does not reach it:
```
[3162434:gpu-reconstruction]: [17:07:02][INFO] fetchCalibsCCDBTPC-> needCalibUpdate=true mTPCCutAtTimeBin=-1 overrideTPCTimeBinCur=0 for TFCounter 1
[3162434:gpu-reconstruction]: [17:07:02][INFO] in RunTPCDecompression: param().tpcCutTimeBin=-1
[3162434:gpu-reconstruction]: [17:07:04][INFO] fetchCalibsCCDBTPC-> needCalibUpdate=true mTPCCutAtTimeBin=14192 overrideTPCTimeBinCur=0 for TFCounter 11
[3162434:gpu-reconstruction]: [17:07:04][INFO] in RunTPCDecompression: param().tpcCutTimeBin=-1
[3162434:gpu-reconstruction]: [17:07:06][INFO] fetchCalibsCCDBTPC-> needCalibUpdate=true mTPCCutAtTimeBin=-1 overrideTPCTimeBinCur=0 for TFCounter 20
[3162434:gpu-reconstruction]: [17:07:06][INFO] in RunTPCDecompression: param().tpcCutTimeBin=-1
[3162434:gpu-reconstruction]: [17:07:08][INFO] fetchCalibsCCDBTPC-> needCalibUpdate=true mTPCCutAtTimeBin=14192 overrideTPCTimeBinCur=0 for TFCounter 21
[3162434:gpu-reconstruction]: [17:07:08][INFO] in RunTPCDecompression: param().tpcCutTimeBin=-1
```
with
```
diff --git a/GPU/GPUTracking/Global/GPUChainTrackingCompression.cxx b/GPU/GPUTracking/Global/GPUChainTrackingCompression.cxx
index 01e4d011d0..7ad1e55463 100644
--- a/GPU/GPUTracking/Global/GPUChainTrackingCompression.cxx
+++ b/GPU/GPUTracking/Global/GPUChainTrackingCompression.cxx
@@ -206,6 +206,7 @@ int32_t GPUChainTracking::RunTPCCompression()
int32_t GPUChainTracking::RunTPCDecompression()
{
#ifdef GPUCA_HAVE_O2HEADERS
+ LOGP(info, "in RunTPCDecompression: param().tpcCutTimeBin={}", param().tpcCutTimeBin);
if (GetProcessingSettings().tpcUseOldCPUDecoding) {
const auto& threadContext = GetThreadContext();
TPCClusterDecompressor decomp;
diff --git a/GPU/Workflow/src/GPUWorkflowSpec.cxx b/GPU/Workflow/src/GPUWorkflowSpec.cxx
index 06942eab47..26f0fe689d 100644
--- a/GPU/Workflow/src/GPUWorkflowSpec.cxx
+++ b/GPU/Workflow/src/GPUWorkflowSpec.cxx
@@ -1054,6 +1054,7 @@ void GPURecoWorkflowSpec::doCalibUpdates(o2::framework::ProcessingContext& pc, c
newCalibValues.tpcTimeBinCut = mConfig->configGRP.tpcCutTimeBin = mTPCCutAtTimeBin;
needCalibUpdate = true;
}
+ LOGP(info, "fetchCalibsCCDBTPC-> needCalibUpdate={} mTPCCutAtTimeBin={} overrideTPCTimeBinCur={} for TFCounter {}", needCalibUpdate, mTPCCutAtTimeBin, mConfParam->overrideTPCTimeBinCur, pc.services().get<o2::framework::TimingInfo>().tfCounter);
if (needCalibUpdate) {
LOG(info) << "Updating GPUReconstruction calibration objects";
mGPUReco->UpdateCalibration(newCalibObjects, newCalibValues);
```
--
Reply to this email directly or view it on GitHub:
#13753 (comment)
You are receiving this because you were mentioned.
Message ID: ***@***.***>
|
With #13757 works fine: |
The configKeyValue
GPU_proc.tpcApplyCFCutsAtDecoding=1;
enables the filtering of TPC clusters at decoding time based on timebin. Compatible with both GPUs and CPU track model decoding. Still need to check performance, let's see what the CI says.