@@ -89,13 +89,17 @@ void GPUTPCNNClusterizerHost::initClusterizer(const GPUSettingsProcessingNNclust
8989 clustererNN.mNnClusterizerSizeInputRow = settings.nnClusterizerSizeInputRow ;
9090 clustererNN.mNnClusterizerSizeInputPad = settings.nnClusterizerSizeInputPad ;
9191 clustererNN.mNnClusterizerSizeInputTime = settings.nnClusterizerSizeInputTime ;
92- clustererNN.mNnClusterizerChargeArraySize = ((2 * settings.nnClusterizerSizeInputRow + 1 ) * (2 * settings.nnClusterizerSizeInputPad + 1 ) * (2 * settings.nnClusterizerSizeInputTime + 1 ));
92+ clustererNN.mNnClusterizerFullRowSize = 2 * settings.nnClusterizerSizeInputRow + 1 ;
93+ clustererNN.mNnClusterizerFullPadSize = 2 * settings.nnClusterizerSizeInputPad + 1 ;
94+ clustererNN.mNnClusterizerFullTimeSize = 2 * settings.nnClusterizerSizeInputTime + 1 ;
95+ clustererNN.mNnClusterizerChargeArraySize = clustererNN.mNnClusterizerFullRowSize * clustererNN.mNnClusterizerFullPadSize * clustererNN.mNnClusterizerFullTimeSize ;
96+ clustererNN.mNnClusterizerPadTimeSize = clustererNN.mNnClusterizerFullPadSize * clustererNN.mNnClusterizerFullTimeSize ;
9397 clustererNN.mNnClusterizerElementSize = clustererNN.mNnClusterizerChargeArraySize + (settings.nnClusterizerAddIndexData ? 3 : 0 );
94- clustererNN.mBoundaryMapSizeRow = 3 * clustererNN.mNnClusterizerSizeInputRow + o2::tpc::constants::MAXGLOBALPADROW;
95- clustererNN.mBoundaryPadding = 11 ; // padding on each side to account for pad_offset. N=11 since then mIsBoundary = 24320 ~< (1.5 x 2^14 = 24576) && N must be bigger than (NPads[row(end_iroc + 1)] - NPads[row(end_iroc)])/2 (=6) for pad_offset to work
96- clustererNN.mBoundaryMapSizePadsPerRow = GPUTPCGeometry::NPads (o2::tpc::constants::MAXGLOBALPADROW - 1 ) + 2 * clustererNN.mBoundaryPadding ;
97- clustererNN.mBoundaryMapSize = clustererNN.mBoundaryMapSizeRow * clustererNN.mBoundaryMapSizePadsPerRow ;
98- clustererNN.mIndexLookupSize = 3 * clustererNN.mNnClusterizerChargeArraySize ; // local row, pad, time shift from flat index
98+ // clustererNN.mBoundaryMapSizeRow = 3 * clustererNN.mNnClusterizerSizeInputRow + o2::tpc::constants::MAXGLOBALPADROW;
99+ // clustererNN.mBoundaryPadding = 11; // padding on each side to account for pad_offset. N=11 since then mIsBoundary = 24320 ~< (1.5 x 2^14 = 24576) && N must be bigger than (NPads[row(end_iroc + 1)] - NPads[row(end_iroc)])/2 (=6) for pad_offset to work
100+ // clustererNN.mBoundaryMapSizePadsPerRow = GPUTPCGeometry::NPads(o2::tpc::constants::MAXGLOBALPADROW - 1) + 2 * clustererNN.mBoundaryPadding;
101+ // clustererNN.mBoundaryMapSize = clustererNN.mBoundaryMapSizeRow * clustererNN.mBoundaryMapSizePadsPerRow;
102+ // clustererNN.mIndexLookupSize = 3 * clustererNN.mNnClusterizerChargeArraySize; // local row, pad, time shift from flat index
99103 clustererNN.mNnClusterizerAddIndexData = settings.nnClusterizerAddIndexData ;
100104 clustererNN.mNnClusterizerBatchedMode = settings.nnClusterizerBatchedMode ;
101105 clustererNN.mNnClusterizerBoundaryFillValue = settings.nnClusterizerBoundaryFillValue ;
@@ -124,38 +128,38 @@ void GPUTPCNNClusterizerHost::initClusterizer(const GPUSettingsProcessingNNclust
124128 }
125129}
126130
127- void GPUTPCNNClusterizerHost::createBoundary (GPUTPCNNClusterizer& clustererNN)
128- {
129- // Call after init of the clustererNN elements
130- for (int r = 0 ; r < clustererNN.mBoundaryMapSizeRow ; r++) {
131- int8_t skipCheckInRow = 0 ;
132- for (int p = 0 ; p < clustererNN.mBoundaryMapSizePadsPerRow ; p++) {
133- int32_t i = r * clustererNN.mBoundaryMapSizePadsPerRow + p;
134- clustererNN.mIsBoundary [i] = 1 ;
135- if (!skipCheckInRow && (p >= clustererNN.mBoundaryPadding || r >= clustererNN.mNnClusterizerSizeInputRow )) {
136- if (r < (GPUTPCGeometry::EndIROC () + clustererNN.mNnClusterizerSizeInputRow )) {
137- clustererNN.mIsBoundary [i] = (int32_t )((p - clustererNN.mBoundaryPadding ) >= static_cast <int >(GPUTPCGeometry::NPads (r - clustererNN.mNnClusterizerSizeInputRow )));
138- } else if (r >= (GPUTPCGeometry::EndIROC () + 2 * clustererNN.mNnClusterizerSizeInputRow ) && r < (o2::tpc::constants::MAXGLOBALPADROW + 2 * clustererNN.mNnClusterizerSizeInputRow )) {
139- clustererNN.mIsBoundary [i] = (int32_t )((p - clustererNN.mBoundaryPadding ) >= static_cast <int >(GPUTPCGeometry::NPads (r - 2 * clustererNN.mNnClusterizerSizeInputRow )));
140- }
141- skipCheckInRow = (clustererNN.mIsBoundary [i] == 1 ); // No need to check further pads in this row
142- }
143- }
144- }
145- }
146-
147- void GPUTPCNNClusterizerHost::createIndexLookup (GPUTPCNNClusterizer& clustererNN)
148- {
149- for (int32_t i = 0 ; i < clustererNN.mNnClusterizerChargeArraySize ; i++) {
150- int32_t r = CAMath::Floor (i / ((2 * clustererNN.mNnClusterizerSizeInputPad + 1 ) * (2 * clustererNN.mNnClusterizerSizeInputTime + 1 ))) - clustererNN.mNnClusterizerSizeInputRow ;
151- int32_t rest_1 = i % ((2 * clustererNN.mNnClusterizerSizeInputPad + 1 ) * (2 * clustererNN.mNnClusterizerSizeInputTime + 1 ));
152- int32_t p = CAMath::Floor (rest_1 / (2 * clustererNN.mNnClusterizerSizeInputTime + 1 )) - clustererNN.mNnClusterizerSizeInputPad ;
153- int32_t t = (rest_1 % (2 * clustererNN.mNnClusterizerSizeInputTime + 1 )) - clustererNN.mNnClusterizerSizeInputTime ;
154- clustererNN.mIndexLookup [3 * i] = r;
155- clustererNN.mIndexLookup [3 * i + 1 ] = p;
156- clustererNN.mIndexLookup [3 * i + 2 ] = t;
157- }
158- }
131+ // void GPUTPCNNClusterizerHost::createBoundary(GPUTPCNNClusterizer& clustererNN)
132+ // {
133+ // // Call after init of the clustererNN elements
134+ // for (int r = 0; r < clustererNN.mBoundaryMapSizeRow; r++) {
135+ // int8_t skipCheckInRow = 0;
136+ // for (int p = 0; p < clustererNN.mBoundaryMapSizePadsPerRow; p++) {
137+ // int32_t i = r * clustererNN.mBoundaryMapSizePadsPerRow + p;
138+ // clustererNN.mIsBoundary[i] = 1;
139+ // if (!skipCheckInRow && (p >= clustererNN.mBoundaryPadding || r >= clustererNN.mNnClusterizerSizeInputRow)) {
140+ // if (r < (GPUTPCGeometry::EndIROC() + clustererNN.mNnClusterizerSizeInputRow)) {
141+ // clustererNN.mIsBoundary[i] = (int32_t)((p - clustererNN.mBoundaryPadding) >= static_cast<int>(GPUTPCGeometry::NPads(r - clustererNN.mNnClusterizerSizeInputRow)));
142+ // } else if (r >= (GPUTPCGeometry::EndIROC() + 2 * clustererNN.mNnClusterizerSizeInputRow) && r < (o2::tpc::constants::MAXGLOBALPADROW + 2 * clustererNN.mNnClusterizerSizeInputRow)) {
143+ // clustererNN.mIsBoundary[i] = (int32_t)((p - clustererNN.mBoundaryPadding) >= static_cast<int>(GPUTPCGeometry::NPads(r - 2 * clustererNN.mNnClusterizerSizeInputRow)));
144+ // }
145+ // skipCheckInRow = (clustererNN.mIsBoundary[i] == 1); // No need to check further pads in this row
146+ // }
147+ // }
148+ // }
149+ // }
150+
151+ // void GPUTPCNNClusterizerHost::createIndexLookup(GPUTPCNNClusterizer& clustererNN)
152+ // {
153+ // for (int32_t i = 0; i < clustererNN.mNnClusterizerChargeArraySize; i++) {
154+ // int32_t r = CAMath::Floor(i / ((2 * clustererNN.mNnClusterizerSizeInputPad + 1) * (2 * clustererNN.mNnClusterizerSizeInputTime + 1))) - clustererNN.mNnClusterizerSizeInputRow;
155+ // int32_t rest_1 = i % ((2 * clustererNN.mNnClusterizerSizeInputPad + 1) * (2 * clustererNN.mNnClusterizerSizeInputTime + 1));
156+ // int32_t p = CAMath::Floor(rest_1 / (2 * clustererNN.mNnClusterizerSizeInputTime + 1)) - clustererNN.mNnClusterizerSizeInputPad;
157+ // int32_t t = (rest_1 % (2 * clustererNN.mNnClusterizerSizeInputTime + 1)) - clustererNN.mNnClusterizerSizeInputTime;
158+ // clustererNN.mIndexLookup[3 * i] = r;
159+ // clustererNN.mIndexLookup[3 * i + 1] = p;
160+ // clustererNN.mIndexLookup[3 * i + 2] = t;
161+ // }
162+ // }
159163
160164// MockedOrtAllocator implementation to be able to use volatile assignment
161165struct MockedOrtAllocator : OrtAllocator {
0 commit comments