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