@@ -93,9 +93,9 @@ void GPUTPCNNClusterizerHost::initClusterizer(const GPUSettingsProcessingNNclust
9393 clustererNN.mNnClusterizerElementSize = clustererNN.mNnClusterizerChargeArraySize + (settings.nnClusterizerAddIndexData ? 3 : 0 );
9494 clustererNN.mBoundaryMapSizeRow = 3 * clustererNN.mNnClusterizerSizeInputRow + o2::tpc::constants::MAXGLOBALPADROW;
9595 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) + 2 * clustererNN.mBoundaryPadding ;
97- clustererNN.mBoundaryMapSize = clustererNN.mBoundaryMapSizeRow * clustererNN.mBoundaryMapSizePadsPerRow ;
98- clustererNN.mIndexLookupSize = 3 * clustererNN.mNnClusterizerChargeArraySize ; // local row, pad, time shift from flat index
96+ clustererNN.mBoundaryMapSizePadsPerRow = GPUTPCGeometry::NPads (o2::tpc::constants::MAXGLOBALPADROW) + 2 * clustererNN.mBoundaryPadding ;
97+ clustererNN.mBoundaryMapSize = clustererNN.mBoundaryMapSizeRow * clustererNN.mBoundaryMapSizePadsPerRow ;
98+ clustererNN.mIndexLookupSize = 3 * clustererNN.mNnClusterizerChargeArraySize ; // local row, pad, time shift from flat index
9999 clustererNN.mNnClusterizerAddIndexData = settings.nnClusterizerAddIndexData ;
100100 clustererNN.mNnClusterizerBatchedMode = settings.nnClusterizerBatchedMode ;
101101 clustererNN.mNnClusterizerBoundaryFillValue = settings.nnClusterizerBoundaryFillValue ;
@@ -124,34 +124,36 @@ void GPUTPCNNClusterizerHost::initClusterizer(const GPUSettingsProcessingNNclust
124124 }
125125}
126126
127- void GPUTPCNNClusterizerHost::createBoundary (GPUTPCNNClusterizer& clustererNN) {
127+ void GPUTPCNNClusterizerHost::createBoundary (GPUTPCNNClusterizer& clustererNN)
128+ {
128129 // Call after init of the clustererNN elements
129- for (int r = 0 ; r < clustererNN.mBoundaryMapSizeRow ; r++) {
130+ for (int r = 0 ; r < clustererNN.mBoundaryMapSizeRow ; r++) {
130131 int8_t skipCheckInRow = 0 ;
131132 for (int p = 0 ; p < clustererNN.mBoundaryMapSizePadsPerRow ; p++) {
132133 int32_t i = r * clustererNN.mBoundaryMapSizePadsPerRow + p;
133134 clustererNN.mIsBoundary [i] = 1 ;
134135 if (!skipCheckInRow && (p >= clustererNN.mBoundaryPadding || r >= clustererNN.mNnClusterizerSizeInputRow )) {
135136 if (r < (GPUTPCGeometry::EndIROC () + clustererNN.mNnClusterizerSizeInputRow )) {
136137 clustererNN.mIsBoundary [i] = (int32_t )((p - clustererNN.mBoundaryPadding ) >= static_cast <int >(GPUTPCGeometry::NPads (r - clustererNN.mNnClusterizerSizeInputRow )));
137- } else if (r >= (GPUTPCGeometry::EndIROC () + 2 * clustererNN.mNnClusterizerSizeInputRow ) && r < (o2::tpc::constants::MAXGLOBALPADROW + 2 * clustererNN.mNnClusterizerSizeInputRow )) {
138- clustererNN.mIsBoundary [i] = (int32_t )((p - clustererNN.mBoundaryPadding ) >= static_cast <int >(GPUTPCGeometry::NPads (r - 2 * 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 )));
139140 }
140141 skipCheckInRow = (clustererNN.mIsBoundary [i] == 1 ); // No need to check further pads in this row
141142 }
142143 }
143144 }
144145}
145146
146- void GPUTPCNNClusterizerHost::createIndexLookup (GPUTPCNNClusterizer& clustererNN) {
147- for (int32_t i = 0 ; i < clustererNN.mNnClusterizerChargeArraySize ; i++){
147+ void GPUTPCNNClusterizerHost::createIndexLookup (GPUTPCNNClusterizer& clustererNN)
148+ {
149+ for (int32_t i = 0 ; i < clustererNN.mNnClusterizerChargeArraySize ; i++) {
148150 int32_t r = CAMath::Floor (i / ((2 * clustererNN.mNnClusterizerSizeInputPad + 1 ) * (2 * clustererNN.mNnClusterizerSizeInputTime + 1 ))) - clustererNN.mNnClusterizerSizeInputRow ;
149151 int32_t rest_1 = i % ((2 * clustererNN.mNnClusterizerSizeInputPad + 1 ) * (2 * clustererNN.mNnClusterizerSizeInputTime + 1 ));
150152 int32_t p = CAMath::Floor (rest_1 / (2 * clustererNN.mNnClusterizerSizeInputTime + 1 )) - clustererNN.mNnClusterizerSizeInputPad ;
151153 int32_t t = (rest_1 % (2 * clustererNN.mNnClusterizerSizeInputTime + 1 )) - clustererNN.mNnClusterizerSizeInputTime ;
152- clustererNN.mIndexLookup [3 * i] = r;
153- clustererNN.mIndexLookup [3 * i + 1 ] = p;
154- clustererNN.mIndexLookup [3 * i + 2 ] = t;
154+ clustererNN.mIndexLookup [3 * i] = r;
155+ clustererNN.mIndexLookup [3 * i + 1 ] = p;
156+ clustererNN.mIndexLookup [3 * i + 2 ] = t;
155157 }
156158}
157159
0 commit comments