27 #ifndef _LBANN_CNPY_UTILS_HPP_ 28 #define _LBANN_CNPY_UTILS_HPP_ 36 namespace cnpy_utils {
45 std::vector<size_t> indices);
59 inline size_t ptr_offset(
const cnpy::NpyArray& na, std::vector<size_t> indices)
61 if ((
sizeof(T) != na.word_size) && (
sizeof(T) != 1u)) {
63 std::string(
"cnpy_utils::ptr_offset() :") +
64 "The data type is not consistent with the word size of the array.");
67 ((
sizeof(T) == 1u) ? na.word_size : 1u));
75 inline T&
data(
const cnpy::NpyArray& na,
const std::vector<size_t> indices)
77 return *(
reinterpret_cast<T*
>(&(*na.data_holder)[0]) +
78 ptr_offset<T>(na, indices));
86 inline T*
data_ptr(
const cnpy::NpyArray& na,
const std::vector<size_t> indices)
88 return (reinterpret_cast<T*>(&(*na.data_holder)[0]) +
89 ptr_offset<T>(na, indices));
94 const std::vector<size_t> indices)
96 return data_ptr<uint8_t>(na, indices);
106 std::string
show_shape(
const cnpy::NpyArray& na);
111 #endif // _LBANN_CNPY_UTILS_HPP_ void shrink_to_fit(cnpy::NpyArray &na, size_t sz)
void * data_ptr< void >(const cnpy::NpyArray &na, const std::vector< size_t > indices)
T & data(const cnpy::NpyArray &na, const std::vector< size_t > indices)
size_t ptr_offset(const cnpy::NpyArray &na, std::vector< size_t > indices)
T * data_ptr(const cnpy::NpyArray &na, const std::vector< size_t > indices)
size_t compute_cnpy_array_offset(const cnpy::NpyArray &na, std::vector< size_t > indices)
exception lbann_exception
std::string show_shape(const cnpy::NpyArray &na)
Show the dimensions of loaded data.