DPDK  24.03.0
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
142 extern "C" {
143 #endif
144 
145 /* Logging Macro */
146 extern int rte_ml_dev_logtype;
147 #define RTE_LOGTYPE_MLDEV rte_ml_dev_logtype
148 
149 #define RTE_MLDEV_LOG(level, ...) \
150  RTE_LOG_LINE_PREFIX(level, MLDEV, "%s(): ", __func__, __VA_ARGS__)
151 
152 #define RTE_ML_STR_MAX 128
153 
155 #define RTE_MLDEV_DEFAULT_MAX 32
156 
158 /* Device operations */
159 
173 __rte_experimental
174 int
175 rte_ml_dev_init(size_t dev_max);
176 
183 __rte_experimental
184 uint16_t
185 rte_ml_dev_count(void);
186 
197 __rte_experimental
198 int
199 rte_ml_dev_is_valid_dev(int16_t dev_id);
200 
212 __rte_experimental
213 int
214 rte_ml_dev_socket_id(int16_t dev_id);
215 
218  const char *driver_name;
220  uint16_t max_models;
224  uint16_t max_queue_pairs;
228  uint16_t max_desc;
232  uint16_t max_io;
234  uint16_t max_segments;
238  uint16_t align_size;
240 };
241 
254 __rte_experimental
255 int
256 rte_ml_dev_info_get(int16_t dev_id, struct rte_ml_dev_info *dev_info);
257 
262  uint16_t nb_models;
267  uint16_t nb_queue_pairs;
272 };
273 
294 __rte_experimental
295 int
296 rte_ml_dev_configure(int16_t dev_id, const struct rte_ml_dev_config *config);
297 
298 /* Forward declaration */
299 struct rte_ml_op;
300 
302 typedef void (*rte_ml_dev_stop_flush_t)(int16_t dev_id, uint16_t qp_id, struct rte_ml_op *op);
303 
306  uint32_t nb_desc;
318 };
319 
339 __rte_experimental
340 int
341 rte_ml_dev_queue_pair_setup(int16_t dev_id, uint16_t queue_pair_id,
342  const struct rte_ml_dev_qp_conf *qp_conf, int socket_id);
343 
357 __rte_experimental
358 int
359 rte_ml_dev_start(int16_t dev_id);
360 
372 __rte_experimental
373 int
374 rte_ml_dev_stop(int16_t dev_id);
375 
386 __rte_experimental
387 int
388 rte_ml_dev_close(int16_t dev_id);
389 
401 };
402 
408  void *addr;
410  uint32_t length;
412  uint32_t reserved;
416 };
417 
425  uint16_t model_id;
427  uint16_t nb_batches;
431  uint32_t reserved;
457  union {
458  uint64_t user_u64;
460  void *user_ptr;
462  };
463  enum rte_ml_op_status status;
465  uint64_t impl_opaque;
472 };
473 
474 /* Enqueue/Dequeue operations */
475 
506 __rte_experimental
507 uint16_t
508 rte_ml_enqueue_burst(int16_t dev_id, uint16_t qp_id, struct rte_ml_op **ops, uint16_t nb_ops);
509 
543 __rte_experimental
544 uint16_t
545 rte_ml_dequeue_burst(int16_t dev_id, uint16_t qp_id, struct rte_ml_op **ops, uint16_t nb_ops);
546 
551  char message[RTE_ML_STR_MAX];
552  uint64_t errcode;
553 };
554 
572 __rte_experimental
573 int
574 rte_ml_op_error_get(int16_t dev_id, struct rte_ml_op *op, struct rte_ml_op_error *error);
575 
576 /* Statistics operations */
577 
580  uint64_t enqueued_count;
582  uint64_t dequeued_count;
588 };
589 
602 __rte_experimental
603 int
604 rte_ml_dev_stats_get(int16_t dev_id, struct rte_ml_dev_stats *stats);
605 
612 __rte_experimental
613 void
614 rte_ml_dev_stats_reset(int16_t dev_id);
615 
624 };
625 
632  uint16_t id;
634  char name[RTE_ML_STR_MAX];
636 };
637 
664 __rte_experimental
665 int
666 rte_ml_dev_xstats_names_get(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id,
667  struct rte_ml_dev_xstats_map *xstats_map, uint32_t size);
668 
686 __rte_experimental
687 int
688 rte_ml_dev_xstats_by_name_get(int16_t dev_id, const char *name, uint16_t *stat_id, uint64_t *value);
689 
713 __rte_experimental
714 int
715 rte_ml_dev_xstats_get(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id,
716  const uint16_t stat_ids[], uint64_t values[], uint16_t nb_ids);
717 
736 __rte_experimental
737 int
738 rte_ml_dev_xstats_reset(int16_t dev_id, enum rte_ml_dev_xstats_mode mode, int32_t model_id,
739  const uint16_t stat_ids[], uint16_t nb_ids);
740 
752 __rte_experimental
753 int
754 rte_ml_dev_dump(int16_t dev_id, FILE *fd);
755 
766 __rte_experimental
767 int
768 rte_ml_dev_selftest(int16_t dev_id);
769 
770 /* Model operations */
771 
777  void *addr;
779  size_t size;
781 };
782 
799 __rte_experimental
800 int
801 rte_ml_model_load(int16_t dev_id, struct rte_ml_model_params *params, uint16_t *model_id);
802 
815 __rte_experimental
816 int
817 rte_ml_model_unload(int16_t dev_id, uint16_t model_id);
818 
833 __rte_experimental
834 int
835 rte_ml_model_start(int16_t dev_id, uint16_t model_id);
836 
852 __rte_experimental
853 int
854 rte_ml_model_stop(int16_t dev_id, uint16_t model_id);
855 
889 };
890 
918 };
919 
926  char name[RTE_ML_STR_MAX];
928  uint32_t nb_dims;
930  uint32_t *shape;
932  enum rte_ml_io_type type;
936  uint64_t nb_elements;
938  uint64_t size;
940 };
941 
944  char name[RTE_ML_STR_MAX];
946  char version[RTE_ML_STR_MAX];
948  uint16_t model_id;
950  uint16_t device_id;
952  enum rte_ml_io_layout io_layout;
954  uint16_t min_batches;
958  uint16_t max_batches;
962  uint32_t nb_inputs;
964  const struct rte_ml_io_info *input_info;
966  uint32_t nb_outputs;
970  uint64_t wb_size;
972 };
973 
988 __rte_experimental
989 int
990 rte_ml_model_info_get(int16_t dev_id, uint16_t model_id, struct rte_ml_model_info *model_info);
991 
1010 __rte_experimental
1011 int
1012 rte_ml_model_params_update(int16_t dev_id, uint16_t model_id, void *buffer);
1013 
1014 /* IO operations */
1015 
1036 __rte_experimental
1037 int
1038 rte_ml_io_quantize(int16_t dev_id, uint16_t model_id, struct rte_ml_buff_seg **dbuffer,
1039  struct rte_ml_buff_seg **qbuffer);
1040 
1060 __rte_experimental
1061 int
1062 rte_ml_io_dequantize(int16_t dev_id, uint16_t model_id, struct rte_ml_buff_seg **qbuffer,
1063  struct rte_ml_buff_seg **dbuffer);
1064 
1065 /* ML op pool operations */
1066 
1085 __rte_experimental
1086 struct rte_mempool *
1087 rte_ml_op_pool_create(const char *name, unsigned int nb_elts, unsigned int cache_size,
1088  uint16_t user_size, int socket_id);
1089 
1097 __rte_experimental
1098 void
1099 rte_ml_op_pool_free(struct rte_mempool *mempool);
1100 
1101 #ifdef __cplusplus
1102 }
1103 #endif
1104 
1105 #endif /* RTE_MLDEV_H */
__rte_experimental int rte_ml_dev_selftest(int16_t dev_id)
uint32_t length
Definition: rte_mldev.h:410
__rte_experimental int rte_ml_dev_is_valid_dev(int16_t dev_id)
__rte_experimental void rte_ml_dev_stats_reset(int16_t dev_id)
uint32_t nb_inputs
Definition: rte_mldev.h:962
__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)
uint32_t nb_desc
Definition: rte_mldev.h:306
uint32_t reserved
Definition: rte_mldev.h:412
#define RTE_ML_STR_MAX
Definition: rte_mldev.h:152
struct rte_ml_buff_seg * next
Definition: rte_mldev.h:414
__rte_experimental int rte_ml_model_load(int16_t dev_id, struct rte_ml_model_params *params, uint16_t *model_id)
uint16_t align_size
Definition: rte_mldev.h:238
const char * driver_name
Definition: rte_mldev.h:218
uint16_t device_id
Definition: rte_mldev.h:950
uint64_t rte_iova_t
Definition: rte_common.h:584
struct rte_mempool * mempool
Definition: rte_mldev.h:433
__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_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)
uint16_t max_models
Definition: rte_mldev.h:220
uint16_t nb_queue_pairs
Definition: rte_mldev.h:267
struct rte_ml_buff_seg ** input
Definition: rte_mldev.h:435
uint64_t impl_opaque
Definition: rte_mldev.h:465
#define __rte_cache_aligned
Definition: rte_common.h:553
uint32_t cache_size
Definition: rte_mempool.h:241
char name[RTE_MEMPOOL_NAMESIZE]
Definition: rte_mempool.h:231
__rte_experimental int rte_ml_dev_xstats_by_name_get(int16_t dev_id, const char *name, uint16_t *stat_id, uint64_t *value)
uint32_t reserved
Definition: rte_mldev.h:431
__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_dev_xstats_mode
Definition: rte_mldev.h:619
uint16_t nb_batches
Definition: rte_mldev.h:427
__rte_experimental int rte_ml_dev_init(size_t dev_max)
uint64_t wb_size
Definition: rte_mldev.h:970
__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)
uint64_t user_u64
Definition: rte_mldev.h:458
__rte_experimental void rte_ml_op_pool_free(struct rte_mempool *mempool)
__rte_experimental int rte_ml_model_start(int16_t dev_id, uint16_t model_id)
__rte_experimental int rte_ml_model_params_update(int16_t dev_id, uint16_t model_id, void *buffer)
__rte_experimental int rte_ml_dev_stats_get(int16_t dev_id, struct rte_ml_dev_stats *stats)
rte_ml_dev_stop_flush_t cb
Definition: rte_mldev.h:311
rte_ml_io_type
Definition: rte_mldev.h:862
__rte_experimental uint16_t rte_ml_dev_count(void)
uint32_t nb_dims
Definition: rte_mldev.h:928
__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_model_unload(int16_t dev_id, uint16_t model_id)
uint64_t enqueued_count
Definition: rte_mldev.h:580
rte_ml_io_layout
Definition: rte_mldev.h:892
uint16_t model_id
Definition: rte_mldev.h:425
rte_ml_op_status
Definition: rte_mldev.h:391
uint64_t errcode
Definition: rte_mldev.h:552
uint32_t nb_outputs
Definition: rte_mldev.h:966
uint16_t max_desc
Definition: rte_mldev.h:228
uint32_t * shape
Definition: rte_mldev.h:930
__rte_experimental int rte_ml_dev_start(int16_t dev_id)
void(* rte_ml_dev_stop_flush_t)(int16_t dev_id, uint16_t qp_id, struct rte_ml_op *op)
Definition: rte_mldev.h:302
__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_info_get(int16_t dev_id, struct rte_ml_dev_info *dev_info)
uint16_t model_id
Definition: rte_mldev.h:948
struct rte_ml_buff_seg ** output
Definition: rte_mldev.h:446
__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_dev_socket_id(int16_t dev_id)
uint16_t max_segments
Definition: rte_mldev.h:234
uint16_t max_io
Definition: rte_mldev.h:232
uint16_t min_batches
Definition: rte_mldev.h:954
uint64_t dequeued_count
Definition: rte_mldev.h:582
void * user_ptr
Definition: rte_mldev.h:460
uint16_t nb_models
Definition: rte_mldev.h:262
uint64_t dequeue_err_count
Definition: rte_mldev.h:586
__rte_experimental int rte_ml_dev_configure(int16_t dev_id, const struct rte_ml_dev_config *config)
__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 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)
uint64_t enqueue_err_count
Definition: rte_mldev.h:584
__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 int rte_ml_dev_close(int16_t dev_id)
__rte_experimental int rte_ml_dev_stop(int16_t dev_id)
uint16_t max_batches
Definition: rte_mldev.h:958
uint16_t max_queue_pairs
Definition: rte_mldev.h:224
__rte_experimental int rte_ml_model_stop(int16_t dev_id, uint16_t model_id)
__rte_experimental int rte_ml_dev_dump(int16_t dev_id, FILE *fd)
const struct rte_ml_io_info * input_info
Definition: rte_mldev.h:964
const struct rte_ml_io_info * output_info
Definition: rte_mldev.h:968
uint64_t size
Definition: rte_mldev.h:938
rte_iova_t iova_addr
Definition: rte_mldev.h:406