xref: /dpdk/lib/mldev/mldev_utils.c (revision 00e57b0e550b7df2047e6d0bde8965c7ae17d203)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright (c) 2022 Marvell.
3  */
4 
5 #include <errno.h>
6 #include <stdint.h>
7 
8 #include <rte_mldev.h>
9 #include <rte_string_fns.h>
10 
11 #include "mldev_utils.h"
12 
13 /* Description:
14  * This file implements Machine Learning utility routines, except type conversion routines.
15  */
16 
17 int
18 rte_ml_io_type_size_get(enum rte_ml_io_type type)
19 {
20 	switch (type) {
21 	case RTE_ML_IO_TYPE_UNKNOWN:
22 		return -EINVAL;
23 	case RTE_ML_IO_TYPE_INT8:
24 		return sizeof(int8_t);
25 	case RTE_ML_IO_TYPE_UINT8:
26 		return sizeof(uint8_t);
27 	case RTE_ML_IO_TYPE_INT16:
28 		return sizeof(int16_t);
29 	case RTE_ML_IO_TYPE_UINT16:
30 		return sizeof(uint16_t);
31 	case RTE_ML_IO_TYPE_INT32:
32 		return sizeof(int32_t);
33 	case RTE_ML_IO_TYPE_UINT32:
34 		return sizeof(uint32_t);
35 	case RTE_ML_IO_TYPE_FP8:
36 		return sizeof(uint8_t);
37 	case RTE_ML_IO_TYPE_FP16:
38 		return sizeof(uint8_t) * 2;
39 	case RTE_ML_IO_TYPE_FP32:
40 		return sizeof(uint8_t) * 4;
41 	case RTE_ML_IO_TYPE_BFLOAT16:
42 		return sizeof(uint8_t) * 2;
43 	default:
44 		return -EINVAL;
45 	}
46 }
47 
48 void
49 rte_ml_io_type_to_str(enum rte_ml_io_type type, char *str, int len)
50 {
51 	switch (type) {
52 	case RTE_ML_IO_TYPE_UNKNOWN:
53 		rte_strlcpy(str, "unknown", len);
54 		break;
55 	case RTE_ML_IO_TYPE_INT8:
56 		rte_strlcpy(str, "int8", len);
57 		break;
58 	case RTE_ML_IO_TYPE_UINT8:
59 		rte_strlcpy(str, "uint8", len);
60 		break;
61 	case RTE_ML_IO_TYPE_INT16:
62 		rte_strlcpy(str, "int16", len);
63 		break;
64 	case RTE_ML_IO_TYPE_UINT16:
65 		rte_strlcpy(str, "uint16", len);
66 		break;
67 	case RTE_ML_IO_TYPE_INT32:
68 		rte_strlcpy(str, "int32", len);
69 		break;
70 	case RTE_ML_IO_TYPE_UINT32:
71 		rte_strlcpy(str, "uint32", len);
72 		break;
73 	case RTE_ML_IO_TYPE_FP8:
74 		rte_strlcpy(str, "float8", len);
75 		break;
76 	case RTE_ML_IO_TYPE_FP16:
77 		rte_strlcpy(str, "float16", len);
78 		break;
79 	case RTE_ML_IO_TYPE_FP32:
80 		rte_strlcpy(str, "float32", len);
81 		break;
82 	case RTE_ML_IO_TYPE_BFLOAT16:
83 		rte_strlcpy(str, "bfloat16", len);
84 		break;
85 	default:
86 		rte_strlcpy(str, "invalid", len);
87 	}
88 }
89 
90 void
91 rte_ml_io_format_to_str(enum rte_ml_io_format format, char *str, int len)
92 {
93 	switch (format) {
94 	case RTE_ML_IO_FORMAT_NCHW:
95 		rte_strlcpy(str, "NCHW", len);
96 		break;
97 	case RTE_ML_IO_FORMAT_NHWC:
98 		rte_strlcpy(str, "NHWC", len);
99 		break;
100 	case RTE_ML_IO_FORMAT_CHWN:
101 		rte_strlcpy(str, "CHWN", len);
102 		break;
103 	case RTE_ML_IO_FORMAT_3D:
104 		rte_strlcpy(str, "3D", len);
105 		break;
106 	case RTE_ML_IO_FORMAT_2D:
107 		rte_strlcpy(str, "Matrix", len);
108 		break;
109 	case RTE_ML_IO_FORMAT_1D:
110 		rte_strlcpy(str, "Vector", len);
111 		break;
112 	case RTE_ML_IO_FORMAT_SCALAR:
113 		rte_strlcpy(str, "Scalar", len);
114 		break;
115 	default:
116 		rte_strlcpy(str, "invalid", len);
117 	}
118 }
119