MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ml_request_finish

Function ml_request_finish

dpdk/app/test-mldev/test_inference_common.c:1005–1118  ·  view source on GitHub ↗

Callback for mempool object iteration. This call would dequantize output data. */

Source from the content-addressed store, hash-verified

1003
1004/* Callback for mempool object iteration. This call would dequantize output data. */
1005static void
1006ml_request_finish(struct rte_mempool *mp, void *opaque, void *obj, unsigned int obj_idx)
1007{
1008 struct test_inference *t = ml_test_priv((struct ml_test *)opaque);
1009 struct ml_request *req = (struct ml_request *)obj;
1010 struct ml_model *model = &t->model[req->fid];
1011 bool error = false;
1012 char *dump_path;
1013
1014 struct rte_ml_buff_seg qbuff_seg[ML_TEST_MAX_IO_SIZE];
1015 struct rte_ml_buff_seg dbuff_seg[ML_TEST_MAX_IO_SIZE];
1016 struct rte_ml_buff_seg *q_segs[ML_TEST_MAX_IO_SIZE];
1017 struct rte_ml_buff_seg *d_segs[ML_TEST_MAX_IO_SIZE];
1018 uint64_t offset;
1019 uint64_t bufsz;
1020 uint32_t i;
1021
1022 RTE_SET_USED(mp);
1023
1024 if (req->niters == 0)
1025 return;
1026
1027 t->nb_used++;
1028
1029 if (t->model[req->fid].info.io_layout == RTE_ML_IO_LAYOUT_PACKED) {
1030 qbuff_seg[0].addr = req->output;
1031 qbuff_seg[0].iova_addr = rte_mem_virt2iova(req->output);
1032 qbuff_seg[0].length = t->model[req->fid].out_qsize;
1033 qbuff_seg[0].next = NULL;
1034 q_segs[0] = &qbuff_seg[0];
1035
1036 dbuff_seg[0].addr = model->output;
1037 dbuff_seg[0].iova_addr = rte_mem_virt2iova(model->output);
1038 dbuff_seg[0].length = t->model[req->fid].out_dsize;
1039 dbuff_seg[0].next = NULL;
1040 d_segs[0] = &dbuff_seg[0];
1041 } else {
1042 offset = 0;
1043 for (i = 0; i < t->model[req->fid].info.nb_outputs; i++) {
1044 bufsz = RTE_ALIGN_CEIL(t->model[req->fid].info.output_info[i].size,
1045 t->cmn.dev_info.align_size);
1046 qbuff_seg[i].addr = req->output + offset;
1047 qbuff_seg[i].iova_addr = rte_mem_virt2iova(req->output + offset);
1048 qbuff_seg[i].length = bufsz;
1049 qbuff_seg[i].next = NULL;
1050 q_segs[i] = &qbuff_seg[i];
1051 offset += bufsz;
1052 }
1053
1054 offset = 0;
1055 for (i = 0; i < t->model[req->fid].info.nb_outputs; i++) {
1056 bufsz = t->model[req->fid].info.output_info[i].nb_elements * sizeof(float);
1057 dbuff_seg[i].addr = model->output + offset;
1058 dbuff_seg[i].iova_addr = rte_mem_virt2iova(model->output + offset);
1059 dbuff_seg[i].length = bufsz;
1060 dbuff_seg[i].next = NULL;
1061 d_segs[i] = &dbuff_seg[i];
1062 offset += bufsz;

Callers

nothing calls this directly

Calls 6

ml_test_privFunction · 0.85
rte_ml_io_dequantizeFunction · 0.85
ml_inference_validationFunction · 0.85
asprintfFunction · 0.85
rte_mem_virt2iovaFunction · 0.50
freeFunction · 0.50

Tested by

no test coverage detected