aboutsummaryrefslogtreecommitdiff
path: root/utils/Utils.cpp
diff options
context:
space:
mode:
authorGiorgio Arena <giorgio.arena@arm.com>2017-10-26 17:14:13 +0100
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:35:24 +0000
commitcf3935ffd4c67d9396c2435a3a28d3a159753105 (patch)
treed657c5b9b6724c15fc55847d88ab27e1081c2f44 /utils/Utils.cpp
parent7362f0de41305eccb4b2b9b606647ffe318d32b7 (diff)
downloadComputeLibrary-cf3935ffd4c67d9396c2435a3a28d3a159753105.tar.gz
COMPMID-627 Create CL SGEMM example
Change-Id: I17478202348d34716d00c78e3cc21254c76b32e1 Reviewed-on: http://mpd-gerrit.cambridge.arm.com/93304 Tested-by: Kaizen <jeremy.johnson+kaizengerrit@arm.com> Reviewed-by: Anthony Barbier <anthony.barbier@arm.com>
Diffstat (limited to 'utils/Utils.cpp')
-rw-r--r--utils/Utils.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/utils/Utils.cpp b/utils/Utils.cpp
index 5316690a3d..b99afb441c 100644
--- a/utils/Utils.cpp
+++ b/utils/Utils.cpp
@@ -167,5 +167,42 @@ std::tuple<unsigned int, unsigned int, int> parse_ppm_header(std::ifstream &fs)
return std::make_tuple(width, height, max_val);
}
+
+std::tuple<std::vector<unsigned long>, bool, std::string> parse_npy_header(std::ifstream &fs) //NOLINT
+{
+ std::vector<unsigned long> shape; // NOLINT
+
+ // Check magic bytes and version number
+ unsigned char v_major = 0;
+ unsigned char v_minor = 0;
+ npy::read_magic(fs, &v_major, &v_minor);
+
+ // Read header
+ std::string header;
+ if(v_major == 1 && v_minor == 0)
+ {
+ header = npy::read_header_1_0(fs);
+ }
+ else if(v_major == 2 && v_minor == 0)
+ {
+ header = npy::read_header_2_0(fs);
+ }
+ else
+ {
+ ARM_COMPUTE_ERROR("Unsupported file format version");
+ }
+
+ // Parse header
+ bool fortran_order = false;
+ std::string typestr;
+ npy::ParseHeader(header, typestr, &fortran_order, shape);
+
+ if(!fortran_order)
+ {
+ std::reverse(shape.begin(), shape.end());
+ }
+
+ return std::make_tuple(shape, fortran_order, typestr);
+}
} // namespace utils
} // namespace arm_compute