Skip to content

Commit 51e9ab7

Browse files
authored
Merge pull request #45694 from AdrianoDee/relval_gpu_alpaka
Update to `relval_gpu.py`for Alpaka and Pixel Triplets Alpaka Workflows
2 parents 2a53ad9 + 992e347 commit 51e9ab7

File tree

6 files changed

+169
-67
lines changed

6 files changed

+169
-67
lines changed

Configuration/PyReleaseValidation/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,15 @@ The offsets currently in use are:
3333
* 0.402: Alpaka, pixel only quadruplets, portable
3434
* 0.403: Alpaka, pixel only quadruplets, portable vs. CPU validation
3535
* 0.404: Alpaka, pixel only quadruplets, portable profiling
36+
* 0.406: Alpaka, pixel only triplets, portable
37+
* 0.407: Alpaka, pixel only triplets, portable vs. CPU validation
38+
* 0.407: Alpaka, pixel only triplets, portable profiling
3639
* 0.412: Alpaka, ECAL only, portable
3740
* 0.422: Alpaka, HCAL only, portable
3841
* 0.423: Alpaka, HCAL only, portable vs CPU validation
3942
* 0.424: Alpaka, HCAL only, portable profiling
4043
* 0.492: Alpaka, full reco with pixel quadruplets
44+
* 0.496: Alpaka, full reco with pixel triplets
4145
* 0.5: Pixel tracking only + 0.1
4246
* 0.501: Patatrack, pixel only quadruplets, on CPU
4347
* 0.502: Patatrack, pixel only quadruplets, with automatic offload to GPU if available

Configuration/PyReleaseValidation/python/relval_gpu.py

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -13,70 +13,68 @@
1313

1414
# mc WFs to run in IB:
1515

16-
# mc 2023 Alpaka pixel-only quadruplets: TTbar: any backend, any backend vs cpu validation, profiling
16+
# mc 2023 #FIXME to be removed as soon as cms-bot is updated
17+
# no PU Alpaka pixel-only TTbar: quadruplets any backend and profiling; ECAL-only any backend; HCAL-only any backend and profiling
18+
# mc 2024
19+
# no PU
20+
# Alpaka pixel-only quadruplets: TTbar: any backend, any backend vs cpu validation, profiling
21+
# Alpaka pixel-only triplets: TTbar: any backend, any backend vs cpu validation, profiling
1722
# Alpaka ECAL-only: TTbar: any backend
1823
# Alpaka HCAL-only: TTbar: any backend, any backend vs cpu validation, profiling
19-
# Alpaka with full reco and pixel-only quadruplets: TTbar: any backend
24+
# Alpaka with full reco and pixel-only: TTbar: any backend quadruplets, any backend triplets
2025
# Alpaka pixel-only quadruplets: ZMM: any backend, any backend vs cpu validation, profiling
26+
# Alpaka pixel-only triplets: ZMM: any backend, any backend vs cpu validation, profiling
2127
# Alpaka pixel-only quadruplets: Single Nu E10: any backend
22-
# Patatrack pixel-only quadruplets: ZMM - on GPU (optional), GPU-vs-CPU validation, profiling
23-
# Patatrack pixel-only triplets: ZMM - on GPU (optional), GPU-vs-CPU validation, profiling
24-
# Patatrack pixel-only quadruplets: TTbar - on GPU (optional), GPU-vs-CPU validation, profiling
25-
# Patatrack pixel-only triplets: TTbar - on GPU (optional), GPU-vs-CPU validation, profiling
26-
# Patatrack ECAL-only: TTbar - on GPU (optional), GPU-vs-CPU validation, profiling
27-
# Patatrack HCAL-only: TTbar - on GPU (optional), GPU-vs-CPU validation, profiling
28-
# Patatrack pixel-only quadruplets, ECAL, HCAL: TTbar - on GPU (optional), GPU-vs-CPU validation
29-
# Patatrack pixel-only triplets, ECAL, HCAL: TTbar - on GPU (optional), GPU-vs-CPU validation
30-
# full reco with Patatrack pixel-only quadruplets: TTbar - on GPU (optional), GPU-vs-CPU validation
31-
# full reco with Patatrack pixel-only triplets: TTbar - on GPU (optional), GPU-vs-CPU validation
32-
# Patatrack pixel-only quadruplets: Single Nu E10 on GPU (optional)
28+
# with PU
3329
# Alpaka pixel-only quadruplets: TTbar with PU: any backend, any backend vs cpu validation, profiling
30+
# Alpaka pixel-only triplets: TTbar with PU: any backend, any backend vs cpu validation, profiling
3431
# Alpaka ECAL-only: TTbar with PU: any backend
3532
# Alpaka HCAL-only: TTbar with PU: any backend, any backend vs cpu validation, profiling
36-
# Alpaka with full reco and pixel-only quadruplets: TTbar with PU: any backend
33+
# Alpaka with full reco and pixel-only: TTbar with PU: any backend quadruplets, any backend triplets
3734
# Alpaka pixel-only quadruplets: ZMM with PU: any backend, any backend vs cpu validation, profiling
35+
# Alpaka pixel-only triplets: ZMM with PU: any backend, any backend vs cpu validation, profiling
3836
# Alpaka pixel-only quadruplets: Single Nu E10 with PU: any backend
39-
# mc 2026 Patatrack pixel-only quadruplets: Single Nu E10: on GPU (optional)
37+
# mc 2026
38+
# no PU
39+
# Alpaka pixel-only: TTbar: quadruplets any backend, any backend vs cpu validation, profiling, triplets
40+
# Alpaka pixel-only: Single Nu E10: any backend
41+
# with PU
42+
# Alpaka pixel-only: TTbar with PU: quadruplets any backend, any backend vs cpu validation, profiling
43+
4044
numWFIB = [
41-
# 2023, Alpaka-based
42-
12434.402, 12434.403, 12434.404,
43-
#12434.406, 12434.407, 12434.408,
44-
12434.412,#12434.413, 12434.414,
45-
12434.422, 12434.423, 12434.424,
46-
#12434.482, 12434.483, 12434.484
47-
#12434.486, 12434.487, 12434.488
48-
12434.492,#12434.493
49-
12450.402, 12450.403, 12450.404,
50-
#12450.406, 12450.407, 12450.408,
51-
12461.402,
52-
53-
# 2023, CUDA-based
54-
12450.502, 12450.503, 12450.504,
55-
12450.506, 12450.507, 12450.508,
56-
12434.502, 12434.503, 12434.504,
57-
12434.506, 12434.507, 12434.508,
58-
12434.512, 12434.513, 12434.514,
59-
12434.522, 12434.523, 12434.524,
60-
12434.582, 12434.583,#12434.584,
61-
12434.586, 12434.587,#12434.588,
62-
12434.592, 12434.593,
63-
12434.596, 12434.597,
64-
12461.502,
65-
66-
# 2023 with PU, Alpaka-based
67-
12634.402, 12634.403, 12634.404,
68-
#12634.406, 12634.407, 12634.408
69-
12634.412,#12634.413, 12634.414
70-
12634.422, 12634.423, 12634.424,
71-
#12634.482, 12634.483, 12634.484
72-
#12634.486, 12634.487, 12634.488
73-
12634.492,#12634.493
74-
12650.402, 12650.403, 12650.404,
75-
#12650.406, 12650.407, 12650.408
76-
12661.402,
77-
78-
# 2026, CUDA-based
79-
24861.502
45+
# 2023, Alpaka-based noPU
46+
12434.402,12434.403,12434.412,12434.422,12434.423,
47+
48+
# 2024, Alpaka-based noPU
49+
12834.402, 12834.403, 12834.404,
50+
12834.406, 12834.407, 12834.408,
51+
12834.412,#12834.413, 12834.414,
52+
12834.422, 12834.423, 12834.424,
53+
#12834.482, 12834.483, 12834.484
54+
#12834.486, 12834.487, 12834.488
55+
12834.492, 12834.493,
56+
12850.402, 12850.403, 12850.404,
57+
12450.406, 12450.407, 12450.408,
58+
12861.402,
59+
60+
# 2024 with PU, Alpaka-based
61+
13034.402, 13034.403, 13034.404,
62+
13034.406, 13034.407, 13034.408,
63+
13034.412, #13034.413, 13034.414
64+
13034.422, 13034.423, 13034.424,
65+
#13034.482, 13034.483, 13034.484
66+
#13034.486, 13034.487, 13034.488
67+
13034.492, 13034.493,
68+
13050.402, 13050.403, 13050.404,
69+
13050.406, 13050.407, 13050.408,
70+
13061.402,
71+
72+
# 2026, Alpaka-based noPU
73+
29634.402, 29634.403, 29634.404, 29634.406,
74+
29661.402,
75+
76+
# 2026, Alpaka-based PU
77+
29834.402, 29834.403, 29834.404
8078
]
8179

8280
for numWF in numWFIB:

Configuration/PyReleaseValidation/python/upgradeWorkflowComponents.py

Lines changed: 80 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1125,7 +1125,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
11251125
'--customise': 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'
11261126
},
11271127
harvest = None,
1128-
suffix = 'Patatrack_PixelOnlyTripletsGPU_Profiling',
1128+
suffix = 'Patatrack_PixelOnlyTripletsGPU_Profiling',
11291129
offset = 0.508,
11301130
)
11311131

@@ -1136,7 +1136,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
11361136
upgradeWFs['PatatrackECALOnlyAlpaka'] = PatatrackWorkflow(
11371137
digi = {
11381138
# customize the ECAL Local Reco part of the HLT menu for Alpaka
1139-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1139+
'--procModifiers': 'alpaka',
11401140
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
11411141
},
11421142
reco = {
@@ -1312,7 +1312,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
13121312
# - HCAL-only reconstruction using Alpaka with DQM and Validation
13131313
upgradeWFs['PatatrackHCALOnlyAlpakaValidation'] = PatatrackWorkflow(
13141314
digi = {
1315-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1315+
'--procModifiers': 'alpaka',
13161316
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
13171317
},
13181318
reco = {
@@ -1332,7 +1332,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
13321332
# - HCAL-only reconstruction using GPU and Alpaka with DQM and Validation for PF Alpaka vs CPU comparisons
13331333
upgradeWFs['PatatrackHCALOnlyGPUandAlpakaValidation'] = PatatrackWorkflow(
13341334
digi = {
1335-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1335+
'--procModifiers': 'alpaka',
13361336
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
13371337
},
13381338
reco = {
@@ -1352,7 +1352,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
13521352
# - HCAL-only reconstruction using Alpaka
13531353
upgradeWFs['PatatrackHCALOnlyAlpakaProfiling'] = PatatrackWorkflow(
13541354
digi = {
1355-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1355+
'--procModifiers': 'alpaka',
13561356
},
13571357
reco = {
13581358
'-s': 'RAW2DIGI:RawToDigi_hcalOnly,RECO:reconstruction_hcalOnly',
@@ -1369,13 +1369,13 @@ def setup_(self, step, stepName, stepDict, k, properties):
13691369
# - harvesting
13701370
upgradeWFs['PatatrackFullRecoAlpaka'] = PatatrackWorkflow(
13711371
digi = {
1372-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1372+
'--procModifiers': 'alpaka',
13731373
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
13741374
},
13751375
reco = {
13761376
# skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction
13771377
'-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1378-
'--procModifiers': 'alpaka,pixelNtupletFit',
1378+
'--procModifiers': 'alpaka',
13791379
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
13801380
},
13811381
harvest = {
@@ -1385,6 +1385,28 @@ def setup_(self, step, stepName, stepDict, k, properties):
13851385
offset = 0.492,
13861386
)
13871387

1388+
# Workflow running the Pixel triplets, ECAL and HCAL reconstruction on GPU (optional), PF using Alpaka, together with the full offline reconstruction on CPU
1389+
# - HLT on GPU (optional)
1390+
# - reconstruction on Alpaka, with DQM and validation
1391+
# - harvesting
1392+
upgradeWFs['PatatrackFullRecoAlpaka'] = PatatrackWorkflow(
1393+
digi = {
1394+
'--procModifiers': 'alpaka',
1395+
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1396+
},
1397+
reco = {
1398+
# skip the @pixelTrackingOnlyValidation which cannot run together with the full reconstruction
1399+
'-s': 'RAW2DIGI:RawToDigi+RawToDigi_pixelOnly,L1Reco,RECO:reconstruction+reconstruction_pixelTrackingOnly,RECOSIM,PAT,VALIDATION:@standardValidation+@miniAODValidation,DQM:@standardDQM+@ExtraHLT+@miniAODDQM+@pixelTrackingOnlyDQM',
1400+
'--procModifiers': 'alpaka',
1401+
'--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1402+
},
1403+
harvest = {
1404+
# skip the @pixelTrackingOnlyDQM harvesting
1405+
},
1406+
suffix = 'Patatrack_FullRecoAlpakaTriplets',
1407+
offset = 0.496,
1408+
)
1409+
13881410
# Workflow running the Pixel quadruplets, ECAL and HCAL reconstruction on CPU
13891411
# - HLT on CPU
13901412
# - reconstruction on CPU, with DQM and validation
@@ -1691,7 +1713,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
16911713

16921714
upgradeWFs['PatatrackPixelOnlyAlpaka'] = PatatrackWorkflow(
16931715
digi = {
1694-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1716+
'--procModifiers': 'alpaka',
16951717
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
16961718
},
16971719
reco = {
@@ -1708,7 +1730,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
17081730

17091731
upgradeWFs['PatatrackPixelOnlyAlpakaValidation'] = PatatrackWorkflow(
17101732
digi = {
1711-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1733+
'--procModifiers': 'alpaka',
17121734
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
17131735
},
17141736
reco = {
@@ -1726,7 +1748,7 @@ def setup_(self, step, stepName, stepDict, k, properties):
17261748

17271749
upgradeWFs['PatatrackPixelOnlyAlpakaProfiling'] = PatatrackWorkflow(
17281750
digi = {
1729-
'--procModifiers': 'alpaka', # alpaka modifier activates customiseHLTForAlpaka
1751+
'--procModifiers': 'alpaka',
17301752
},
17311753
reco = {
17321754
'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly',
@@ -1738,6 +1760,54 @@ def setup_(self, step, stepName, stepDict, k, properties):
17381760
offset = 0.404,
17391761
)
17401762

1763+
upgradeWFs['PatatrackPixelOnlyTripletsAlpaka'] = PatatrackWorkflow(
1764+
digi = {
1765+
'--procModifiers': 'alpaka',
1766+
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1767+
},
1768+
reco = {
1769+
'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1770+
'--procModifiers': 'alpaka',
1771+
'--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling'
1772+
},
1773+
harvest = {
1774+
'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
1775+
},
1776+
suffix = 'Patatrack_PixelOnlyTripletsAlpaka',
1777+
offset = 0.406,
1778+
)
1779+
1780+
upgradeWFs['PatatrackPixelOnlyTripletsAlpakaValidation'] = PatatrackWorkflow(
1781+
digi = {
1782+
'--procModifiers': 'alpaka',
1783+
'--customise' : 'HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling',
1784+
},
1785+
reco = {
1786+
'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly,VALIDATION:@pixelTrackingOnlyValidation,DQM:@pixelTrackingOnlyDQM',
1787+
'--procModifiers': 'alpakaValidation',
1788+
'--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,HeterogeneousCore/AlpakaServices/customiseAlpakaServiceMemoryFilling.customiseAlpakaServiceMemoryFilling'
1789+
},
1790+
harvest = {
1791+
'-s': 'HARVESTING:@trackingOnlyValidation+@pixelTrackingOnlyDQM'
1792+
},
1793+
suffix = 'Patatrack_PixelOnlyTripletsAlpaka_Validation',
1794+
offset = 0.407,
1795+
)
1796+
1797+
upgradeWFs['PatatrackPixelOnlyTripletsAlpakaProfiling'] = PatatrackWorkflow(
1798+
digi = {
1799+
'--procModifiers': 'alpaka',
1800+
},
1801+
reco = {
1802+
'-s': 'RAW2DIGI:RawToDigi_pixelOnly,RECO:reconstruction_pixelTrackingOnly',
1803+
'--procModifiers': 'alpaka',
1804+
'--customise' : 'RecoTracker/Configuration/customizePixelTracksForTriplets.customizePixelTracksForTriplets,RecoTracker/Configuration/customizePixelOnlyForProfiling.customizePixelOnlyForProfilingGPUOnly'
1805+
},
1806+
harvest = None,
1807+
suffix = 'Patatrack_PixelOnlyTripletsAlpaka_Profiling',
1808+
offset = 0.408,
1809+
)
1810+
17411811
# end of Patatrack workflows
17421812

17431813
class UpgradeWorkflow_ProdLike(UpgradeWorkflow):

DQM/SiPixelHeterogeneous/python/SiPixelHeterogenousDQM_FirstStep_cff.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@
239239
siPixelVertexSoAMonitorDevice *
240240
siPixelCompareVertices )
241241

242-
# Phase-2 sequence
242+
# Phase-2 sequence ...
243243
_monitorpixelSoACompareSource = cms.Sequence(siPixelPhase2MonitorRecHitsSoACPU *
244244
siPixelPhase2MonitorRecHitsSoAGPU *
245245
siPixelPhase2CompareRecHitsSoA *
@@ -250,6 +250,18 @@
250250
siPixelMonitorVertexSoAGPU *
251251
siPixelCompareVertexSoA)
252252

253+
# ...and the Alpaka version
254+
_monitorpixelSoACompareSourceAlpakaPhase2 = cms.Sequence(
255+
siPixelRecHitsSoAMonitorSerial *
256+
siPixelRecHitsSoAMonitorDevice *
257+
siPixelPhase1CompareRecHits *
258+
siPixelTrackSoAMonitorSerial *
259+
siPixelTrackSoAMonitorDevice *
260+
siPixelPhase1CompareTracks *
261+
siPixelVertexSoAMonitorSerial *
262+
siPixelVertexSoAMonitorDevice *
263+
siPixelCompareVertices )
264+
253265
# HIon sequence
254266
_monitorpixelSoACompareSourceHIonPhase1 = cms.Sequence(siPixelHIonPhase1MonitorRecHitsSoACPU *
255267
siPixelHIonPhase1MonitorRecHitsSoAGPU *
@@ -262,9 +274,12 @@
262274
siPixelCompareVertexSoA)
263275

264276
phase2_tracker.toReplaceWith(monitorpixelSoACompareSource,_monitorpixelSoACompareSource)
277+
phase2_tracker.toReplaceWith(monitorpixelSoACompareSourceAlpaka,_monitorpixelSoACompareSourceAlpakaPhase2)
265278

266279
from Configuration.ProcessModifiers.gpuValidationPixel_cff import gpuValidationPixel
267280
gpuValidationPixel.toReplaceWith(monitorpixelSoASource, monitorpixelSoACompareSource)
268281

269282
from Configuration.ProcessModifiers.alpakaValidationPixel_cff import alpakaValidationPixel
270-
(alpakaValidationPixel & ~gpuValidationPixel).toReplaceWith(monitorpixelSoASource, monitorpixelSoACompareSourceAlpaka)
283+
(alpakaValidationPixel & ~gpuValidationPixel ).toReplaceWith(monitorpixelSoASource, monitorpixelSoACompareSourceAlpaka)
284+
285+

DataFormats/VertexSoA/interface/ZVertexDefinitions.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,21 @@ namespace zVertex {
88
constexpr uint32_t MAXTRACKS = 32 * 1024;
99
constexpr uint32_t MAXVTX = 1024;
1010

11+
//
12+
// FIXME: MAXTRACKS is low for Phase2 pixel triplets with PU=200
13+
// and the txiplets wfs in those conditions will fail.
14+
//
15+
// Not rising it since to the needed 128*1024 since it causes
16+
// a 4-5% jump in memory usage.
17+
//
18+
// The original sin is that, for the moment, the VertexSoA
19+
// has a unique index for the tracks and the vertices and
20+
// so it needs to be sized for the bigger of the two (the tracks, of course).
21+
// This means we are wasting memory (this is true also for Phase1).
22+
// We need to split the two indices (as is for CUDA, since we were not using
23+
// the PortableCollection + Layout was not yet used).
24+
//
25+
1126
} // namespace zVertex
1227

1328
#endif

0 commit comments

Comments
 (0)