[nnkit] Introduce backend interface (#251)
author박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 <jh1302.park@samsung.com>
Thu, 24 May 2018 08:10:08 +0000 (17:10 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Thu, 24 May 2018 08:10:08 +0000 (17:10 +0900)
This commit introduces 'nnkit::Backend' and 'nnkit::BackendFactory'
interfaces which abstracts various NN frameworks.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/nnkit/libs/intf/CMakeLists.txt
contrib/nnkit/libs/intf/backend/CMakeLists.txt [new file with mode: 0644]
contrib/nnkit/libs/intf/backend/include/nnkit/Backend.h [new file with mode: 0644]
contrib/nnkit/libs/intf/backend/include/nnkit/BackendFactory.h [new file with mode: 0644]

index 46de032..bb56320 100644 (file)
@@ -1,2 +1,3 @@
 add_subdirectory(tensor)
 add_subdirectory(cmdline)
+add_subdirectory(backend)
diff --git a/contrib/nnkit/libs/intf/backend/CMakeLists.txt b/contrib/nnkit/libs/intf/backend/CMakeLists.txt
new file mode 100644 (file)
index 0000000..84161e9
--- /dev/null
@@ -0,0 +1,4 @@
+add_library(nnkit_intf_backend INTERFACE)
+target_include_directories(nnkit_intf_backend INTERFACE include)
+target_link_libraries(nnkit_intf_backend INTERFACE nnkit_intf_tensor)
+target_link_libraries(nnkit_intf_backend INTERFACE nnkit_intf_cmdline)
diff --git a/contrib/nnkit/libs/intf/backend/include/nnkit/Backend.h b/contrib/nnkit/libs/intf/backend/include/nnkit/Backend.h
new file mode 100644 (file)
index 0000000..4bcc80e
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef __NNKIT_BACKEND_H__
+#define __NNKIT_BACKEND_H__
+
+#include <nnkit/TensorContext.h>
+
+#include <functional>
+
+namespace nnkit
+{
+
+struct Backend
+{
+  virtual ~Backend() = default;
+
+  virtual void prepare(const std::function<void (TensorContext &)> &f) = 0;
+  virtual void run(void) = 0;
+  virtual void teardown(const std::function<void (TensorContext &)> &f) = 0;
+};
+
+} // namespace nnkit
+
+#endif // __NNKIT_BACKEND_H__
diff --git a/contrib/nnkit/libs/intf/backend/include/nnkit/BackendFactory.h b/contrib/nnkit/libs/intf/backend/include/nnkit/BackendFactory.h
new file mode 100644 (file)
index 0000000..09abbdf
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef __NNKIT_BACKEND_FACTORY_H__
+#define __NNKIT_BACKEND_FACTORY_H__
+
+#include "Backend.h"
+
+#include <nnkit/CmdlineArguments.h>
+
+#include <memory>
+
+namespace nnkit
+{
+
+struct BackendFactory
+{
+  virtual ~BackendFactory() = default;
+
+  virtual std::unique_ptr<Backend> make(const CmdlineArguments &args) const = 0;
+};
+
+} // namesapce nnkit
+
+#endif // __NNKIT_BACKEND_FACTORY_H__