aboutsummaryrefslogtreecommitdiff
path: root/ethosu/vela/pass_packing.py
diff options
context:
space:
mode:
Diffstat (limited to 'ethosu/vela/pass_packing.py')
-rw-r--r--ethosu/vela/pass_packing.py40
1 files changed, 7 insertions, 33 deletions
diff --git a/ethosu/vela/pass_packing.py b/ethosu/vela/pass_packing.py
index 2a1903da..518b2436 100644
--- a/ethosu/vela/pass_packing.py
+++ b/ethosu/vela/pass_packing.py
@@ -32,13 +32,12 @@ class PassFlags(enum.Flag):
Main = 1
Post = 2
Mac = 4
- Dma = 8
- ElementWise = 16
- Npu = 32
- Cpu = 64
- StartupInit = 128
- MemoryOnly = 256
- PostFusingLimited = 512
+ ElementWise = 8
+ Npu = 16
+ Cpu = 32
+ StartupInit = 64
+ MemoryOnly = 128
+ PostFusingLimited = 256
mac_main_ops = set(
@@ -87,7 +86,6 @@ elem_wise_ops = elem_wise_main_ops | activation_ops | set((Op.Sigmoid, Op.Tanh))
quantization_ops = set((Op.Dequantize, Op.Max, Op.Min))
cpu_ops = set((Op.Softmax, Op.LRN, Op.Shape, Op.Pad, Op.AddN)) | quantization_ops
-npu_dma_ops = set((Op.DMA,))
startup_init_ops = set((Op.Const, Op.Placeholder, Op.SubgraphInput))
memory_only_ops = set((Op.Squeeze, Op.Reshape, Op.QuantizedReshape, Op.ExpandDims,))
@@ -135,16 +133,6 @@ test_sequence = [
),
(
# ops_set
- npu_dma_ops,
- # incompatible_pack_flags
- PassFlags.Cpu | PassFlags.MemoryOnly,
- # flags_to_set
- PassFlags.Npu | PassFlags.Dma,
- # flags_to_clear
- PassFlags.Empty,
- ),
- (
- # ops_set
startup_init_ops,
# incompatible_pack_flags
PassFlags.Npu | PassFlags.Cpu | PassFlags.MemoryOnly,
@@ -261,12 +249,6 @@ def pack_into_passes(nng, arch, verbose_packing=False):
assert ifm_tensor is not None, "IFM missing in {}".format(curr_op)
assert ifm_tensor.purpose == TensorPurpose.FeatureMap
- if flags_to_set & PassFlags.Dma:
- # DMAs are special - Output buffers need to be preserved as intermediates,
- # if the pass consumes the results
- if tens is not None:
- reverse_intermediates.append(tens)
-
if operation_set is None:
print("Warning:", curr_op.type, "operation is unknown or unsupported, placing on CPU")
@@ -292,7 +274,7 @@ def pack_into_passes(nng, arch, verbose_packing=False):
is_element_wise = True
for op in reverse_ops_list:
- if op.type not in elem_wise_ops and op.type not in npu_dma_ops:
+ if op.type not in elem_wise_ops and op.type:
is_element_wise = False
break
@@ -335,11 +317,6 @@ def pack_into_passes(nng, arch, verbose_packing=False):
for inp in primary_op.inputs:
if inp is None:
continue
- if len(inp.ops) == 1 and inp.ops[0].type == Op.DMA and inp.purpose == TensorPurpose.FeatureMap:
- src_op = inp.ops[0]
- if src_op in input_ops_list:
- inp = src_op.inputs[0]
- input_ops_list.remove(src_op)
add_input_list(inp, input_set, input_refcounts, lut_list, ordered_input_list)
input_ops_list.remove(primary_op)
@@ -349,9 +326,6 @@ def pack_into_passes(nng, arch, verbose_packing=False):
add_input_list(inp, input_set, input_refcounts, lut_list, ordered_input_list)
name = ops_list[0].name
- non_dma_ops = [op for op in ops_list if op.type != Op.DMA]
- if non_dma_ops:
- name = non_dma_ops[0].name
ps = Pass(name, placement, is_element_wise, npu_block_type)
ps.ops = ops_list
ps.primary_op = primary_op