I am currently studying the deep learning model in the 24-3 cuMAC implementation, and I have two specific questions regarding tbErr in cuMAC/examples/drlMcsSelection:
What exactly is tbErr?
In other implementations like cuMAC/src/mcsSelectionLUT.cu, there is a variable named tbErrLast, but no tbErr. From my understanding, tbErrLast seems to act as an ACK/NACK indicator in the transmission. Could you clarify the exact role and relationship between tbErr and tbErrLast?
Range of tbErr values:
There are two ways to run drlMcsSelection: using a pre-generated H5 file for test stimulus or generating the stimulus dynamically.
In the H5 file, the tbErr field (entry #2 in “queue_events”) ranges from [-1:3].
In the self-generated stimulus, the tbErr range is limited to [-1,1].
While -1 is clearly used as an invalid flag, I am unsure about the meaning of values 2 and 3 in the H5 file. Could you provide more details about what these represent?
int8_t* tbErr = nullptr;
// array of the TB decoding error indicators of UEs in the coordinated cell group that have updated data in the current time slot
// format: one dimensional array. array size: maxNumUeMlData
// denote uIdx = 0, 1, …, maxNumUeMlData-1 as the UE index
// tbErr[uIdx] is the TB decoding error indicator of the UE with global ID setUeMlData[uIdx]
// -1 indicates an invalid/unused element
It has the same meaning as tbErrLast, i.e., CRC results for transmitted TBs. However, it may not be only indicating the last TB since the ML data update may span multiple past transmissions.
In the H5 file, the tbErr data are on the 4th column in DATASET “queue_events” and can only be -1, 0 or 1.
The second column (entry #2 in queue events) is for MCS levels.
I realized I was confused by the H5 file data read sequence in h5TvLoad.cpp (lines #905–909) and how the data is fed into trtInputBufferHost in mcsSelectionDRL.cpp (lines #184–197).