48#if !defined(GPUCA_GPUCODE)
50 const size_t clusterInRow = clusterer.mPclusterInRow[
row];
56 auto&
labels = clusterer.mPlabelsByRow[
row].data;
59 uint32_t labelCount = 0;
61 for (
size_t i = 0;
i < clusterInRow;
i++) {
63 labelCount += interim.labels.size();
66 clusterer.mPlabelsInRow[
row] = labelCount;
73#if !defined(GPUCA_GPUCODE)
76 uint32_t headerOffset = clusterer.mPlabelsHeaderGlobalOffset;
77 uint32_t dataOffset = clusterer.mPlabelsDataGlobalOffset;
78 for (uint32_t
r = 0;
r <
row;
r++) {
79 headerOffset += clusterer.mPclusterInRow[
r];
80 dataOffset += clusterer.mPlabelsInRow[
r];
83 auto*
labels = clusterer.mPlabelsByRow[
row].data.data();
84 for (uint32_t
c = 0;
c < clusterer.mPclusterInRow[
row];
c++) {
86 assert(dataOffset + interim.
labels.size() <= out->data.size());
87 out->header[headerOffset] = dataOffset;
88 std::copy(interim.
labels.cbegin(), interim.
labels.cend(), out->data.begin() + dataOffset);
91 dataOffset += interim.
labels.size();