[neurun] Introduce IVerifier interface (#2296)
author이한종/동작제어Lab(SR)/Engineer/삼성전자 <hanjoung.lee@samsung.com>
Tue, 14 Aug 2018 09:00:21 +0000 (18:00 +0900)
committer이춘석/동작제어Lab(SR)/Staff Engineer/삼성전자 <chunseok.lee@samsung.com>
Tue, 14 Aug 2018 09:00:21 +0000 (18:00 +0900)
Introduce IVerifier interface to support various verifications, each
verification can be reused from different graph phases.

This commit also contains a skeleton of `DAGChecker`.

Part of #2247

Signed-off-by: Hanjoung Lee <hanjoung.lee@samsung.com>
runtimes/neurun/CMakeLists.txt
runtimes/neurun/src/graph/verifier/IVerifier.cc [new file with mode: 0644]
runtimes/neurun/src/graph/verifier/IVerifier.h [new file with mode: 0644]

index 6ee319c..df3a820 100644 (file)
@@ -17,8 +17,9 @@ file(GLOB SOURCES_FRONTEND "src/frontend/*.cc")
 file(GLOB_RECURSE SOURCES_INTERNAL "src/internal/*.cc")
 file(GLOB_RECURSE SOURCES_GRAPH "src/graph/*.cc")
 file(GLOB_RECURSE SOURCES_CODEGEN "src/codegen/*.cc")
+file(GLOB_RECURSE SOURCES_VERIFIER "src/verifier/*.cc")
 
-set(SOURCES ${SOURCES} ${SOURCES_FRONTEND} ${SOURCES_INTERNAL} ${SOURCES_GRAPH} ${SOURCES_CODEGEN})
+set(SOURCES ${SOURCES} ${SOURCES_FRONTEND} ${SOURCES_INTERNAL} ${SOURCES_GRAPH} ${SOURCES_CODEGEN} ${SOURCES_VERIFIER})
 
 # NOTE For now ARMCompute is necessary
 # TODO Remove required package below(should be optional)
diff --git a/runtimes/neurun/src/graph/verifier/IVerifier.cc b/runtimes/neurun/src/graph/verifier/IVerifier.cc
new file mode 100644 (file)
index 0000000..05bdbe5
--- /dev/null
@@ -0,0 +1,20 @@
+#include "IVerifier.h"
+
+#include "graph/Graph.h"
+
+namespace neurun
+{
+namespace graph
+{
+namespace verifier
+{
+
+bool DAGChecker::verify(const Graph &) const
+{
+  // TODO Implement DAG check
+  return true;
+}
+
+} // namespace verifier
+} // namespace graph
+} // namespace neurun
diff --git a/runtimes/neurun/src/graph/verifier/IVerifier.h b/runtimes/neurun/src/graph/verifier/IVerifier.h
new file mode 100644 (file)
index 0000000..574b002
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef __NEURUN_GRAPH_VERIFIER_I_VERIFIER_H__
+#define __NEURUN_GRAPH_VERIFIER_I_VERIFIER_H__
+
+namespace neurun
+{
+namespace graph
+{
+class Graph;
+} // namespace graph
+} // namespace neurun
+
+namespace neurun
+{
+namespace graph
+{
+namespace verifier
+{
+
+struct IVerifier
+{
+  virtual ~IVerifier() = default;
+  virtual bool verify(const Graph &graph) const = 0;
+};
+
+} // namespace verifier
+} // namespace graph
+} // namespace neurun
+
+namespace neurun
+{
+namespace graph
+{
+namespace verifier
+{
+
+class DAGChecker : public IVerifier
+{
+public:
+  virtual bool verify(const Graph &graph) const override;
+};
+
+} // namespace verifier
+} // namespace graph
+} // namespace neurun
+
+#endif // __NEURUN_GRAPH_VERIFIER_I_VERIFIER_H__