Introduce 'nnfw::util::vector' namespace (#421)
author박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 4 Apr 2018 12:50:57 +0000 (21:50 +0900)
committer이성재/동작제어Lab(SR)/Principal Engineer/삼성전자 <sj925.lee@samsung.com>
Wed, 4 Apr 2018 12:50:57 +0000 (21:50 +0900)
This commit introduces 'nnfw::util::vector' namespace which includes
various helpers for vector objects.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
include/util/vector/Object.h [new file with mode: 0644]
include/util/vector/Reader.h [new file with mode: 0644]
tools/nnapi_unittests/inc/nn.h [deleted file]
tools/nnapi_unittests/lib/nn.cpp [deleted file]
tools/nnapi_unittests/tests/conv_1.cpp

diff --git a/include/util/vector/Object.h b/include/util/vector/Object.h
new file mode 100644 (file)
index 0000000..7b9e2fe
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef __NNFW_UTIL_VECTOR_OBJECT_H__
+#define __NNFW_UTIL_VECTOR_OBJECT_H__
+
+#include "util/vector/Reader.h"
+
+#include <vector>
+#include <functional>
+
+namespace nnfw
+{
+namespace util
+{
+namespace vector
+{
+
+template<typename T> class Object final : public Reader<T>
+{
+public:
+  using Generator = std::function<T (int32_t size, int32_t offset)>;
+
+public:
+  Object(int32_t size, const Generator &gen) : _size{size}
+  {
+    _value.resize(_size);
+
+    for (int32_t offset = 0; offset < size; ++offset)
+    {
+      _value.at(offset) = gen(size, offset);
+    }
+  }
+
+public:
+  int32_t size(void) const { return _size; }
+
+public:
+  T at(uint32_t nth) const override { return _value.at(nth); }
+
+private:
+  const int32_t _size;
+  std::vector<T> _value;
+};
+
+} // namespace vector
+} // namespace util
+} // namespace nnfw
+
+#endif // __NNFW_UTIL_VECTOR_OBJECT_H__
diff --git a/include/util/vector/Reader.h b/include/util/vector/Reader.h
new file mode 100644 (file)
index 0000000..7f28d23
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef __NNFW_UTIL_VECTOR_READER_H__
+#define __NNFW_UTIL_VECTOR_READER_H__
+
+#include <cstdint>
+
+namespace nnfw
+{
+namespace util
+{
+namespace vector
+{
+
+template <typename T> struct Reader
+{
+  virtual ~Reader() = default;
+
+  virtual T at(uint32_t nth) const = 0;
+};
+
+} // namespace vector
+} // namespace util
+} // namespace nnfw
+
+#endif // __NNFW_UTIL_VECTOR_READER_H__
diff --git a/tools/nnapi_unittests/inc/nn.h b/tools/nnapi_unittests/inc/nn.h
deleted file mode 100644 (file)
index 4878f1d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef __NN_H__
-#define __NN_H__
-
-#include <vector>
-
-#include <cstdint>
-
-namespace vector
-{
-
-template <typename T> struct View
-{
-  virtual ~View() = default;
-
-  virtual int32_t size(void) const = 0;
-  virtual T at(uint32_t off) const = 0;
-};
-
-}
-
-class SampleBiasObject final : public vector::View<float>
-{
-public:
-  SampleBiasObject(int32_t size);
-
-public:
-  int32_t size(void) const override;
-
-public:
-  float at(uint32_t off) const override;
-
-private:
-  int32_t _size;
-};
-
-#endif
diff --git a/tools/nnapi_unittests/lib/nn.cpp b/tools/nnapi_unittests/lib/nn.cpp
deleted file mode 100644 (file)
index e7b01cf..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#include <nn.h>
-
-#include <cassert>
-
-//
-// SampleBiasObject
-//
-SampleBiasObject::SampleBiasObject(int32_t size) : _size(size)
-{
-  // DO NOTHING
-}
-
-int32_t SampleBiasObject::size(void) const { return _size; }
-
-float SampleBiasObject::at(uint32_t off) const { return 0.0f; }
index 410b8a8..458ac21 100644 (file)
@@ -2,9 +2,9 @@
 #include "tensorflow/contrib/lite/model.h"
 #include "tensorflow/contrib/lite/builtin_op_data.h"
 
-#include "nn.h"
 #include "env.h"
 
+#include "util/vector/Object.h"
 #include "util/feature/RandomObject.h"
 #include "util/feature/Reader.h"
 #include "util/kernel/RandomObject.h"
@@ -97,7 +97,7 @@ int main(int argc, char **argv)
 
   const nnfw::util::feature::RandomObject<float> ifm{nnfw::util::feature::Shape{IFM_C, IFM_H, IFM_W}};
   const nnfw::util::kernel::RandomObject<float> kernel{nnfw::util::kernel::Shape{KER_N, KER_C, KER_H, KER_W}};
-  const SampleBiasObject bias{KER_N};
+  const nnfw::util::vector::Object<float> bias{KER_N, [] (uint32_t, uint32_t) { return 0.0f; }};
 
   std::cout << "Configurations:" << std::endl;
 #define PRINT_NEWLINE() { std::cout << std::endl; }