128 std::size_t chunkSize = chunkTensor.
GetRows();
129 std::size_t numCols = chunkTensor.
GetCols();
130 std::size_t numBatches = chunkSize /
fBatchSize;
131 std::size_t leftoverBatchSize = chunkSize %
fBatchSize;
134 std::vector<std::unique_ptr<RFlat2DMatrix>> batches;
137 for (std::size_t i = 0; i < numBatches; i++) {
144 chunkTensor.
GetData() + (numBatches *
fBatchSize * numCols + leftoverBatchSize * numCols),
149 std::size_t emptySlots =
fBatchSize - PrimaryLeftoverSize;
152 if (emptySlots >= leftoverBatchSize) {
158 if (emptySlots == leftoverBatchSize) {
162 batches.emplace_back(std::move(copy));
171 else if (emptySlots < leftoverBatchSize) {
174 std::copy(LeftoverBatch.
GetData(), LeftoverBatch.
GetData() + (emptySlots * numCols),
179 std::copy(LeftoverBatch.
GetData() + (emptySlots * numCols),
186 batches.emplace_back(std::move(copy));
200 batches.emplace_back(std::move(copy));
208 std::lock_guard<std::mutex> lock(
fLock);
209 for (
auto &batch : batches) {
RBatchLoader(std::size_t batchSize, const std::vector< std::string > &cols, std::mutex &sharedMutex, std::condition_variable &sharedCV, const std::vector< std::size_t > &vecSizes={}, std::size_t numEntries=0, bool dropRemainder=false)