48#if !defined(GPUCA_GPUCODE)
51 uint32_t clusterInRow = clusterer.mPclusterInRow[
row];
52 uint32_t labelCount = 0;
54 for (uint32_t
i = 0;
i < clusterInRow;
i++) {
55 auto& interim = clusterer.mPlabelsByRow[
row].data[
i];
56 labelCount += interim.labels.size();
59 clusterer.mPlabelsInRow[
row] = labelCount;
66#if !defined(GPUCA_GPUCODE)
69 uint32_t headerOffset = clusterer.mPlabelsHeaderGlobalOffset;
70 uint32_t dataOffset = clusterer.mPlabelsDataGlobalOffset;
71 for (uint32_t
r = 0;
r <
row;
r++) {
72 headerOffset += clusterer.mPclusterInRow[
r];
73 dataOffset += clusterer.mPlabelsInRow[
r];
76 auto* labels = clusterer.mPlabelsByRow[
row].data.data();
77 for (uint32_t
c = 0;
c < clusterer.mPclusterInRow[
row];
c++) {
79 assert(dataOffset + interim.
labels.size() <= out->data.size());
80 out->header[headerOffset] = dataOffset;
81 std::copy(interim.
labels.cbegin(), interim.
labels.cend(), out->data.begin() + dataOffset);
84 dataOffset += interim.
labels.size();