in src/util.h [79:120]
inline int getTensorDType(char dtype, int itemsize) {
using rpc::Tensor;
switch (dtype) {
case 'f':
if (itemsize == 2) {
return Tensor::kFloat16;
} else if (itemsize == 4) {
return Tensor::kFloat32;
} else if (itemsize == 8) {
return Tensor::kFloat64;
} else {
throw std::runtime_error("Unexpected itemsize for float");
}
break;
case 'i':
if (itemsize == 1) {
return Tensor::kInt8;
} else if (itemsize == 2) {
return Tensor::kInt16;
} else if (itemsize == 4) {
return Tensor::kInt32;
} else if (itemsize == 8) {
return Tensor::kInt64;
} else
throw std::runtime_error("Unexpected itemsize for int");
break;
case 'u':
if (itemsize == 1) {
return Tensor::kUInt8;
} else
throw std::runtime_error("Unexpected itemsize for unsigned int");
break;
case 'b':
if (itemsize == 1) {
return Tensor::kBool;
} else
throw std::runtime_error("Unexpected itemsize for boolean");
break;
default:
throw std::runtime_error("Unsupported dtype '" + std::string(1, dtype) + "'");
}
}