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