MCPcopy Create free account
hub / github.com/NVIDIA/FasterTransformer / NpyArray

Class NpyArray

examples/cpp/xlnet/cnpy.h:23–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

21namespace cnpy {
22
23struct NpyArray {
24 NpyArray(const std::vector<size_t>& _shape, size_t _word_size, bool _fortran_order):
25 shape(_shape), word_size(_word_size), fortran_order(_fortran_order)
26 {
27 num_vals = 1;
28 for (size_t i = 0; i < shape.size(); i++)
29 num_vals *= shape[i];
30 data_holder = std::shared_ptr<std::vector<char>>(new std::vector<char>(num_vals * word_size));
31 }
32
33 NpyArray(): shape(0), word_size(0), fortran_order(0), num_vals(0) {}
34
35 template<typename T>
36 T* data()
37 {
38 return reinterpret_cast<T*>(&(*data_holder)[0]);
39 }
40
41 template<typename T>
42 const T* data() const
43 {
44 T tmp;
45 if (num_vals != 0) {
46 tmp = reinterpret_cast<T*>(&(*data_holder)[0]);
47 }
48 else {
49 tmp = NULL;
50 }
51 return tmp;
52 }
53
54 template<typename T>
55 std::vector<T> as_vec() const
56 {
57 const T* p = data<T>();
58 return std::vector<T>(p, p + num_vals);
59 }
60
61 size_t num_bytes() const
62 {
63 return data_holder->size();
64 }
65
66 std::shared_ptr<std::vector<char>> data_holder;
67 std::vector<size_t> shape;
68 size_t word_size;
69 bool fortran_order;
70 size_t num_vals;
71};
72
73using npz_t = std::map<std::string, NpyArray>;
74

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected