16 uint64_t min_num_microslices = UINT64_MAX;
17 uint64_t max_num_microslices = 0;
18 uint64_t total_num_microslices = 0;
19 uint64_t min_microslice_size = UINT64_MAX;
20 uint64_t max_microslice_size = 0;
21 uint64_t total_microslice_size = 0;
23 size_t nbComps = ts.num_components();
24 size_t nbMicroslicesCore = ts.num_core_microslices();
25 for (uint64_t compIdx = 0; compIdx < nbComps; ++compIdx) {
26 uint64_t num_microslices = ts.num_microslices(compIdx);
27 min_num_microslices = std::min(min_num_microslices, num_microslices);
28 max_num_microslices = std::max(max_num_microslices, num_microslices);
29 total_num_microslices += num_microslices;
30 for (uint64_t msIdx = 0; msIdx < num_microslices; ++msIdx) {
31 uint64_t
size = ts.descriptor(compIdx, msIdx).size;
32 total_microslice_size +=
size;
33 min_microslice_size = std::min(min_microslice_size,
size);
34 max_microslice_size = std::max(max_microslice_size,
size);
38 uint64_t min_overlap = min_num_microslices - nbMicroslicesCore;
39 uint64_t max_overlap = max_num_microslices - nbMicroslicesCore;
41 ss <<
"Timeslice " << std::setw(6) << ts.index() <<
" with " << std::setw(3) << nbComps <<
" components "
42 <<
" x " << std::setw(6) << nbMicroslicesCore <<
" core microslices";
45 if (min_overlap != max_overlap) {
46 ss << std::setw(3) << min_overlap << std::setw(3) <<
".." << max_overlap;
49 ss << std::setw(3) << min_overlap;
51 ss <<
" overlap) = " << std::setw(9) << total_num_microslices <<
"\n";
53 <<
"\tmicroslice size min/avg/max: " << std::setw(6) << min_microslice_size <<
" / " << std::fixed
54 << std::setprecision(0) << std::setw(6)
55 << (
static_cast<double>(total_microslice_size) / total_num_microslices)
57 << std::setprecision(6)
58 <<
" / " << std::setw(6) << max_microslice_size <<
" bytes"
62 ss <<
" = " << std::setw(9) << total_num_microslices <<
"\n";
73 size_t nbComps = ts.num_components();
75 size_t nbMicroslicesCore = ts.num_core_microslices();
76 size_t nbMicroslicesOverlap = ts.num_microslices(0) - ts.num_core_microslices();
77 size_t nbCoreMsToLoop = nbMicroslicesCore;
78 size_t nbOverMsToLoop = nbMicroslicesOverlap;
79 if (nbMsPerComp < nbMicroslicesCore) {
80 nbCoreMsToLoop = nbMsPerComp;
83 else if (nbMsPerComp < nbMicroslicesCore + nbMicroslicesOverlap) {
84 nbOverMsToLoop = nbMicroslicesOverlap - (nbMsPerComp - nbMicroslicesCore);
87 if (0 < nbMicroslicesCore) {
88 for (
size_t compIdx = 0; compIdx < nbComps; ++compIdx) {
89 if (0 < nbMicroslicesCore && 0x00 != selSysId && ts.descriptor(compIdx, 0).sys_id != selSysId) {
94 ss <<
"Component " << std::setw(3) << compIdx <<
", Subsystem "
95 << fles::to_string(
static_cast<fles::Subsystem
>(ts.descriptor(compIdx, 0).sys_id)) <<
"\n";
96 if (0 < nbCoreMsToLoop) {
97 ss <<
"Core Microslices for component " << std::setw(3) << compIdx <<
" ("
98 << fles::to_string(
static_cast<fles::Subsystem
>(ts.descriptor(compIdx, 0).sys_id)) <<
")"
100 for (
size_t msIdx = 0; msIdx < nbCoreMsToLoop; ++msIdx) {
101 ss << ts.descriptor(compIdx, msIdx) <<
"\n";
103 ss <<
"----------------------------------------------"
107 if (0 < nbOverMsToLoop) {
108 ss <<
"Overlap Microslices for component " << std::setw(3) << compIdx <<
" ("
109 << fles::to_string(
static_cast<fles::Subsystem
>(ts.descriptor(compIdx, 0).sys_id)) <<
")"
111 for (
size_t msIdx = 0; msIdx < nbOverMsToLoop; ++msIdx) {
112 ss << ts.descriptor(compIdx, msIdx + nbMicroslicesCore) <<
"\n";
114 ss <<
"----------------------------------------------"
118 ss <<
"++++++++++++++++++++++++++++++++++++++++++++++"
123 ss <<
"**********************************************"