From 6a7f410675a8b7416f48dcfc458267a3c03e73e7 Mon Sep 17 00:00:00 2001 From: Alejandro Saucedo Date: Sun, 7 Mar 2021 11:12:01 +0000 Subject: [PATCH] Updated to use flatdata on the python --- python/src/main.cpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/python/src/main.cpp b/python/src/main.cpp index eab8e5ef4..a82cd160d 100644 --- a/python/src/main.cpp +++ b/python/src/main.cpp @@ -169,12 +169,13 @@ PYBIND11_MODULE(kp, m) { .def("sequence", &kp::Manager::sequence, DOC(kp, Manager, sequence), py::arg("queue_index") = 0, py::arg("total_timestamps") = 0) .def("tensor", [np](kp::Manager& self, - const py::array_t data, + const py::array_t& data, kp::Tensor::TensorTypes tensor_type) { - const py::buffer_info info = data.request(); + const py::array_t& flatdata = np.attr("ravel")(data); + const py::buffer_info info = flatdata.request(); return self.tensor( info.ptr, - data.size(), + flatdata.size(), sizeof(float), kp::Tensor::TensorDataTypes::eFloat, tensor_type); @@ -182,27 +183,26 @@ PYBIND11_MODULE(kp, m) { DOC(kp, Manager, tensor), py::arg("data"), py::arg("tensor_type") = kp::Tensor::TensorTypes::eDevice) .def("tensor_t", [np](kp::Manager& self, - const py::array data, + const py::array& data, kp::Tensor::TensorTypes tensor_type) { - // TODO: confirm if ravel is required as numpy data is always flat - //const py::array_t flatdata = np.attr("ravel")(data); - //const py::buffer_info info = flatdata.request(); - const py::buffer_info info = data.request(); - if (data.dtype() == py::dtype::of()) { + // TODO: Suppport strides in numpy format + const py::array_t& flatdata = np.attr("ravel")(data); + const py::buffer_info info = flatdata.request(); + if (flatdata.dtype() == py::dtype::of()) { return self.tensor( - info.ptr, data.size(), sizeof(float), kp::Tensor::TensorDataTypes::eFloat, tensor_type); - } else if (data.dtype() == py::dtype::of()) { + info.ptr, flatdata.size(), sizeof(float), kp::Tensor::TensorDataTypes::eFloat, tensor_type); + } else if (flatdata.dtype() == py::dtype::of()) { return self.tensor( - info.ptr, data.size(), sizeof(uint32_t), kp::Tensor::TensorDataTypes::eUnsignedInt, tensor_type); - } else if (data.dtype() == py::dtype::of()) { + info.ptr, flatdata.size(), sizeof(uint32_t), kp::Tensor::TensorDataTypes::eUnsignedInt, tensor_type); + } else if (flatdata.dtype() == py::dtype::of()) { return self.tensor( - info.ptr, data.size(), sizeof(int32_t), kp::Tensor::TensorDataTypes::eInt, tensor_type); - } else if (data.dtype() == py::dtype::of()) { + info.ptr, flatdata.size(), sizeof(int32_t), kp::Tensor::TensorDataTypes::eInt, tensor_type); + } else if (flatdata.dtype() == py::dtype::of()) { return self.tensor( - info.ptr, data.size(), sizeof(double), kp::Tensor::TensorDataTypes::eDouble, tensor_type); - } else if (data.dtype() == py::dtype::of()) { + info.ptr, flatdata.size(), sizeof(double), kp::Tensor::TensorDataTypes::eDouble, tensor_type); + } else if (flatdata.dtype() == py::dtype::of()) { return self.tensor( - info.ptr, data.size(), sizeof(bool), kp::Tensor::TensorDataTypes::eBool, tensor_type); + info.ptr, flatdata.size(), sizeof(bool), kp::Tensor::TensorDataTypes::eBool, tensor_type); } else { throw std::runtime_error("Kompute Python no valid dtype supported"); }