diff --git a/Deeploy/Targets/Generic/Parsers.py b/Deeploy/Targets/Generic/Parsers.py index cf1ba776bd..87260abd66 100644 --- a/Deeploy/Targets/Generic/Parsers.py +++ b/Deeploy/Targets/Generic/Parsers.py @@ -141,9 +141,12 @@ def parseNodeCtxt(self, ctxt.hoistConstant(axesTensor) node.inputs.append(axesTensor) if len(node.inputs) <= 4: - values = np.ones((self.operatorRepresentation['dims'])) + values = np.ones((self.operatorRepresentation['dims']), dtype = np.int64) stepsTensor = gs.Constant(f'{node.name}_Steps_Tensor', values = values) + ctxt.hoistConstant(stepsTensor) + ctxt.addUser(stepsTensor.name, node) + node.inputs.append(stepsTensor) self.operatorRepresentation['starts'] = node.inputs[1].name diff --git a/Deeploy/Targets/PULPOpen/TileConstraints/SliceConstraint.py b/Deeploy/Targets/PULPOpen/TileConstraints/SliceConstraint.py index 5309300659..53c45df1c3 100644 --- a/Deeploy/Targets/PULPOpen/TileConstraints/SliceConstraint.py +++ b/Deeploy/Targets/PULPOpen/TileConstraints/SliceConstraint.py @@ -113,36 +113,25 @@ def serializeTilingSolution( # Prepare replacement lists for the elements inside the operator representation, # for the cubes to be computed further down in this function - # ~~~~~ SEE ISSUE #134: https://github.com/pulp-platform/Deeploy/issues/134 ~~~~~ - # Freeze tiling input and output tiling for now + # Build replacementTypes based on the actual number of dimensions + data_in_shape_type = [PointerClass(uint16_t) for _ in range(len(operatorRepresentation['data_in_shape']))] + data_out_shape_type = [PointerClass(uint16_t) for _ in range(len(operatorRepresentation['data_out_shape']))] + replacements = { - # "data_in_shape": [], - # "data_out_shape": [], - # "starts": [[ - # 0, - # ] * len(operatorRepresentation['axes'])] * len(outputCubes), - # "ends": [], + "data_in_shape": [], + "data_out_shape": [], + "starts": [], + "ends": [], "data_in_size": [], } replacementTypes = { - # "data_in_shape": [ - # PointerClass(uint16_t), - # PointerClass(uint16_t), - # PointerClass(uint16_t), - # PointerClass(uint16_t) - # ], - # "data_out_shape": [ - # PointerClass(uint16_t), - # PointerClass(uint16_t), - # PointerClass(uint16_t), - # PointerClass(uint16_t) - # ], - # "starts": PointerClass(uint16_t), - # "ends": PointerClass(uint16_t), + "data_in_shape": data_in_shape_type, + "data_out_shape": data_out_shape_type, + "starts": PointerClass(uint16_t), + "ends": PointerClass(uint16_t), "data_in_size": PointerClass(uint16_t), } - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Prepare loading schedule lists inputLoadSchedule = [] @@ -152,20 +141,18 @@ def serializeTilingSolution( # Compute input cube in_cube = SliceTileConstraint.computeInputCubeFromOutputCube(out_cube, parseDict = operatorRepresentation) - # Compute new ends for replacement + # Compute new starts and ends for replacement + new_starts = list() new_ends = list() for ax in operatorRepresentation['axes']: + new_starts.append(in_cube.offset[ax]) new_ends.append(in_cube.offset[ax] + in_cube.dims[ax]) - # Append replacement elements - - # ~~~~~ SEE ISSUE #134: https://github.com/pulp-platform/Deeploy/issues/134 ~~~~~ - # Freeze tiling input and output tiling for now - # replacements["data_in_shape"].append(list(in_cube.dims).copy()) - # replacements["data_out_shape"].append(list(out_cube.dims).copy()) - # replacements["ends"].append(new_ends) - # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - + # Append replacement elements (using tuples so they can be hashed by minimizeVariableReplacement) + replacements["data_in_shape"].append(tuple(in_cube.dims)) + replacements["data_out_shape"].append(tuple(out_cube.dims)) + replacements["starts"].append(tuple(new_starts)) + replacements["ends"].append(tuple(new_ends)) replacements["data_in_size"].append(int(np.prod(in_cube.dims))) # Append new cubes diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Large/inputs.npz b/DeeployTest/Tests/Kernels/FP32/Slice/Large/inputs.npz new file mode 100644 index 0000000000..bf33b91ff3 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Large/inputs.npz differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Large/network.onnx b/DeeployTest/Tests/Kernels/FP32/Slice/Large/network.onnx new file mode 100644 index 0000000000..9ab410f566 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Large/network.onnx differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Large/outputs.npz b/DeeployTest/Tests/Kernels/FP32/Slice/Large/outputs.npz new file mode 100644 index 0000000000..5bd18d68e9 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Large/outputs.npz differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/inputs.npz b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/inputs.npz new file mode 100644 index 0000000000..fbff4d9f2b Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/inputs.npz differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/network.onnx b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/network.onnx new file mode 100644 index 0000000000..ae2ab8d040 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/network.onnx differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/outputs.npz b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/outputs.npz new file mode 100644 index 0000000000..7c97a11a83 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_1/outputs.npz differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/inputs.npz b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/inputs.npz new file mode 100644 index 0000000000..5c753a65b4 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/inputs.npz differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/network.onnx b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/network.onnx new file mode 100644 index 0000000000..e21a312f19 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/network.onnx differ diff --git a/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/outputs.npz b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/outputs.npz new file mode 100644 index 0000000000..94bdd74673 Binary files /dev/null and b/DeeployTest/Tests/Kernels/FP32/Slice/Small/doc_ex_2/outputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/inputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/inputs.npz new file mode 100644 index 0000000000..f1ec4dedb9 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/inputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/network.onnx b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/network.onnx new file mode 100644 index 0000000000..0e779d5ff3 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/network.onnx differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/outputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/outputs.npz new file mode 100644 index 0000000000..a1a672e4a2 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_0/outputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/inputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/inputs.npz new file mode 100644 index 0000000000..d67a59cd3b Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/inputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/network.onnx b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/network.onnx new file mode 100644 index 0000000000..95a35bdd1b Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/network.onnx differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/outputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/outputs.npz new file mode 100644 index 0000000000..c147288a02 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_1/outputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/inputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/inputs.npz new file mode 100644 index 0000000000..a3aa88f0f0 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/inputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/network.onnx b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/network.onnx new file mode 100644 index 0000000000..9248e3f647 --- /dev/null +++ b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/network.onnx @@ -0,0 +1,29 @@ + deeploy_test_gen:Ø +1starts_c"Constant* +value*: Bstarts  +-ends_c"Constant* +value* :@Bends  +-axes_c"Constant* +value* :Baxes  +/steps_c"Constant* +value*:Bsteps  +E +input +starts_c +ends_c +axes_c +steps_coutput +slice_node"Slice +SliceGraphZ +input + + +1 + +`b +output + + +1 + + B \ No newline at end of file diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/outputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/outputs.npz new file mode 100644 index 0000000000..e774993297 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_2/outputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/inputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/inputs.npz new file mode 100644 index 0000000000..443b869916 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/inputs.npz differ diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/network.onnx b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/network.onnx new file mode 100644 index 0000000000..45f6347db0 --- /dev/null +++ b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/network.onnx @@ -0,0 +1,29 @@ + deeploy_test_gen:Ø +1starts_c"Constant* +value*:@Bstarts  +-ends_c"Constant* +value* :`Bends  +-axes_c"Constant* +value* :Baxes  +/steps_c"Constant* +value*:Bsteps  +E +input +starts_c +ends_c +axes_c +steps_coutput +slice_node"Slice +SliceGraphZ +input + + +1 + +`b +output + + +1 + + B \ No newline at end of file diff --git a/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/outputs.npz b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/outputs.npz new file mode 100644 index 0000000000..ab9681c221 Binary files /dev/null and b/DeeployTest/Tests/Models/TinyViT/5M/Layers/FP32/Slice/slice_layer_3/outputs.npz differ