Skip to content

Commit

Permalink
Fix PR comments: Add --profileuntiling and convconstraints renameing
Browse files Browse the repository at this point in the history
  • Loading branch information
runwangdl committed Feb 13, 2025
1 parent 8afb9f3 commit a243fca
Show file tree
Hide file tree
Showing 9 changed files with 33 additions and 16 deletions.
2 changes: 2 additions & 0 deletions Deeploy/DeeployTypes.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ class CodeGenVerbosity:
"""

tilingProfiling: Optional[str] #: str: Specifies the name of the memory level on which to profile tiling
untilingProfiling: Optional[
bool] = None #: str: Specifies the name of the memory level on which to profile untiling


_NoVerbosity = CodeGenVerbosity(None)
Expand Down
4 changes: 0 additions & 4 deletions Deeploy/Targets/PULPOpen/Bindings.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@

from Deeploy.AbstractDataTypes import PointerClass
from Deeploy.CommonExtensions.CodeTransformationPasses.Closure import ClosureGeneration, MemoryAwareClosureGeneration
from Deeploy.CommonExtensions.CodeTransformationPasses.CycleMeasurement import ProfilingCodeGeneration
from Deeploy.CommonExtensions.CodeTransformationPasses.MemoryAllocation import ArgumentStructGeneration, \
MemoryManagementGeneration
from Deeploy.CommonExtensions.DataTypes import IntegerDataTypes, SignedIntegerDataTypes, float32_t, int8_t, int32_t, \
Expand Down Expand Up @@ -124,7 +123,6 @@
MemoryManagementGeneration("L3.*"),
MemoryManagementGeneration("L2"),
MemoryManagementGeneration(),
ProfilingCodeGeneration()
])

ClusterTransformer = CodeTransformation([
Expand All @@ -141,14 +139,12 @@
MemoryManagementGeneration("L2"),
MemoryManagementGeneration("L3.*"),
MemoryManagementGeneration(),
ProfilingCodeGeneration()
])

SimpleTransformer = CodeTransformation([
MemoryManagementGeneration("L2"),
MemoryManagementGeneration("L3.*"),
MemoryManagementGeneration(),
ProfilingCodeGeneration()
])

PULPDMASliceBindings = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@

from typing import Tuple

from Deeploy.CommonExtensions.CodeTransformationPasses.CycleMeasurement import ProfilingCodeGeneration
from Deeploy.DeeployTypes import CodeGenVerbosity, CodeTransformationPass, ExecutionBlock, NetworkContext, _NoVerbosity

from .PULPClusterTilingDB import ProfilingPULPClusterTilingGenerationDB, PULPClusterTilingGenerationDB
Expand All @@ -38,6 +39,7 @@ def __init__(self, targetMemLevel: str):
self.profilingSB = ProfilingPULPClusterTilingGenerationSB(targetMemLevel)
self.DB = PULPClusterTilingGenerationDB(targetMemLevel)
self.profilingDB = ProfilingPULPClusterTilingGenerationDB(targetMemLevel)
self.profiluntiling = ProfilingCodeGeneration()

def apply(self,
ctxt: NetworkContext,
Expand All @@ -52,4 +54,7 @@ def apply(self,
ctxt, executionBlock = self.SB.apply(ctxt, executionBlock, name)
ctxt, executionBlock = self.DB.apply(ctxt, executionBlock, name)

if verbose.untilingProfiling:
ctxt, executionBlock = self.profiluntiling.apply(ctxt, executionBlock, name)

return ctxt, executionBlock
6 changes: 0 additions & 6 deletions Deeploy/Targets/PULPOpen/Parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,6 @@ def parseNode(self, node: gs.Node) -> (bool):
self.operatorRepresentation['pads'][0] == self.operatorRepresentation['pads'][2],
self.operatorRepresentation['pads'][1] == self.operatorRepresentation['pads'][3],
self.operatorRepresentation['pads'][0] == self.operatorRepresentation['pads'][1],
#self.operatorRepresentation['pads'][0] == 0,
# Don't support dilations
#all([coeff == 1 for coeff in self.operatorRepresentation['dilations']]),
len(node.inputs) == 4,
'shift' in node.attrs,
])
Expand Down Expand Up @@ -101,9 +98,6 @@ def parseNode(self, node: gs.Node) -> (bool):
self.operatorRepresentation['pads'][0] == self.operatorRepresentation['pads'][2],
self.operatorRepresentation['pads'][1] == self.operatorRepresentation['pads'][3],
self.operatorRepresentation['pads'][0] == self.operatorRepresentation['pads'][1],
#self.operatorRepresentation['pads'][0] == 0,
# Don't support dilations
#all([coeff == 1 for coeff in self.operatorRepresentation['dilations']]),
len(node.inputs) == 2
])

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
VariableReplacementScheme


class Conv2DTileConstraint(TileConstraint):
class RQConv2DTileConstraint(TileConstraint):

@staticmethod
def addGeometricalConstraint(tilerModel: TilerModel, parseDict: Dict, ctxt: NetworkContext) -> TilerModel:
Expand Down Expand Up @@ -289,7 +289,7 @@ def serializeTilingSolution(
return variableReplacementSchedule, tilingSchedule


class FloatConvTileConstraint(TileConstraint):
class Conv2DTileConstraint(TileConstraint):

@staticmethod
def addGeometricalConstraint(tilerModel: TilerModel, parseDict: Dict, ctxt: NetworkContext) -> TilerModel:
Expand Down
6 changes: 3 additions & 3 deletions Deeploy/Targets/PULPOpen/Tiler.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
PULPReluBinding, PULPRQAddBindings, PULPRQSBindings, PULPRQSConv2DBindings, PULPRQSDWConv2DBindings, \
PULPRQSGEMMBindings, PULPRQSiHardswishBindings, PULPRQSMatrixVecBindings, PULPRQSTallGEMMBindings, \
PULPSoftmaxBindings, PULPTransposeBindings, PULPUniformRQSBindings
from Deeploy.Targets.PULPOpen.TileConstraints.ConvTileConstraint import Conv2DTileConstraint, FloatConvTileConstraint
from Deeploy.Targets.PULPOpen.TileConstraints.ConvTileConstraint import Conv2DTileConstraint, RQConv2DTileConstraint
from Deeploy.Targets.PULPOpen.TileConstraints.DWConvTileConstraint import DWConv2DTileConstraint
from Deeploy.Targets.PULPOpen.TileConstraints.GatherTileConstraint import GatherTileConstraint
from Deeploy.Targets.PULPOpen.TileConstraints.GEMMTileConstraint import FloatGEMMTileConstraint, GEMMTileConstraint, \
Expand All @@ -58,13 +58,13 @@
from Deeploy.TilingExtension.TilerExtension import TilingReadyNodeBindings

PULPRQSConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = PULPRQSConv2DBindings,
tileConstraint = Conv2DTileConstraint())
tileConstraint = RQConv2DTileConstraint())

PULPRQSDWConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = PULPRQSDWConv2DBindings,
tileConstraint = DWConv2DTileConstraint())

PULPConv2DTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = PULPFloatConv2DBindings,
tileConstraint = FloatConvTileConstraint())
tileConstraint = Conv2DTileConstraint())

PULPRQSGEMMTilingReadyBindings = TilingReadyNodeBindings(nodeBindings = PULPRQSGEMMBindings,
tileConstraint = GEMMTileConstraint())
Expand Down
12 changes: 11 additions & 1 deletion DeeployTest/generateNetwork.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
from Deeploy.CommonExtensions.OptimizationPasses.TopologyOptimizationPasses.DebugPasses import EmulateCMSISRequantPass
from Deeploy.DeeployTypes import _NoVerbosity
from Deeploy.Targets.CortexM.Platform import CMSISPlatform
from Deeploy.Targets.PULPOpen.Platform import PULPPlatform

_TEXT_ALIGN = 30

Expand All @@ -54,6 +55,11 @@
parser.add_argument('--overwriteRecentState',
action = 'store_true',
help = 'Copy the recent deeply state to the ./deeployStates folder\n')
parser.add_argument('--profileUntiling',
action = 'store_true',
dest = 'profileUntiling',
default = False,
help = 'Profile Untiling for L2\n')

args = parser.parse_args()

Expand Down Expand Up @@ -104,8 +110,12 @@
) and not "simpleCNN" in args.dir and not "testRQMatMul" in args.dir and not "testRQGEMM" in args.dir:
deployer.loweringOptimizer.passes.insert(0, EmulateCMSISRequantPass())

verbosityCfg = _NoVerbosity
if isinstance(platform, PULPPlatform):
verbosityCfg.untilingProfiling = args.profileUntiling

# Parse graph and infer output levels and signedness
_ = deployer.generateFunction(verbose = _NoVerbosity)
_ = deployer.generateFunction(verbose = verbosityCfg)

if args.overwriteRecentState:
os.makedirs(f'./deeployStates/', exist_ok = True)
Expand Down
7 changes: 7 additions & 0 deletions DeeployTest/testRunner_siracusa.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@
type = int,
default = 1,
help = 'Set number of cluster cores')

parser.add_argument('--profileUntiling',
action = 'store_true',
dest = 'profileUntiling',
default = False,
help = 'Profile Untiling')

args = parser.parse_args()

testRunner = TestRunner(platform = "Siracusa", simulator = "gvsoc", tiling = False, argument_parser = parser)
Expand Down
3 changes: 3 additions & 0 deletions DeeployTest/testUtils/testRunner.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,8 @@ def generate_cmd_args(self) -> str:
command += " --overwriteRecentState"
if self.args.debug:
command += " --debug"
if hasattr(self.args, 'profileUntiling') and self.args.profileUntiling:
command += " --profileUntiling"

if self.tiling_arguments:
if self.args.defaultMemLevel:
Expand Down Expand Up @@ -303,6 +305,7 @@ def generate_test(self):

command = f"python {generation_script} -d {self._dir_gen} -t {self._dir_test} -p {self._platform} {self.gen_args}"
command += self._argument_parser.generate_cmd_args()
print(command)

if self._args.verbose >= 2:
prBlue(f"[TestRunner] Generation Command: {command}")
Expand Down

0 comments on commit a243fca

Please sign in to comment.