> -----Original Message----- > From: Srikanth Yalavarthi > Sent: Wednesday, February 1, 2023 2:35 PM > To: Srikanth Yalavarthi > Cc: dev@dpdk.org; Shivah Shankar Shankar Narayan Rao > ; Jerin Jacob Kollanukkaran > ; Anup Prabhu > Subject: [PATCH v4 2/4] mldev: implement ML IO type handling functions > > Implemented ML utility functions to convert IO data type to name, IO format > to name and routine to get the size of an IO data type in bytes. > > Signed-off-by: Srikanth Yalavarthi > --- > lib/mldev/mldev_utils.c | 113 > ++++++++++++++++++++++++++++++++++++++++ > lib/mldev/version.map | 4 ++ > 2 files changed, 117 insertions(+) > Acked-by: Anup Prabhu > diff --git a/lib/mldev/mldev_utils.c b/lib/mldev/mldev_utils.c index > 9dbbf013a0..d2442b123b 100644 > --- a/lib/mldev/mldev_utils.c > +++ b/lib/mldev/mldev_utils.c > @@ -2,4 +2,117 @@ > * Copyright (c) 2022 Marvell. > */ > > +#include > +#include > + > +#include > +#include > + > #include "mldev_utils.h" > + > +/* Description: > + * This file implements Machine Learning utility routines, except type > conversion routines. > + */ > + > +int > +rte_ml_io_type_size_get(enum rte_ml_io_type type) { > + switch (type) { > + case RTE_ML_IO_TYPE_UNKNOWN: > + return -EINVAL; > + case RTE_ML_IO_TYPE_INT8: > + return sizeof(int8_t); > + case RTE_ML_IO_TYPE_UINT8: > + return sizeof(uint8_t); > + case RTE_ML_IO_TYPE_INT16: > + return sizeof(int16_t); > + case RTE_ML_IO_TYPE_UINT16: > + return sizeof(uint16_t); > + case RTE_ML_IO_TYPE_INT32: > + return sizeof(int32_t); > + case RTE_ML_IO_TYPE_UINT32: > + return sizeof(uint32_t); > + case RTE_ML_IO_TYPE_FP8: > + return sizeof(uint8_t); > + case RTE_ML_IO_TYPE_FP16: > + return sizeof(uint8_t) * 2; > + case RTE_ML_IO_TYPE_FP32: > + return sizeof(uint8_t) * 4; > + case RTE_ML_IO_TYPE_BFLOAT16: > + return sizeof(uint8_t) * 2; > + default: > + return -EINVAL; > + } > +} > + > +void > +rte_ml_io_type_to_str(enum rte_ml_io_type type, char *str, int len) { > + switch (type) { > + case RTE_ML_IO_TYPE_UNKNOWN: > + rte_strlcpy(str, "unknown", len); > + break; > + case RTE_ML_IO_TYPE_INT8: > + rte_strlcpy(str, "int8", len); > + break; > + case RTE_ML_IO_TYPE_UINT8: > + rte_strlcpy(str, "uint8", len); > + break; > + case RTE_ML_IO_TYPE_INT16: > + rte_strlcpy(str, "int16", len); > + break; > + case RTE_ML_IO_TYPE_UINT16: > + rte_strlcpy(str, "uint16", len); > + break; > + case RTE_ML_IO_TYPE_INT32: > + rte_strlcpy(str, "int32", len); > + break; > + case RTE_ML_IO_TYPE_UINT32: > + rte_strlcpy(str, "uint32", len); > + break; > + case RTE_ML_IO_TYPE_FP8: > + rte_strlcpy(str, "float8", len); > + break; > + case RTE_ML_IO_TYPE_FP16: > + rte_strlcpy(str, "float16", len); > + break; > + case RTE_ML_IO_TYPE_FP32: > + rte_strlcpy(str, "float32", len); > + break; > + case RTE_ML_IO_TYPE_BFLOAT16: > + rte_strlcpy(str, "bfloat16", len); > + break; > + default: > + rte_strlcpy(str, "invalid", len); > + } > +} > + > +void > +rte_ml_io_format_to_str(enum rte_ml_io_format format, char *str, int > +len) { > + switch (format) { > + case RTE_ML_IO_FORMAT_NCHW: > + rte_strlcpy(str, "NCHW", len); > + break; > + case RTE_ML_IO_FORMAT_NHWC: > + rte_strlcpy(str, "NHWC", len); > + break; > + case RTE_ML_IO_FORMAT_CHWN: > + rte_strlcpy(str, "CHWN", len); > + break; > + case RTE_ML_IO_FORMAT_3D: > + rte_strlcpy(str, "3D", len); > + break; > + case RTE_ML_IO_FORMAT_2D: > + rte_strlcpy(str, "Matrix", len); > + break; > + case RTE_ML_IO_FORMAT_1D: > + rte_strlcpy(str, "Vector", len); > + break; > + case RTE_ML_IO_FORMAT_SCALAR: > + rte_strlcpy(str, "Scalar", len); > + break; > + default: > + rte_strlcpy(str, "invalid", len); > + } > +} > diff --git a/lib/mldev/version.map b/lib/mldev/version.map index > 61955ab701..c2ceedfbb4 100644 > --- a/lib/mldev/version.map > +++ b/lib/mldev/version.map > @@ -46,4 +46,8 @@ INTERNAL { > rte_ml_dev_pmd_get_dev; > rte_ml_dev_pmd_get_named_dev; > rte_ml_dev_pmd_release; > + > + rte_ml_io_type_size_get; > + rte_ml_io_type_to_str; > + rte_ml_io_format_to_str; > }; > -- > 2.17.1