MCPcopy Create free account
hub / github.com/Tiiny-AI/PowerInfer / test_dataset

Function test_dataset

smallthinker/tests/test-opt.cpp:175–256  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

173}
174
175static std::pair<int, int> test_dataset(ggml_backend_sched_t backend_sched, ggml_backend_t backend, const bool shuffle) {
176 int ntest = 0;
177 int npass = 0;
178
179 struct helper_ctx_data cd = helper_get_ctx_data(backend_sched, backend);
180
181 for (int64_t ndata_shard = 1; ndata_shard <= ndata; ++ndata_shard) {
182 ggml_opt_dataset_t dataset = cd.datasets_supervised[ndata_shard-1];
183
184 if (shuffle) {
185 ggml_opt_dataset_shuffle(cd.opt_ctx, dataset, -1);
186 }
187
188 for (int64_t ndata_batch = 1; ndata_batch <= ndata; ++ndata_batch) {
189 if (ndata_batch % ndata_shard != 0) {
190 continue;
191 }
192 bool subtest_ok = true;
193
194 struct ggml_tensor * data_batch = cd.data_batch[ndata_batch-1];
195 struct ggml_tensor * labels_batch = cd.labels_batch[ndata_batch-1];
196
197 std::vector<float> data(ggml_nelements( data_batch));
198 std::vector<float> labels(ggml_nelements(labels_batch));
199
200 std::vector<int64_t> idata_shuffled;
201 const int64_t nbatches = ndata / ndata_batch;
202 for (int64_t ibatch = 0; ibatch < nbatches; ++ibatch) {
203 ggml_opt_dataset_get_batch(dataset, data_batch, labels_batch, ibatch);
204
205 ggml_backend_tensor_get( data_batch, data.data(), 0, ggml_nbytes( data_batch));
206 ggml_backend_tensor_get(labels_batch, labels.data(), 0, ggml_nbytes(labels_batch));
207
208 for (int64_t idata_batch = 0; idata_batch < ndata_batch; ++idata_batch) {
209 const int64_t idata = ibatch*ndata_batch + idata_batch;
210 const int64_t idata_found = data[idata_batch*ne_datapoint] / 16;
211 subtest_ok = subtest_ok && (shuffle || idata_found == idata);
212 idata_shuffled.push_back(idata_found);
213
214 for (int64_t id = 0; id < ne_datapoint; ++id) {
215 if (data[ idata_batch*ne_datapoint + id] != 16*idata_found + id) {
216 subtest_ok = false;
217 }
218 }
219 for (int64_t il = 0; il < ne_label; ++il) {
220 if (labels[idata_batch*ne_label + il] != 16*(16*idata_found + il)) {
221 subtest_ok = false;
222 }
223 }
224 }
225 }
226
227 if (!shuffle || ndata % ndata_batch == 0) {
228 const int ndata_max = (ndata / ndata_batch) * ndata_batch;
229
230 for (int64_t idata = 0; subtest_ok && idata < ndata_max; ++idata) {
231 int ninstances = 0;
232 for (int64_t id : idata_shuffled) {

Callers 1

test_backendFunction · 0.85

Calls 10

helper_get_ctx_dataFunction · 0.85
ggml_opt_dataset_shuffleFunction · 0.85
printfFunction · 0.85
helper_free_ctx_dataFunction · 0.85
ggml_nelementsFunction · 0.50
ggml_backend_tensor_getFunction · 0.50
ggml_nbytesFunction · 0.50
dataMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected