[PATCH v4 2/4] mldev: implement ML IO type handling functions

Anup Prabhu aprabhu at marvell.com
Wed Feb 1 14:53:01 CET 2023



-----Original Message-----
From: Srikanth Yalavarthi <syalavarthi at marvell.com> 
Sent: Wednesday, February 1, 2023 2:35 PM
To: Srikanth Yalavarthi <syalavarthi at marvell.com>
Cc: dev at dpdk.org; Shivah Shankar Shankar Narayan Rao <sshankarnara at marvell.com>; Jerin Jacob Kollanukkaran <jerinj at marvell.com>; Anup Prabhu <aprabhu at marvell.com>
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 <syalavarthi at marvell.com>
---
 lib/mldev/mldev_utils.c | 113 ++++++++++++++++++++++++++++++++++++++++
 lib/mldev/version.map   |   4 ++
 2 files changed, 117 insertions(+)

Acked-by: Anup Prabhu <aprabhu at marvell.com>

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 <errno.h>
+#include <stdint.h>
+
+#include <rte_mldev.h>
+#include <rte_string_fns.h>
+
 #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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: winmail.dat
Type: application/ms-tnef
Size: 23526 bytes
Desc: not available
URL: <http://mails.dpdk.org/archives/dev/attachments/20230201/79a38423/attachment-0001.bin>


More information about the dev mailing list