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