DPDK 23.11.2
Loading...
Searching...
No Matches
rte_mldev.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright (c) 2022 Marvell.
3 */
4
5#ifndef RTE_MLDEV_H
6#define RTE_MLDEV_H
7
137#include <rte_common.h>
138#include <rte_log.h>
139#include <rte_mempool.h>
140
141#ifdef __cplusplus
142extern "C" {
143#endif
144
145/* Logging Macro */
146extern int rte_ml_dev_logtype;
147
148#define RTE_MLDEV_LOG(level, fmt, args...) \
149 rte_log(RTE_LOG_##level, rte_ml_dev_logtype, "%s(): " fmt "\n", __func__, ##args)
150
151#define RTE_ML_STR_MAX 128
154#define RTE_MLDEV_DEFAULT_MAX 32
157/* Device operations */
158
172__rte_experimental
173int
174rte_ml_dev_init(size_t dev_max);
175
182__rte_experimental
183uint16_t
185
196__rte_experimental
197int
199
211__rte_experimental
212int
213rte_ml_dev_socket_id(int16_t dev_id);
214
217 const char *driver_name;
219 uint16_t max_models;
227 uint16_t max_desc;
231 uint16_t max_io;
233 uint16_t max_segments;
237 uint16_t align_size;
239};
240
253__rte_experimental
254int
255rte_ml_dev_info_get(int16_t dev_id, struct rte_ml_dev_info *dev_info);
256
261 uint16_t nb_models;
271};
272
293__rte_experimental
294int
295rte_ml_dev_configure(int16_t dev_id, const struct rte_ml_dev_config *config);
296
297/* Forward declaration */
298struct rte_ml_op;
299
301typedef void (*rte_ml_dev_stop_flush_t)(int16_t dev_id, uint16_t qp_id, struct rte_ml_op *op);
302
318
338__rte_experimental
339int
340rte_ml_dev_queue_pair_setup(int16_t dev_id, uint16_t queue_pair_id,
341 const struct rte_ml_dev_qp_conf *qp_conf, int socket_id);
342
356__rte_experimental
357int
358rte_ml_dev_start(int16_t dev_id);
359
371__rte_experimental
372int
373rte_ml_dev_stop(int16_t dev_id);
374
385__rte_experimental
386int
387rte_ml_dev_close(int16_t dev_id);
388
401
416
423struct rte_ml_op {
424 uint16_t model_id;
426 uint16_t nb_batches;
430 uint32_t reserved;
456 union {
457 uint64_t user_u64;
459 void *user_ptr;
461 };
464 uint64_t impl_opaque;
472
473/* Enqueue/Dequeue operations */
474
505__rte_experimental
506uint16_t
507rte_ml_enqueue_burst(int16_t dev_id, uint16_t qp_id, struct rte_ml_op **ops, uint16_t nb_ops);
508
542__rte_experimental
543uint16_t
544rte_ml_dequeue_burst(int16_t dev_id, uint16_t qp_id, struct rte_ml_op **ops, uint16_t nb_ops);
545
553
571__rte_experimental
572int
573rte_ml_op_error_get(int16_t dev_id, struct rte_ml_op *op, struct rte_ml_op_error *error);
574
575/* Statistics operations */
576
588
601__rte_experimental
602int
603rte_ml_dev_stats_get(int16_t dev_id, struct rte_ml_dev_stats *stats);
604
611__rte_experimental
612void
614
624
631 uint16_t id;
635};
636
663__rte_experimental
664int
665rte_ml_dev_xstats_names_get(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id,
666 struct rte_ml_dev_xstats_map *xstats_map, uint32_t size);
667
685__rte_experimental
686int
687rte_ml_dev_xstats_by_name_get(int16_t dev_id, const char *name, uint16_t *stat_id, uint64_t *value);
688
712__rte_experimental
713int
714rte_ml_dev_xstats_get(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id,
715 const uint16_t stat_ids[], uint64_t values[], uint16_t nb_ids);
716
735__rte_experimental
736int
737rte_ml_dev_xstats_reset(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id,
738 const uint16_t stat_ids[], uint16_t nb_ids);
739
751__rte_experimental
752int
753rte_ml_dev_dump(int16_t dev_id, FILE *fd);
754
765__rte_experimental
766int
767rte_ml_dev_selftest(int16_t dev_id);
768
769/* Model operations */
770
776 void *addr;
778 size_t size;
780};
781
798__rte_experimental
799int
800rte_ml_model_load(int16_t dev_id, struct rte_ml_model_params *params, uint16_t *model_id);
801
814__rte_experimental
815int
816rte_ml_model_unload(int16_t dev_id, uint16_t model_id);
817
832__rte_experimental
833int
834rte_ml_model_start(int16_t dev_id, uint16_t model_id);
835
851__rte_experimental
852int
853rte_ml_model_stop(int16_t dev_id, uint16_t model_id);
854
885
914
923 uint32_t nb_dims;
925 uint32_t *shape;
931 uint64_t nb_elements;
933 uint64_t size;
935};
936
968
983__rte_experimental
984int
985rte_ml_model_info_get(int16_t dev_id, uint16_t model_id, struct rte_ml_model_info *model_info);
986
1005__rte_experimental
1006int
1007rte_ml_model_params_update(int16_t dev_id, uint16_t model_id, void *buffer);
1008
1009/* IO operations */
1010
1031__rte_experimental
1032int
1033rte_ml_io_quantize(int16_t dev_id, uint16_t model_id, struct rte_ml_buff_seg **dbuffer,
1034 struct rte_ml_buff_seg **qbuffer);
1035
1055__rte_experimental
1056int
1057rte_ml_io_dequantize(int16_t dev_id, uint16_t model_id, struct rte_ml_buff_seg **qbuffer,
1058 struct rte_ml_buff_seg **dbuffer);
1059
1060/* ML op pool operations */
1061
1080__rte_experimental
1081struct rte_mempool *
1082rte_ml_op_pool_create(const char *name, unsigned int nb_elts, unsigned int cache_size,
1083 uint16_t user_size, int socket_id);
1084
1092__rte_experimental
1093void
1095
1096#ifdef __cplusplus
1097}
1098#endif
1099
1100#endif /* RTE_MLDEV_H */
#define __rte_cache_aligned
Definition rte_common.h:524
uint64_t rte_iova_t
Definition rte_common.h:556
__rte_experimental int rte_ml_io_quantize(int16_t dev_id, uint16_t model_id, struct rte_ml_buff_seg **dbuffer, struct rte_ml_buff_seg **qbuffer)
__rte_experimental int rte_ml_dev_init(size_t dev_max)
__rte_experimental int rte_ml_model_start(int16_t dev_id, uint16_t model_id)
__rte_experimental struct rte_mempool * rte_ml_op_pool_create(const char *name, unsigned int nb_elts, unsigned int cache_size, uint16_t user_size, int socket_id)
__rte_experimental int rte_ml_model_info_get(int16_t dev_id, uint16_t model_id, struct rte_ml_model_info *model_info)
rte_ml_io_layout
Definition rte_mldev.h:887
@ RTE_ML_IO_LAYOUT_SPLIT
Definition rte_mldev.h:901
@ RTE_ML_IO_LAYOUT_PACKED
Definition rte_mldev.h:888
__rte_experimental int rte_ml_dev_close(int16_t dev_id)
__rte_experimental int rte_ml_dev_start(int16_t dev_id)
__rte_experimental void rte_ml_op_pool_free(struct rte_mempool *mempool)
#define RTE_ML_STR_MAX
Definition rte_mldev.h:151
__rte_experimental int rte_ml_dev_socket_id(int16_t dev_id)
__rte_experimental int rte_ml_dev_stats_get(int16_t dev_id, struct rte_ml_dev_stats *stats)
__rte_experimental int rte_ml_dev_dump(int16_t dev_id, FILE *fd)
__rte_experimental void rte_ml_dev_stats_reset(int16_t dev_id)
__rte_experimental int rte_ml_io_dequantize(int16_t dev_id, uint16_t model_id, struct rte_ml_buff_seg **qbuffer, struct rte_ml_buff_seg **dbuffer)
__rte_experimental int rte_ml_dev_is_valid_dev(int16_t dev_id)
__rte_experimental int rte_ml_dev_stop(int16_t dev_id)
__rte_experimental uint16_t rte_ml_enqueue_burst(int16_t dev_id, uint16_t qp_id, struct rte_ml_op **ops, uint16_t nb_ops)
__rte_experimental int rte_ml_dev_xstats_reset(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id, const uint16_t stat_ids[], uint16_t nb_ids)
__rte_experimental int rte_ml_dev_xstats_get(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id, const uint16_t stat_ids[], uint64_t values[], uint16_t nb_ids)
__rte_experimental uint16_t rte_ml_dev_count(void)
__rte_experimental int rte_ml_dev_queue_pair_setup(int16_t dev_id, uint16_t queue_pair_id, const struct rte_ml_dev_qp_conf *qp_conf, int socket_id)
__rte_experimental int rte_ml_model_unload(int16_t dev_id, uint16_t model_id)
__rte_experimental uint16_t rte_ml_dequeue_burst(int16_t dev_id, uint16_t qp_id, struct rte_ml_op **ops, uint16_t nb_ops)
__rte_experimental int rte_ml_dev_selftest(int16_t dev_id)
__rte_experimental int rte_ml_dev_xstats_by_name_get(int16_t dev_id, const char *name, uint16_t *stat_id, uint64_t *value)
__rte_experimental int rte_ml_model_stop(int16_t dev_id, uint16_t model_id)
rte_ml_dev_xstats_mode
Definition rte_mldev.h:618
@ RTE_ML_DEV_XSTATS_MODEL
Definition rte_mldev.h:621
@ RTE_ML_DEV_XSTATS_DEVICE
Definition rte_mldev.h:619
__rte_experimental int rte_ml_op_error_get(int16_t dev_id, struct rte_ml_op *op, struct rte_ml_op_error *error)
__rte_experimental int rte_ml_dev_info_get(int16_t dev_id, struct rte_ml_dev_info *dev_info)
rte_ml_op_status
Definition rte_mldev.h:390
@ RTE_ML_OP_STATUS_ERROR
Definition rte_mldev.h:395
@ RTE_ML_OP_STATUS_SUCCESS
Definition rte_mldev.h:391
@ RTE_ML_OP_STATUS_NOT_PROCESSED
Definition rte_mldev.h:393
rte_ml_io_type
Definition rte_mldev.h:861
@ RTE_ML_IO_TYPE_FP8
Definition rte_mldev.h:876
@ RTE_ML_IO_TYPE_BFLOAT16
Definition rte_mldev.h:882
@ RTE_ML_IO_TYPE_UINT8
Definition rte_mldev.h:866
@ RTE_ML_IO_TYPE_UINT16
Definition rte_mldev.h:870
@ RTE_ML_IO_TYPE_INT16
Definition rte_mldev.h:868
@ RTE_ML_IO_TYPE_FP32
Definition rte_mldev.h:880
@ RTE_ML_IO_TYPE_UINT32
Definition rte_mldev.h:874
@ RTE_ML_IO_TYPE_INT8
Definition rte_mldev.h:864
@ RTE_ML_IO_TYPE_INT32
Definition rte_mldev.h:872
@ RTE_ML_IO_TYPE_UNKNOWN
Definition rte_mldev.h:862
@ RTE_ML_IO_TYPE_FP16
Definition rte_mldev.h:878
void(* rte_ml_dev_stop_flush_t)(int16_t dev_id, uint16_t qp_id, struct rte_ml_op *op)
Definition rte_mldev.h:301
__rte_experimental int rte_ml_model_load(int16_t dev_id, struct rte_ml_model_params *params, uint16_t *model_id)
__rte_experimental int rte_ml_dev_xstats_names_get(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id, struct rte_ml_dev_xstats_map *xstats_map, uint32_t size)
__rte_experimental int rte_ml_model_params_update(int16_t dev_id, uint16_t model_id, void *buffer)
__rte_experimental int rte_ml_dev_configure(int16_t dev_id, const struct rte_ml_dev_config *config)
char name[RTE_MEMPOOL_NAMESIZE]
uint32_t cache_size
rte_iova_t iova_addr
Definition rte_mldev.h:405
uint32_t reserved
Definition rte_mldev.h:411
struct rte_ml_buff_seg * next
Definition rte_mldev.h:413
uint32_t length
Definition rte_mldev.h:409
uint16_t nb_queue_pairs
Definition rte_mldev.h:266
uint16_t nb_models
Definition rte_mldev.h:261
uint16_t max_segments
Definition rte_mldev.h:233
uint16_t max_io
Definition rte_mldev.h:231
uint16_t max_queue_pairs
Definition rte_mldev.h:223
uint16_t max_desc
Definition rte_mldev.h:227
uint16_t max_models
Definition rte_mldev.h:219
uint16_t align_size
Definition rte_mldev.h:237
const char * driver_name
Definition rte_mldev.h:217
rte_ml_dev_stop_flush_t cb
Definition rte_mldev.h:310
uint64_t enqueue_err_count
Definition rte_mldev.h:583
uint64_t enqueued_count
Definition rte_mldev.h:579
uint64_t dequeue_err_count
Definition rte_mldev.h:585
uint64_t dequeued_count
Definition rte_mldev.h:581
char name[RTE_ML_STR_MAX]
Definition rte_mldev.h:633
char name[RTE_ML_STR_MAX]
Definition rte_mldev.h:921
uint32_t nb_dims
Definition rte_mldev.h:923
enum rte_ml_io_type type
Definition rte_mldev.h:927
uint32_t * shape
Definition rte_mldev.h:925
uint64_t size
Definition rte_mldev.h:933
char name[RTE_ML_STR_MAX]
Definition rte_mldev.h:939
uint16_t min_batches
Definition rte_mldev.h:949
uint16_t model_id
Definition rte_mldev.h:943
uint32_t nb_inputs
Definition rte_mldev.h:957
char version[RTE_ML_STR_MAX]
Definition rte_mldev.h:941
uint16_t max_batches
Definition rte_mldev.h:953
enum rte_ml_io_layout io_layout
Definition rte_mldev.h:947
const struct rte_ml_io_info * output_info
Definition rte_mldev.h:963
uint16_t device_id
Definition rte_mldev.h:945
uint32_t nb_outputs
Definition rte_mldev.h:961
const struct rte_ml_io_info * input_info
Definition rte_mldev.h:959
uint64_t errcode
Definition rte_mldev.h:551
char message[RTE_ML_STR_MAX]
Definition rte_mldev.h:550
uint16_t nb_batches
Definition rte_mldev.h:426
struct rte_mempool * mempool
Definition rte_mldev.h:432
uint64_t user_u64
Definition rte_mldev.h:457
struct rte_ml_buff_seg ** input
Definition rte_mldev.h:434
uint16_t model_id
Definition rte_mldev.h:424
void * user_ptr
Definition rte_mldev.h:459
uint64_t impl_opaque
Definition rte_mldev.h:464
uint32_t reserved
Definition rte_mldev.h:430
enum rte_ml_op_status status
Definition rte_mldev.h:462
struct rte_ml_buff_seg ** output
Definition rte_mldev.h:445