xref: /dpdk/app/test-mldev/test_inference_ordered.c (revision 77fefa0a129e661caf0f3628f48204ed3886ab5f)
1bbd272edSSrikanth Yalavarthi /* SPDX-License-Identifier: BSD-3-Clause
2bbd272edSSrikanth Yalavarthi  * Copyright (c) 2022 Marvell.
3bbd272edSSrikanth Yalavarthi  */
4bbd272edSSrikanth Yalavarthi 
5bbd272edSSrikanth Yalavarthi #include <rte_common.h>
6bbd272edSSrikanth Yalavarthi #include <rte_launch.h>
7bbd272edSSrikanth Yalavarthi 
8bbd272edSSrikanth Yalavarthi #include "ml_common.h"
9bbd272edSSrikanth Yalavarthi #include "test_inference_common.h"
10*77fefa0aSSrikanth Yalavarthi #include "test_stats.h"
11bbd272edSSrikanth Yalavarthi 
12bbd272edSSrikanth Yalavarthi static int
test_inference_ordered_driver(struct ml_test * test,struct ml_options * opt)13bbd272edSSrikanth Yalavarthi test_inference_ordered_driver(struct ml_test *test, struct ml_options *opt)
14bbd272edSSrikanth Yalavarthi {
15bbd272edSSrikanth Yalavarthi 	struct test_inference *t;
16bbd272edSSrikanth Yalavarthi 	uint16_t fid = 0;
17bbd272edSSrikanth Yalavarthi 	int ret = 0;
18bbd272edSSrikanth Yalavarthi 
19bbd272edSSrikanth Yalavarthi 	t = ml_test_priv(test);
20bbd272edSSrikanth Yalavarthi 
21bbd272edSSrikanth Yalavarthi 	ret = ml_inference_mldev_setup(test, opt);
22bbd272edSSrikanth Yalavarthi 	if (ret != 0)
23bbd272edSSrikanth Yalavarthi 		return ret;
24bbd272edSSrikanth Yalavarthi 
25bbd272edSSrikanth Yalavarthi 	ret = ml_inference_mem_setup(test, opt);
26bbd272edSSrikanth Yalavarthi 	if (ret != 0)
27bbd272edSSrikanth Yalavarthi 		return ret;
28bbd272edSSrikanth Yalavarthi 
29bbd272edSSrikanth Yalavarthi next_model:
30bbd272edSSrikanth Yalavarthi 	/* load model */
31bbd272edSSrikanth Yalavarthi 	ret = ml_model_load(test, opt, &t->model[fid], fid);
32bbd272edSSrikanth Yalavarthi 	if (ret != 0)
33bbd272edSSrikanth Yalavarthi 		goto error;
34bbd272edSSrikanth Yalavarthi 
35bbd272edSSrikanth Yalavarthi 	/* start model */
36bbd272edSSrikanth Yalavarthi 	ret = ml_model_start(test, opt, &t->model[fid], fid);
37bbd272edSSrikanth Yalavarthi 	if (ret != 0)
38bbd272edSSrikanth Yalavarthi 		goto error;
39bbd272edSSrikanth Yalavarthi 
40bbd272edSSrikanth Yalavarthi 	ret = ml_inference_iomem_setup(test, opt, fid);
41bbd272edSSrikanth Yalavarthi 	if (ret != 0)
42bbd272edSSrikanth Yalavarthi 		goto error;
43bbd272edSSrikanth Yalavarthi 
44bbd272edSSrikanth Yalavarthi 	/* launch inferences for one model using available queue pairs */
45bbd272edSSrikanth Yalavarthi 	ret = ml_inference_launch_cores(test, opt, fid, fid);
46bbd272edSSrikanth Yalavarthi 	if (ret != 0) {
47bbd272edSSrikanth Yalavarthi 		ml_err("failed to launch cores");
48bbd272edSSrikanth Yalavarthi 		goto error;
49bbd272edSSrikanth Yalavarthi 	}
50bbd272edSSrikanth Yalavarthi 
51bbd272edSSrikanth Yalavarthi 	rte_eal_mp_wait_lcore();
52bbd272edSSrikanth Yalavarthi 
53bbd272edSSrikanth Yalavarthi 	ret = ml_inference_result(test, opt, fid);
54bbd272edSSrikanth Yalavarthi 	if (ret != ML_TEST_SUCCESS)
55bbd272edSSrikanth Yalavarthi 		goto error;
56bbd272edSSrikanth Yalavarthi 
57bbd272edSSrikanth Yalavarthi 	ml_inference_iomem_destroy(test, opt, fid);
58*77fefa0aSSrikanth Yalavarthi 	ml_stats_get(test, opt, RTE_ML_DEV_XSTATS_MODEL, fid);
59*77fefa0aSSrikanth Yalavarthi 	ml_throughput_get(test, opt);
60bbd272edSSrikanth Yalavarthi 
61bbd272edSSrikanth Yalavarthi 	/* stop model */
62bbd272edSSrikanth Yalavarthi 	ret = ml_model_stop(test, opt, &t->model[fid], fid);
63bbd272edSSrikanth Yalavarthi 	if (ret != 0)
64bbd272edSSrikanth Yalavarthi 		goto error;
65bbd272edSSrikanth Yalavarthi 
66bbd272edSSrikanth Yalavarthi 	/* unload model */
67bbd272edSSrikanth Yalavarthi 	ret = ml_model_unload(test, opt, &t->model[fid], fid);
68bbd272edSSrikanth Yalavarthi 	if (ret != 0)
69bbd272edSSrikanth Yalavarthi 		goto error;
70bbd272edSSrikanth Yalavarthi 
71bbd272edSSrikanth Yalavarthi 	fid++;
72bbd272edSSrikanth Yalavarthi 	if (fid < opt->nb_filelist)
73bbd272edSSrikanth Yalavarthi 		goto next_model;
74bbd272edSSrikanth Yalavarthi 
75*77fefa0aSSrikanth Yalavarthi 	ml_stats_get(test, opt, RTE_ML_DEV_XSTATS_DEVICE, -1);
76bbd272edSSrikanth Yalavarthi 	ml_inference_mem_destroy(test, opt);
77bbd272edSSrikanth Yalavarthi 
78bbd272edSSrikanth Yalavarthi 	ret = ml_inference_mldev_destroy(test, opt);
79bbd272edSSrikanth Yalavarthi 	if (ret != 0)
80bbd272edSSrikanth Yalavarthi 		return ret;
81bbd272edSSrikanth Yalavarthi 
82bbd272edSSrikanth Yalavarthi 	t->cmn.result = ML_TEST_SUCCESS;
83bbd272edSSrikanth Yalavarthi 
84bbd272edSSrikanth Yalavarthi 	return 0;
85bbd272edSSrikanth Yalavarthi 
86bbd272edSSrikanth Yalavarthi error:
87bbd272edSSrikanth Yalavarthi 	ml_inference_iomem_destroy(test, opt, fid);
88bbd272edSSrikanth Yalavarthi 	ml_inference_mem_destroy(test, opt);
89bbd272edSSrikanth Yalavarthi 	ml_model_stop(test, opt, &t->model[fid], fid);
90bbd272edSSrikanth Yalavarthi 	ml_model_unload(test, opt, &t->model[fid], fid);
91bbd272edSSrikanth Yalavarthi 
92bbd272edSSrikanth Yalavarthi 	t->cmn.result = ML_TEST_FAILED;
93bbd272edSSrikanth Yalavarthi 
94bbd272edSSrikanth Yalavarthi 	return ret;
95bbd272edSSrikanth Yalavarthi }
96bbd272edSSrikanth Yalavarthi 
97bbd272edSSrikanth Yalavarthi static int
test_inference_ordered_result(struct ml_test * test,struct ml_options * opt)98bbd272edSSrikanth Yalavarthi test_inference_ordered_result(struct ml_test *test, struct ml_options *opt)
99bbd272edSSrikanth Yalavarthi {
100bbd272edSSrikanth Yalavarthi 	struct test_inference *t;
101bbd272edSSrikanth Yalavarthi 
102bbd272edSSrikanth Yalavarthi 	RTE_SET_USED(opt);
103bbd272edSSrikanth Yalavarthi 
104bbd272edSSrikanth Yalavarthi 	t = ml_test_priv(test);
105bbd272edSSrikanth Yalavarthi 
106bbd272edSSrikanth Yalavarthi 	return t->cmn.result;
107bbd272edSSrikanth Yalavarthi }
108bbd272edSSrikanth Yalavarthi 
109bbd272edSSrikanth Yalavarthi static const struct ml_test_ops inference_ordered = {
110bbd272edSSrikanth Yalavarthi 	.cap_check = test_inference_cap_check,
111bbd272edSSrikanth Yalavarthi 	.opt_check = test_inference_opt_check,
112bbd272edSSrikanth Yalavarthi 	.opt_dump = test_inference_opt_dump,
113bbd272edSSrikanth Yalavarthi 	.test_setup = test_inference_setup,
114bbd272edSSrikanth Yalavarthi 	.test_destroy = test_inference_destroy,
115bbd272edSSrikanth Yalavarthi 	.test_driver = test_inference_ordered_driver,
116bbd272edSSrikanth Yalavarthi 	.test_result = test_inference_ordered_result,
117bbd272edSSrikanth Yalavarthi };
118bbd272edSSrikanth Yalavarthi 
119bbd272edSSrikanth Yalavarthi ML_TEST_REGISTER(inference_ordered);
120