--- /dev/null
+#include "TensorMarker.h"
+
+namespace neurun
+{
+namespace codegen
+{
+
+void TensorMarker::visit(const ::internal::tflite::op::Conv2D::implicit::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.ofm_index);
+ mark(param.ifm_index);
+ mark(param.ker_index);
+ mark(param.bias_index);
+
+ markToCommon(node, param.ofm_index);
+ markFromCommon(node, param.ifm_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.ofm_index);
+ mark(param.ifm_index);
+
+ markToCommon(node, param.ofm_index);
+ markFromCommon(node, param.ifm_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.ofm_index);
+ mark(param.ifm_index);
+
+ markToCommon(node, param.ofm_index);
+ markFromCommon(node, param.ifm_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::Concat::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.ofm_index);
+ markToCommon(node, param.ofm_index);
+ for (auto ind : param.ifm_indexes)
+ {
+ mark(ind);
+ markFromCommon(node, ind);
+ }
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::FullyConnected::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.output_index);
+ mark(param.input_index);
+ mark(param.weight_index);
+ mark(param.bias_index);
+
+ markToCommon(node, param.output_index);
+ markFromCommon(node, param.input_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::Reshape::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.output_index);
+ mark(param.input_index);
+
+ markToCommon(node, param.output_index);
+ markFromCommon(node, param.input_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::Softmax::Node &node)
+{
+ const auto ¶m = node.param();
+ mark(param.output_index);
+ mark(param.input_index);
+
+ markToCommon(node, param.output_index);
+ markFromCommon(node, param.input_index);
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node)
+{
+ // DO NOTHING
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node)
+{
+ // DO NOTHING
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node)
+{
+ // DO NOTHING
+}
+
+void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node)
+{
+ // DO NOTHING
+}
+
+} // namespace codegen
+} // namespace neurun
--- /dev/null
+#ifndef __NEURUN_CODEGEN_TENSOR_MARKER_H__
+#define __NEURUN_CODEGEN_TENSOR_MARKER_H__
+
+#include "internal/op/NodeVisitor.h"
+#include "backend/ITensorBuilder.h"
+
+namespace neurun
+{
+namespace codegen
+{
+
+class TensorMarker : public ::internal::tflite::op::NodeVisitor
+{
+public:
+ TensorMarker(neurun::backend::ITensorBuilder &tensor_builder) : _tensor_builder{tensor_builder}
+ {
+ // DO NOTHING
+ }
+
+public:
+ void visit(const ::internal::tflite::op::Conv2D::implicit::Node &node) override;
+ void visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node) override;
+ void visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node) override;
+ void visit(const ::internal::tflite::op::Concat::Node &node) override;
+ void visit(const ::internal::tflite::op::FullyConnected::Node &node) override;
+ void visit(const ::internal::tflite::op::Reshape::Node &node) override;
+ void visit(const ::internal::tflite::op::Softmax::Node &node) override;
+ void visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node) override;
+ void visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node) override;
+ void visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node) override;
+ void visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node) override;
+
+private:
+ void mark(int32_t ind) { _tensor_builder.mark(::internal::tflite::operand::Index{ind}); }
+ void markFromCommon(const ::internal::tflite::op::Node &op, int32_t ind)
+ {
+ _tensor_builder.markFromCommon(op, ind);
+ }
+ void markToCommon(const ::internal::tflite::op::Node &op, int32_t ind)
+ {
+ _tensor_builder.markToCommon(op, ind);
+ }
+
+private:
+ neurun::backend::ITensorBuilder &_tensor_builder;
+};
+
+} // namespace codegen
+} // namespace neurun
+
+#endif // __NEURUN_CODEGEN_TENSOR_MARKER_H__
#include "codegen/IPlanBuilder.h"
#include "codegen/BackendResolver.h"
#include "codegen/Planner.h"
-
-class TensorMarker : public ::internal::tflite::op::NodeVisitor
-{
-public:
- TensorMarker(neurun::backend::ITensorBuilder &tensor_builder) : _tensor_builder{tensor_builder}
- {
- // DO NOTHING
- }
-
-public:
- void visit(const ::internal::tflite::op::Conv2D::implicit::Node &node) override;
- void visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node) override;
- void visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node) override;
- void visit(const ::internal::tflite::op::Concat::Node &node) override;
- void visit(const ::internal::tflite::op::FullyConnected::Node &node) override;
- void visit(const ::internal::tflite::op::Reshape::Node &node) override;
- void visit(const ::internal::tflite::op::Softmax::Node &node) override;
- void visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node) override;
- void visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node) override;
- void visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node) override;
- void visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node) override;
-
-private:
- void mark(int32_t ind) { _tensor_builder.mark(::internal::tflite::operand::Index{ind}); }
- void markFromCommon(const ::internal::tflite::op::Node &op, int32_t ind)
- {
- _tensor_builder.markFromCommon(op, ind);
- }
- void markToCommon(const ::internal::tflite::op::Node &op, int32_t ind)
- {
- _tensor_builder.markToCommon(op, ind);
- }
-
-private:
- neurun::backend::ITensorBuilder &_tensor_builder;
-};
-
-void TensorMarker::visit(const ::internal::tflite::op::Conv2D::implicit::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.ofm_index);
- mark(param.ifm_index);
- mark(param.ker_index);
- mark(param.bias_index);
-
- markToCommon(node, param.ofm_index);
- markFromCommon(node, param.ifm_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::MaxPool2D::implicit::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.ofm_index);
- mark(param.ifm_index);
-
- markToCommon(node, param.ofm_index);
- markFromCommon(node, param.ifm_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::AvgPool2D::implicit::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.ofm_index);
- mark(param.ifm_index);
-
- markToCommon(node, param.ofm_index);
- markFromCommon(node, param.ifm_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::Concat::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.ofm_index);
- markToCommon(node, param.ofm_index);
- for (auto ind : param.ifm_indexes)
- {
- mark(ind);
- markFromCommon(node, ind);
- }
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::FullyConnected::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.output_index);
- mark(param.input_index);
- mark(param.weight_index);
- mark(param.bias_index);
-
- markToCommon(node, param.output_index);
- markFromCommon(node, param.input_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::Reshape::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.output_index);
- mark(param.input_index);
-
- markToCommon(node, param.output_index);
- markFromCommon(node, param.input_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::Softmax::Node &node)
-{
- const auto ¶m = node.param();
- mark(param.output_index);
- mark(param.input_index);
-
- markToCommon(node, param.output_index);
- markFromCommon(node, param.input_index);
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuFromCommon::Node &node)
-{
- // DO NOTHING
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::CpuToCommon::Node &node)
-{
- // DO NOTHING
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclFromCommon::Node &node)
-{
- // DO NOTHING
-}
-
-void TensorMarker::visit(const ::internal::tflite::op::TensorConvert::AclToCommon::Node &node)
-{
- // DO NOTHING
-}
-
+#include "codegen/TensorMarker.h"
#include "codegen/PlanBuilder.h"
int ANeuralNetworksCompilation::finish()
{
const auto &op = *operations.at(n);
auto tensor_builder = backend_resolver.getTensorBuilder(typeid(op));
- op.accept(TensorMarker{*tensor_builder});
+ op.accept(neurun::codegen::TensorMarker{*tensor_builder});
}
#if 0 // Tensor Conversion disabled