xref: /dpdk/app/test-mldev/test_inference_common.h (revision 0efea35a2bb0ae9df6e204151c7f96b5eb93e130)
1bbd272edSSrikanth Yalavarthi /* SPDX-License-Identifier: BSD-3-Clause
2bbd272edSSrikanth Yalavarthi  * Copyright (c) 2022 Marvell.
3bbd272edSSrikanth Yalavarthi  */
4bbd272edSSrikanth Yalavarthi 
5bbd272edSSrikanth Yalavarthi #ifndef TEST_INFERENCE_COMMON_H
6bbd272edSSrikanth Yalavarthi #define TEST_INFERENCE_COMMON_H
7bbd272edSSrikanth Yalavarthi 
8bbd272edSSrikanth Yalavarthi #include <rte_common.h>
9bbd272edSSrikanth Yalavarthi #include <rte_mempool.h>
10bbd272edSSrikanth Yalavarthi #include <rte_mldev.h>
11bbd272edSSrikanth Yalavarthi 
12bbd272edSSrikanth Yalavarthi #include "test_model_common.h"
13bbd272edSSrikanth Yalavarthi 
1424364292SSrikanth Yalavarthi #define ML_TEST_MAX_IO_SIZE 32
1524364292SSrikanth Yalavarthi 
16bbd272edSSrikanth Yalavarthi struct ml_request {
17bbd272edSSrikanth Yalavarthi 	uint8_t *input;
18bbd272edSSrikanth Yalavarthi 	uint8_t *output;
19bbd272edSSrikanth Yalavarthi 	uint16_t fid;
20bbd272edSSrikanth Yalavarthi 	uint64_t niters;
2124364292SSrikanth Yalavarthi 
2224364292SSrikanth Yalavarthi 	struct rte_ml_buff_seg *inp_buf_segs[ML_TEST_MAX_IO_SIZE];
2324364292SSrikanth Yalavarthi 	struct rte_ml_buff_seg *out_buf_segs[ML_TEST_MAX_IO_SIZE];
24bbd272edSSrikanth Yalavarthi };
25bbd272edSSrikanth Yalavarthi 
26bbd272edSSrikanth Yalavarthi struct ml_core_args {
27bbd272edSSrikanth Yalavarthi 	uint64_t nb_reqs;
28bbd272edSSrikanth Yalavarthi 	uint16_t start_fid;
29bbd272edSSrikanth Yalavarthi 	uint16_t end_fid;
30c0e87165SSrikanth Yalavarthi 	uint32_t qp_id;
3139890f07SSrikanth Yalavarthi 
3239890f07SSrikanth Yalavarthi 	struct rte_ml_op **enq_ops;
3339890f07SSrikanth Yalavarthi 	struct rte_ml_op **deq_ops;
3439890f07SSrikanth Yalavarthi 	struct ml_request **reqs;
355a82bc33SSrikanth Yalavarthi 
365a82bc33SSrikanth Yalavarthi 	uint64_t start_cycles;
375a82bc33SSrikanth Yalavarthi 	uint64_t end_cycles;
38bbd272edSSrikanth Yalavarthi };
39bbd272edSSrikanth Yalavarthi 
40*0efea35aSTyler Retzlaff struct __rte_cache_aligned test_inference {
41bbd272edSSrikanth Yalavarthi 	/* common data */
42bbd272edSSrikanth Yalavarthi 	struct test_common cmn;
43bbd272edSSrikanth Yalavarthi 
44bbd272edSSrikanth Yalavarthi 	/* test specific data */
45bbd272edSSrikanth Yalavarthi 	struct ml_model model[ML_TEST_MAX_MODELS];
4624364292SSrikanth Yalavarthi 	struct rte_mempool *buf_seg_pool;
47bbd272edSSrikanth Yalavarthi 	struct rte_mempool *op_pool;
48bbd272edSSrikanth Yalavarthi 
49bbd272edSSrikanth Yalavarthi 	uint64_t nb_used;
50da679339SSrikanth Yalavarthi 	uint64_t nb_valid;
51bbd272edSSrikanth Yalavarthi 	uint16_t fid;
52bbd272edSSrikanth Yalavarthi 
53bbd272edSSrikanth Yalavarthi 	int (*enqueue)(void *arg);
54bbd272edSSrikanth Yalavarthi 	int (*dequeue)(void *arg);
55bbd272edSSrikanth Yalavarthi 
56bbd272edSSrikanth Yalavarthi 	struct ml_core_args args[RTE_MAX_LCORE];
57bbd272edSSrikanth Yalavarthi 	uint64_t error_count[RTE_MAX_LCORE];
585a82bc33SSrikanth Yalavarthi 
595a82bc33SSrikanth Yalavarthi 	struct rte_ml_dev_xstats_map *xstats_map;
605a82bc33SSrikanth Yalavarthi 	uint64_t *xstats_values;
615a82bc33SSrikanth Yalavarthi 	int xstats_size;
62*0efea35aSTyler Retzlaff };
63bbd272edSSrikanth Yalavarthi 
64bbd272edSSrikanth Yalavarthi bool test_inference_cap_check(struct ml_options *opt);
65bbd272edSSrikanth Yalavarthi int test_inference_opt_check(struct ml_options *opt);
66bbd272edSSrikanth Yalavarthi void test_inference_opt_dump(struct ml_options *opt);
67bbd272edSSrikanth Yalavarthi int test_inference_setup(struct ml_test *test, struct ml_options *opt);
68bbd272edSSrikanth Yalavarthi void test_inference_destroy(struct ml_test *test, struct ml_options *opt);
69bbd272edSSrikanth Yalavarthi 
70bbd272edSSrikanth Yalavarthi int ml_inference_mldev_setup(struct ml_test *test, struct ml_options *opt);
71bbd272edSSrikanth Yalavarthi int ml_inference_mldev_destroy(struct ml_test *test, struct ml_options *opt);
72bbd272edSSrikanth Yalavarthi int ml_inference_iomem_setup(struct ml_test *test, struct ml_options *opt, uint16_t fid);
73bbd272edSSrikanth Yalavarthi void ml_inference_iomem_destroy(struct ml_test *test, struct ml_options *opt, uint16_t fid);
74bbd272edSSrikanth Yalavarthi int ml_inference_mem_setup(struct ml_test *test, struct ml_options *opt);
75bbd272edSSrikanth Yalavarthi void ml_inference_mem_destroy(struct ml_test *test, struct ml_options *opt);
76bbd272edSSrikanth Yalavarthi int ml_inference_result(struct ml_test *test, struct ml_options *opt, uint16_t fid);
77bbd272edSSrikanth Yalavarthi int ml_inference_launch_cores(struct ml_test *test, struct ml_options *opt, uint16_t start_fid,
78bbd272edSSrikanth Yalavarthi 			      uint16_t end_fid);
79bbd272edSSrikanth Yalavarthi 
80bbd272edSSrikanth Yalavarthi #endif /* TEST_INFERENCE_COMMON_H */
81