From 22ac4aa7bf534dec560201baa42467902601fd6d Mon Sep 17 00:00:00 2001 From: asyms <34397549+asyms@users.noreply.github.com> Date: Wed, 21 Feb 2024 10:01:26 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20KULeuven?= =?UTF-8?q?-MICAS/zigzag@3c1b4cbcf59450488fc240f042e0d62906304e67=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .doctrees/environment.pickle | Bin 378360 -> 372906 bytes .doctrees/visualization.doctree | Bin 13151 -> 10969 bytes _sources/visualization.rst.txt | 42 +++++++++++++++++--------------- searchindex.js | 2 +- visualization.html | 24 ++++++++++++++++-- 5 files changed, 45 insertions(+), 23 deletions(-) diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index ae608b4a018bf3f93682ce363c8885f64309a646..59d857e33070d81c5973a79f54623f0af97b1d5e 100644 GIT binary patch delta 13905 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 delta 15209 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 ICy7)34`kxA`2YX_ diff --git a/.doctrees/visualization.doctree b/.doctrees/visualization.doctree index 1032ebf21f03158f7a6617fc4ffc1cecfd37eb71..da782b59d260025fd1be56cafc1dbd0dfd27e890 100644 GIT binary patch delta 1953 zcmcbgb~BWiGx(a2zpP+{9_#~IET&ZSEWz%}_GzdOy$-Yeio zGqXmzKD^kn@%TN(E-f zWH4_Qlk8$*%2+%(Pey$59%&P%jMbAjD(Z4%EG|vT5bH6TY$#~;XUj-Uu2-;Uj0_CLlM4-HC(l+f1sRd?e)0{K8b%kOMpIUMFn^NjA;CnDI$*eD z1pygg(G0a}M&r#-)K)Pu&1Kv?LGv-QUlC9)D<7obO~%WtED$dpNR;+)<|XE)mQ)s` r7K5tRERed+j5nQNC7q=iiXcI-KAw!18G&F;KnI%YaWGC6G4=)kc9W-4 delta 3213 zcmbuBT})e59Kh*?vbM0z2Vg*3I0cawdXW|whJ~nG0%08`TO=^C!4_^gy_8<;Z5{ZL zqRGr^Zj9#Kv1!b<%tWUzy71;BzMCaJnV2jYCMG6E;}Vm(xOo2Oe)M+5$=H4P=brQb zI_G!(=i|re+e!O|{o+dlH|>8oCY;LQMIo8Wq;e@KGoMb$IhCk^cht94Keppqd?2P` zr_%6{&3q~+tXK?Zr)^s{=Zwv*f`gxW)Z~P$)k2vj)z0Y`Ont4K%SxFgOAN)?V|>gC zHz{`3p`KT@@wo8~vfA8J_c?as>-hvVI6>;2C&n!X*RcmzV{a6NC?lAZMKq3i>o=$81$qQ^-FR7(sJ$ z{yQ6&$7b(rd>llfP#}m{`>fH91rf8D(t3t<1HBnGn!5j>-i~PQ;Q+YDVy+qFp9lvE zkj@DB-zl{r>@}eguaq+8nxN@Im6Ln5Vs?+0O0zB{Vso>s^$)OMgH3sy?li2rO)rTy1T$jgzlk<4&XISgYQW<}XO|>|yG8x8xaV zXXQ|rNJ|UL^RMNloM5R3B}yjiq8=@zSrwv#)&bj4O`3rvi|8WAH{?LrE!I*iI@tDt zSOfN21yY5UKA#Y9J8Vv0OjR1_E?kwe@id>7q*a-h_;Y+pjpI(bX}hd?#Pmo)=Md<- zsXh=>^SBqg%89Uf)v-DzH(DEQljP63Ns|q0Sx461`r2T-O-|Txd!%kLK5i)u(VxnU$ z>-1(#bkpVNx*tY&lI$EjS%D6h&@lsRY>}b!Q$oqz(1F58T81vb(5-9ehWALWmyui7 z$qnxY4$05xFdq%Bn}M4k7Y&R#5E$(@a_#AKB~kAuzr2DZt*^)K+joEL9wTW*M+ni;pjV#QdN}$GcTTr zPDIC5r3MD3Mtn-GEakHcf{KH%&i8;|*%e72VB+7j*SG@q&Y-YQ2v5MEwVDp!csi1x zuan|9Li={dAvREzL85C{66W2cUEuqNf#QXIRm2m(7_!2M=1HH=M{$I89OD($QHCS1 PI}YQ%F>wgwgPzF02EG}e diff --git a/_sources/visualization.rst.txt b/_sources/visualization.rst.txt index c1326274..8bb988b8 100644 --- a/_sources/visualization.rst.txt +++ b/_sources/visualization.rst.txt @@ -21,26 +21,28 @@ The code block demonstrates how to use it: The function will show the loops of the temporal mapping and for each operand shows at which memory level it resides. For example: -********* Temporal Mapping - CostModelEvaluation(layer=LayerNode_0, core=1) ********* - O (O): [[('FX', 11), ('FY', 11)], [('OY', 7), ('OY', 2), ('OX', 14), ('K', 12)], []] - W (I2): [[], [('FX', 11), ('FY', 11), ('OY', 7), ('OY', 2), ('OX', 14)], [('K', 12)]] - I (I1): [[('FX', 11), ('FY', 11), ('OY', 7), ('OY', 2), ('OX', 14), ('K', 12)], []] - -------------------------------------------------------------------------------------- - Temporal Loops O W I -------------------------------------------------------------------------------------- - for K in [0:12) sram_2MB dram sram_2MB -------------------------------------------------------------------------------------- - for OX in [0:14) sram_2MB sram_32KB sram_2MB -------------------------------------------------------------------------------------- - for OY in [0:2) sram_2MB sram_32KB sram_2MB -------------------------------------------------------------------------------------- - for OY in [0:7) sram_2MB sram_32KB sram_2MB -------------------------------------------------------------------------------------- - for FY in [0:11) rf_2B sram_32KB sram_2MB -------------------------------------------------------------------------------------- - for FX in [0:11) rf_2B sram_32KB sram_2MB -------------------------------------------------------------------------------------- +:: + + ********* Temporal Mapping - CostModelEvaluation(layer=LayerNode_0, core=1) ********* + O (O): [[('FX', 11), ('FY', 11)], [('OY', 7), ('OY', 2), ('OX', 14), ('K', 12)], []] + W (I2): [[], [('FX', 11), ('FY', 11), ('OY', 7), ('OY', 2), ('OX', 14)], [('K', 12)]] + I (I1): [[('FX', 11), ('FY', 11), ('OY', 7), ('OY', 2), ('OX', 14), ('K', 12)], []] + + ------------------------------------------------------------------------------------- + Temporal Loops O W I + ------------------------------------------------------------------------------------- + for K in [0:12) sram_2MB dram sram_2MB + ------------------------------------------------------------------------------------- + for OX in [0:14) sram_2MB sram_32KB sram_2MB + ------------------------------------------------------------------------------------- + for OY in [0:2) sram_2MB sram_32KB sram_2MB + ------------------------------------------------------------------------------------- + for OY in [0:7) sram_2MB sram_32KB sram_2MB + ------------------------------------------------------------------------------------- + for FY in [0:11) rf_2B sram_32KB sram_2MB + ------------------------------------------------------------------------------------- + for FX in [0:11) rf_2B sram_32KB sram_2MB + ------------------------------------------------------------------------------------- The top loop is the outer-most for loop, where as the bottom loop is the inner-most. Going from bottom to top, loops are allocated to the innermost memories of the memory hierarchy for each operand. The names of the memories match the names of the ``MemoryInstance`` object used to create the memory level using the ``add_memory()`` call in the ``MemoryHierarchy``. diff --git a/searchindex.js b/searchindex.js index dca83656..3673cd5f 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "code-documentation", "contribute", "future", "getting-started", "hardware", "index", "installation", "mapping", "outputs", "publications", "stages", "user-guide", "visualization", "workload"], "filenames": ["api.rst", "code-documentation.rst", "contribute.rst", "future.rst", "getting-started.rst", "hardware.rst", "index.rst", "installation.rst", "mapping.rst", "outputs.rst", "publications.rst", "stages.rst", "user-guide.rst", "visualization.rst", "workload.rst"], "titles": ["ZigZag API", "Code Documentation", "Contribute", "Future changes", "Getting Started", "Hardware Architecture", "Welcome to ZigZag\u2019s documentation!", "Installing ZigZag", "Mapping", "Outputs", "Publications", "Stages", "User Guide", "Visualization", "Workload"], "terms": {"onc": [0, 7], "i": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 14], "avail": [0, 2, 5, 7], "your": [0, 2, 7, 8], "python": [0, 2, 4, 5, 7, 14], "path": [0, 4, 14], "you": [0, 2, 3, 4, 5, 7, 8, 9, 11, 14], "can": [0, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14], "import": [0, 2, 4, 5, 13, 14], "ani": [0, 2, 5, 7, 11], "file": [0, 2, 4, 5, 7, 8, 9, 11, 14], "from": [0, 5, 11, 13, 14], "thi": [0, 1, 2, 4, 5, 6, 8, 9, 11, 13, 14], "function": [0, 2, 7, 11, 13], "take": [0, 3, 5, 7, 14], "an": [0, 2, 4, 5, 7, 9, 11], "workload": [0, 4, 6, 8, 11, 12], "hardwar": [0, 4, 6, 8, 12, 14], "architectur": [0, 4, 6, 10, 11, 12], "map": [0, 3, 4, 5, 6, 9, 12], "return": [0, 9, 11], "perform": [0, 5, 10], "execut": [0, 2, 4, 5, 8, 11, 14], "model": [0, 3, 4, 6], "": [0, 2, 3, 4, 5, 8, 10, 11, 13], "layer": [0, 4, 6, 8, 9, 11, 13], "under": [0, 2, 4, 8], "given": [0, 4, 11], "constraint": [0, 4], "energi": [0, 3, 4, 5, 9, 10, 11], "latenc": [0, 3, 4, 5, 6, 9, 11], "cme": [0, 11, 13], "acceler": [0, 4, 6, 8, 9, 10, 11, 14], "opt": 0, "dump_filename_pattern": [0, 4], "output": [0, 4, 5, 6, 11, 12, 13, 14], "datetim": [0, 11], "json": [0, 9, 11], "pickle_filenam": 0, "list_of_cm": [0, 13], "pickl": [0, 11, 13], "The": [0, 1, 2, 4, 5, 6, 8, 9, 12, 13, 14], "input": [0, 3, 4, 5, 8, 9, 14], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "A": [0, 5, 6, 8, 10, 14], "neural": [0, 5, 10], "network": [0, 4, 5, 10], "defin": [0, 4, 5, 9, 10, 11, 14], "onnx": [0, 3, 4, 8, 11], "format": [0, 1, 2, 9], "own": [0, 11, 14], "high": [0, 5, 10], "level": [0, 5, 11, 13], "hw": [0, 3, 4, 6, 8, 11], "descript": [0, 8, 11], "specifi": [0, 5, 9], "core": [0, 4, 6, 8, 11, 13, 14], "alloc": [0, 5, 8, 10, 11, 13], "spatial": [0, 3, 5, 8, 9, 10, 14], "option": [0, 5], "tempor": [0, 3, 4, 6, 9], "order": [0, 2, 3, 5, 10, 11], "memori": [0, 3, 6, 8, 9, 10, 11, 13, 14], "operand": [0, 5, 8, 11, 13, 14], "link": [0, 1, 5, 8, 14], "optim": [0, 4, 6, 10], "target": 0, "It": [0, 4, 9, 11, 14], "edp": [0, 11], "delai": 0, "product": 0, "name": [0, 4, 5, 8, 13, 14], "result": [0, 6, 9, 13], "which": [0, 4, 5, 8, 9, 11, 13, 14], "includ": [0, 2, 3, 5, 9], "all": [0, 2, 4, 5, 9, 11, 14], "detail": [0, 2, 6, 7, 11], "metadata": 0, "analys": 0, "debug": 0, "number": [0, 5, 9], "indic": [0, 14], "overal": 0, "consum": 0, "run": [0, 2, 6, 7, 8, 11], "user": [0, 3, 4, 5, 6, 7, 11], "wai": [0, 1, 2, 4, 5, 9, 11, 13, 14], "cycl": [0, 5], "count": 0, "collect": 0, "cost": [0, 3, 4, 5, 6, 14], "evalu": [0, 5, 11], "stand": 0, "we": [0, 2, 3, 4, 5, 11], "demonstr": [0, 13], "how": [0, 2, 4, 5, 7, 8, 9, 11, 13], "us": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14], "multipl": [0, 5, 6, 10, 11, 13, 14], "demo": 0, "comment": [1, 2], "within": [1, 5, 8, 11, 14], "sourc": [1, 2], "zigzag": [1, 4, 5, 8, 9, 11, 12, 13, 14], "framework": [1, 2, 4, 6, 7, 8, 10, 11, 12, 14], "support": [1, 3, 4, 5, 6, 11], "auto": [1, 5, 10], "doxygen": 1, "automat": [1, 4, 5, 6, 8, 11, 14], "updat": [1, 2, 3, 11], "soon": 1, "somebodi": 1, "push": 1, "someth": 1, "master": 1, "branch": 1, "github": [1, 7, 10], "repo": [1, 14], "project": [1, 6, 10], "follow": [1, 2, 4, 5, 8, 9, 11, 12, 14], "access": [1, 3, 5], "latest": 1, "version": [1, 6, 11], "when": [2, 8, 11, 14], "pleas": [2, 9, 11], "consid": [2, 11], "googl": 2, "style": 2, "guid": [2, 3, 6], "docstr": 2, "class": [2, 3, 11], "method": [2, 5, 9], "exampl": [2, 4, 8, 9, 11, 13, 14], "found": [2, 11, 14], "throughout": 2, "here": [2, 3, 4, 8, 10, 14], "accordingli": 2, "In": [2, 4, 5, 6, 9, 11, 14], "packag": [2, 6], "call": [2, 5, 13], "bumpver": 2, "twine": 2, "These": [2, 11], "instal": [2, 6], "pip": [2, 7], "first": [2, 5, 6, 11], "pull": 2, "make": [2, 3, 5, 7, 9], "sure": 2, "have": [2, 4, 5, 11, 14], "remot": 2, "cahng": 2, "merg": 2, "conflict": 2, "chang": [2, 5, 6, 11], "commit": 2, "Then": [2, 14], "command": [2, 4, 14], "patch": 2, "m": [2, 5, 10], "upload": 2, "dist": 2, "zigzag_ds": 2, "x": [2, 5], "y": [2, 5], "z": [2, 5], "whl": 2, "dse": [2, 6, 7], "tar": 2, "gz": 2, "provid": [2, 4, 5, 6, 7, 8, 11, 12, 14], "sever": 2, "differ": [2, 4, 5, 6, 9, 11, 14], "There": [2, 5, 9], "mani": [2, 5], "public": [2, 6], "relat": 2, "page": [2, 6], "allow": [2, 5, 8, 11], "everyon": 2, "get": [2, 6, 7], "familiar": 2, "more": [2, 3, 4, 5, 7, 11, 12, 14], "about": [2, 9, 11], "implement": 2, "ad": [2, 5, 8], "mandatori": 2, "what": [2, 5, 8, 9, 11], "doe": [2, 5], "achiev": [2, 5], "newli": 2, "explicit": 2, "resid": [2, 11, 13], "doc": 2, "folder": [2, 11], "restructuredtext": 2, "rst": 2, "decid": 2, "would": [2, 14], "best": [2, 11], "fit": 2, "exist": [2, 11], "one": [2, 4, 5, 11], "If": [2, 5, 7, 9, 11, 14], "creat": [2, 8, 13], "lower": [2, 5, 11], "case": [2, 3, 6, 14], "letter": [2, 14], "hyphen": 2, "between": [2, 4, 6, 14], "word": [2, 5], "after": [2, 5, 7, 11], "need": [2, 4, 5, 8, 14], "add": [2, 3, 5, 7, 14], "toctre": 2, "index": [2, 6], "same": [2, 3, 5], "webpag": 2, "sphinx": 2, "should": [2, 5, 8, 9, 14], "both": [2, 3, 5], "press": 2, "theme": 2, "easi": [2, 9], "through": [2, 4, 5, 6, 7, 8, 10, 11, 14], "requir": [2, 4, 5, 7, 8, 9, 11, 14], "txt": [2, 7], "cd": 2, "r": [2, 5, 7], "simpli": [2, 11], "b": [2, 5, 14], "html": 2, "entri": [2, 8], "point": [2, 6], "guidlin": 2, "paramet": [2, 5, 11], "constructor": 2, "download": 2, "describ": [2, 5, 14], "successfulli": 2, "configur": [2, 10], "done": 2, "either": [2, 5], "gui": 2, "conf": 2, "find": [3, 4, 6, 11], "plan": 3, "oper": [3, 8, 11], "ancestor": 3, "layernod": [3, 14], "dummynod": [3, 14], "fix": 3, "loop": [3, 10, 11, 14], "multi": [3, 6], "dimension": 3, "unrol": [3, 5], "fraction": 3, "account": [3, 11, 14], "bandwidth": [3, 5], "loma": [3, 4, 10, 11], "memoryalloc": 3, "besid": [3, 4, 5, 11], "capac": [3, 5], "lpf": 3, "limit": [3, 10], "visualis": 3, "tutori": 3, "remak": 3, "tabl": [3, 5], "without": 3, "df": [3, 5], "stage": [3, 4, 6, 9, 12], "stack": 3, "combin": [3, 5, 8, 9, 11], "common": [3, 5], "versatil": 4, "tool": 4, "estim": [4, 6], "dl": [4, 6], "design": [4, 5, 6, 11], "multitud": 4, "set": [4, 11], "As": [4, 11], "step": [4, 11], "nn": [4, 5, 14], "onto": [4, 6, 8], "go": [4, 5, 13], "alexnet": 4, "ha": [4, 5, 11, 12, 14], "been": 4, "shape": 4, "infer": [4, 5], "mean": [4, 5, 11], "tensor": [4, 5, 14], "intermedi": [4, 5, 14], "inform": [4, 5, 8, 9, 11, 12, 14], "know": [4, 5, 8, 9, 14], "correctli": [4, 5, 14], "tpu": [4, 5], "like": [4, 11, 14], "tpu_lik": 4, "py": [4, 8, 11, 14], "must": [4, 11], "suggest": 4, "resourc": [4, 6, 8], "alexnet_on_tpu_lik": 4, "gener": [4, 5, 6, 8, 9, 11, 12, 13], "ran": 4, "main": [4, 5, 7, 9, 14], "pars": [4, 11, 14], "contain": [4, 8, 14], "program": 4, "flow": [4, 11], "document": [4, 7, 11, 12], "main_onnx": [4, 14], "note": [4, 9], "construct": [4, 5], "becaus": 4, "object": [4, 5, 9, 11, 13, 14], "respect": [4, 5, 9], "modul": [4, 6], "other": [4, 5, 11, 14], "also": [4, 5, 7, 8, 9, 11, 14], "see": [4, 9, 14], "section": [4, 5, 9, 11], "manual": [4, 5, 6, 8, 11], "definit": [4, 8, 9, 11], "resnet18": [4, 8, 14], "salsa": [4, 11], "search": [4, 6], "engin": [4, 6, 11], "util": [4, 9, 13], "schedul": [4, 5, 6, 11], "than": [4, 11], "main_onnx_salsa": 4, "dure": 4, "save": [4, 9], "depend": [4, 7, 14], "total": [4, 5, 11], "five": [4, 12], "each": [4, 5, 9, 11, 13, 14], "node": [4, 8, 9, 11], "onnxmodelparserstag": [4, 8, 11, 14], "wa": 4, "minimallatencystag": [4, 11], "refer": [4, 14], "introduc": 5, "concept": [5, 11], "well": 5, "known": 5, "start": [5, 6, 7, 11], "smallest": 5, "build": [5, 12, 14], "block": [5, 12, 13], "work": [5, 9], "our": [5, 11], "up": [5, 11], "toward": [5, 10], "summat": 5, "accumul": 5, "across": [5, 10, 11], "data": [5, 9, 11], "activ": 5, "train": 5, "weight": [5, 14], "typic": [5, 8], "multipli": 5, "two": [5, 9], "element": [5, 11], "attribut": [5, 9, 14], "input_precis": 5, "list": [5, 11, 13, 14], "precis": [5, 14], "bit": [5, 14], "output_precis": 5, "e": [5, 8, 10, 11, 13, 14], "g": [5, 8, 11, 13], "sum": [5, 11], "energy_cost": 5, "singl": [5, 11], "area": [5, 10], "overhead": 5, "inferenc": 5, "million": 5, "parallel": [5, 8, 14], "significantli": 5, "speed": 5, "comput": [5, 6, 8, 10, 14], "increas": 5, "effici": 5, "cover": 5, "later": [5, 11], "dimens": [5, 11, 14], "size": [5, 14], "explain": [5, 9, 11], "introduct": 5, "operational_unit": 5, "built": 5, "dictionari": [5, 8, 14], "kei": [5, 8], "being": [5, 11], "identifi": 5, "d1": 5, "d2": 5, "valu": [5, 11, 14], "along": 5, "store": 5, "attach": 5, "hierarch": 5, "fashion": 5, "big": 5, "term": 5, "write": [5, 8], "read": [5, 14], "its": [5, 7, 9, 11], "port": 5, "r_bw": 5, "w_bw": 5, "per": 5, "r_cost": 5, "w_cost": 5, "r_port": 5, "w_port": 5, "rw_port": 5, "address": 5, "receiv": [5, 11], "correspond": [5, 11], "For": [5, 11, 13, 14], "now": 5, "assum": [5, 14], "1": [5, 10, 13], "prefetch": 5, "behavior": 5, "thank": 5, "determinist": 5, "dataflow": [5, 10], "min_r_granular": 5, "min_w_granular": 5, "minim": [5, 11], "granular": 5, "better": 5, "half": 5, "quarter": 5, "pattern": [5, 11], "wordlength": 5, "256": 5, "100": 5, "128": 5, "approximatlli": 5, "onli": [5, 9, 11, 14], "50": 5, "spec": [5, 7], "encod": [5, 8], "interconnect": [5, 11], "add_memori": [5, 13], "where": [5, 11, 13, 14], "connect": [5, 11], "higher": [5, 11], "To": [5, 11], "anoth": [5, 11], "decoupl": 5, "algorithm": [5, 6, 8, 10, 14], "side": [5, 14], "oppos": 5, "w": [5, 8, 10], "think": [5, 11], "virtual": [5, 14], "actual": [5, 14], "memory_operand_link": [5, 8, 14], "similarli": 5, "form": 5, "accompani": 5, "served_dimens": 5, "serv": [5, 11], "hot": 5, "tupl": [5, 11], "2": [5, 13], "3": [5, 7], "4": [5, 10], "four": 5, "none": [5, 14], "0": 5, "12": [5, 13], "them": [5, 11], "lastli": 5, "assign": 5, "movement": 5, "possibl": [5, 14], "type": [5, 12, 14], "fh": 5, "th": 5, "low": 5, "fl": 5, "tl": 5, "written": 5, "current": [5, 9], "out": 5, "At": 5, "time": [5, 8], "syntax": 5, "port_typ": 5, "_port_": 5, "port_numb": 5, "rw": 5, "equal": 5, "altern": [5, 7, 14], "default": [5, 8, 11], "intern": [5, 7, 10, 11], "memoryhierarchi": [5, 13], "extend": 5, "networkx": 5, "digraph": 5, "so": [5, 11, 14], "operational_arrai": 5, "new": [5, 6, 11], "memorylevel": 5, "graph": [5, 11, 14], "memory_inst": 5, "memoryinst": [5, 13], "port_alloc": 5, "direction": 5, "abov": 5, "togeth": [5, 14], "id": [5, 8, 14], "memory_hierarchi": 5, "core_set": 5, "compris": 5, "global_buff": 5, "share": 5, "un": 5, "repositori": [5, 7], "5": 5, "dnn": [5, 10], "meta": 5, "prototyp": 5, "edg": [5, 14], "ascend": 5, "tesla": 5, "npu": 5, "depth": [5, 6], "research": 5, "fair": 5, "relev": [5, 9], "comparison": 5, "normal": 5, "1024": [5, 14], "mac": 5, "maxim": 5, "2mb": 5, "global": 5, "buffer": 5, "gb": 5, "kept": 5, "local": 5, "shown": 5, "idx": 5, "7": 5, "9": 5, "variant": 5, "everi": [5, 8], "chip": 5, "denot": 5, "end": [5, 7, 11], "6": [5, 10, 11], "8": [5, 7, 10], "10": [5, 10], "k": [5, 10, 13, 14], "channel": [5, 14], "c": [5, 14], "ox": [5, 14], "oi": [5, 14], "featur": 5, "fx": [5, 14], "fy": [5, 13, 14], "h": [5, 10], "sumbul": [5, 10], "t": [5, 8, 10, 14], "f": 5, "wu": [5, 10], "li": 5, "sarwar": 5, "koven": 5, "murphi": 5, "trotzki": 5, "cai": 5, "ansari": 5, "d": [5, 10], "morri": 5, "liu": [5, 10], "kim": 5, "beign": [5, 10], "lab": 5, "system": [5, 10, 11], "integr": [5, 10], "vr": 5, "custom": [5, 7, 8, 14], "power": 5, "7nm": 5, "technologi": 5, "codec": 5, "avatar": 5, "2022": [5, 10], "ieee": [5, 10], "circuit": [5, 10], "confer": [5, 10], "cicc": 5, "pp": [5, 10], "01": 5, "08": 5, "n": [5, 10], "p": [5, 10], "jouppi": 5, "young": 5, "patil": 5, "patterson": 5, "agraw": 5, "bajwa": 5, "bate": 5, "bhatia": 5, "boden": 5, "borcher": 5, "boyl": 5, "l": [5, 10], "cantin": 5, "chao": 5, "clark": 5, "j": 5, "coriel": 5, "dalei": 5, "dau": 5, "dean": 5, "gelb": 5, "v": [5, 10], "ghaemmaghami": 5, "gottipati": 5, "gulland": 5, "hagmann": 5, "ho": 5, "hogberg": 5, "hu": 5, "hundt": 5, "hurt": 5, "ibarz": 5, "jaffei": 5, "jaworski": 5, "kaplan": 5, "khaitan": 5, "killebrew": 5, "koch": 5, "kumar": 5, "laci": 5, "laudon": 5, "law": 5, "le": 5, "leari": 5, "luck": 5, "lundin": 5, "mackean": 5, "maggior": 5, "mahoni": 5, "miller": 5, "nagarajan": 5, "narayanaswami": 5, "ni": 5, "nix": 5, "norri": 5, "omernick": 5, "penukonda": 5, "phelp": 5, "ross": 5, "salek": 5, "samadiani": 5, "severn": 5, "sizikov": 5, "snelham": 5, "souter": 5, "steinberg": 5, "swing": 5, "tan": 5, "thorson": 5, "tian": 5, "toma": 5, "tuttl": 5, "vasudevan": 5, "walter": 5, "wang": 5, "wilcox": 5, "yoon": 5, "datacent": 5, "analysi": 5, "process": [5, 11], "sigarch": 5, "archit": 5, "vol": [5, 10], "45": 5, "jun": 5, "2017": 5, "yazdanbakhsh": 5, "seshadri": 5, "akin": 5, "convolut": [5, 8, 14], "arxiv": [5, 10], "print": [5, 10, 13], "2102": 5, "10423": 5, "feb": 5, "2021": [5, 10], "liao": 5, "tu": 5, "xia": 5, "zhou": 5, "yuan": 5, "scalabl": 5, "unifi": 5, "ubiquit": 5, "deep": [5, 6, 10], "industri": 5, "track": 5, "paper": [5, 10, 14], "symposium": [5, 10], "hpca": [5, 10], "789": 5, "801": 5, "talp": 5, "sarma": 5, "venkataramanan": 5, "bannon": 5, "mcgee": 5, "floer": 5, "jalot": 5, "hsiong": 5, "arora": 5, "gorti": 5, "sachdev": 5, "solut": 5, "full": 5, "self": [5, 9], "drive": 5, "micro": 5, "40": 5, "25": 5, "35": 5, "2020": [5, 10], "space": [6, 11], "explor": [6, 11], "learn": 6, "bridg": 6, "gap": 6, "decis": 6, "special": 6, "fast": [6, 10], "accur": 6, "analyt": [6, 10], "crucial": 6, "part": [6, 8], "clone": 6, "analyz": [6, 10], "api": [6, 7, 13], "get_hardware_performance_zigzag": 6, "visual": [6, 12], "futur": 6, "contribut": [6, 14], "guidelin": [6, 14], "upgrad": 6, "develop": 6, "idea": 6, "explan": 6, "studi": 6, "extens": 6, "cross": 6, "fuse": 6, "code": [6, 13], "re": 7, "interest": [7, 11], "modif": [7, 9], "directli": 7, "venv": 7, "conda": 7, "environ": 7, "look": [7, 11], "want": [7, 8, 11, 14], "git": 7, "com": 7, "kuleuven": 7, "mica": 7, "http": 7, "anaconda": 7, "argument": [7, 11], "autom": [8, 10], "some": [8, 11, 14], "aspect": [8, 9, 11], "interfac": 8, "core_alloc": [8, 14], "spatial_map": [8, 9, 14], "strategi": [8, 14], "spatialmappinggeneratorstag": [8, 11, 14], "hierarchi": [8, 9, 11, 13], "o": [8, 14], "extra": [8, 11], "flexibl": 8, "scheme": 8, "don": 8, "put": 8, "safe": 8, "bet": 8, "copi": [8, 11], "exact": 8, "detect": 8, "interpret": 9, "predefin": 9, "costmodelevalu": [9, 11, 13], "knowledg": 9, "irrelev": 9, "handl": 9, "complexhandl": 9, "insid": [9, 11, 14], "represent": [9, 11], "invok": 9, "pass": 9, "__simplejsonrepr__": 9, "convert": [9, 11, 14], "off": [9, 10], "load": [9, 14], "reli": 9, "def": 9, "simpl": [9, 11], "energy_tot": 9, "latency_total2": 9, "standard": 9, "filename_pattern": [9, 11], "lose": 9, "etc": [9, 11], "concern": 9, "__jsonrepr__": 9, "temporal_map": 9, "mem_utili_shar": 9, "word_access": 9, "memory_word_access": 9, "operational_energi": 9, "mac_energi": 9, "memory_energi": 9, "mem_energi": 9, "energy_breakdown_per_level": 9, "energy_breakdown": 9, "energy_breakdown_per_level_per_operand": 9, "energy_breakdown_furth": 9, "latency_without_onloading_without_offload": 9, "latency_total0": 9, "latency_with_onloading_without_offload": 9, "latency_total1": 9, "latency_with_onloading_with_offload": 9, "goal": [9, 11], "straightforward": 9, "care": 9, "certain": 9, "modifi": [9, 11], "parser": 9, "pointer": 10, "mei": 10, "houshmand": 10, "jain": 10, "giraldo": 10, "verhelst": 10, "enlarg": 10, "joint": 10, "transact": 10, "70": 10, "1160": 10, "1174": 10, "aug": 10, "doi": 10, "1109": 10, "tc": 10, "3059962": 10, "uniform": 10, "divers": 10, "test": 10, "europ": 10, "exhibit": 10, "date": 10, "antwerp": 10, "belgium": 10, "220": 10, "225": 10, "23919": 10, "date54114": 10, "9774728": 10, "slide": 10, "video": 10, "symon": 10, "base": [10, 11], "3rd": 10, "artifici": 10, "intellig": 10, "aica": 10, "washington": 10, "dc": 10, "usa": 10, "aicas51828": 10, "9458493": 10, "coseman": 10, "papista": 10, "bhattacharje": 10, "deback": 10, "mallik": 10, "verkest": 10, "opportun": 10, "emerg": 10, "analog": 10, "electron": 10, "devic": 10, "meet": 10, "iedm": 10, "san": 10, "francisco": 10, "ca": 10, "29": 10, "iedm13553": 10, "9372006": 10, "accuraci": 10, "trade": 10, "contemporari": 10, "9458553": 10, "colleman": 10, "verelst": 10, "tuytelaar": 10, "processor": 10, "dynam": 10, "ifip": 10, "29th": 10, "veri": 10, "larg": [10, 14], "scale": 10, "vlsi": 10, "soc": 10, "singapor": 10, "soc53125": 10, "9607013": 10, "zhu": 10, "sun": 10, "mobil": 10, "transform": 10, "4th": 10, "incheon": 10, "korea": 10, "republ": 10, "142": 10, "145": 10, "aicas54282": 10, "9869945": 10, "goetschalckx": 10, "enabl": 10, "2023": 10, "karl": 10, "heterogen": 10, "exploit": 10, "fine": 10, "grain": 10, "48550": 10, "2212": 10, "10612": 10, "fasfou": 10, "genet": 10, "date56975": 10, "10137070": 10, "modularli": 11, "easili": 11, "adapt": 11, "sequenc": 11, "determin": 11, "mainstag": 11, "initi": 11, "acceleratorparserstag": 11, "simplesavestag": 11, "workloadstag": 11, "sm": 11, "lomastag": 11, "tm": 11, "costmodelstag": 11, "accelerator_path": 11, "arg": 11, "onnx_model_path": 11, "mapping_path": 11, "loma_lpf_limit": 11, "loma_show_progress_bar": 11, "true": [11, 14], "show": [11, 13], "progress": 11, "bar": [11, 13], "while": 11, "over": 11, "similar": 11, "those": 11, "pipelin": [11, 14], "remain": 11, "said": 11, "further": 11, "label": 11, "below": 11, "fed": 11, "far": 11, "discuss": 11, "last": 11, "revers": 11, "hold": 11, "finish": 11, "conbim": 11, "yield": 11, "chain": 11, "manipul": 11, "invoc": 11, "lowest": 11, "still": 11, "miss": 11, "__init__": 11, "workloadparserstag": 11, "workload_path": 11, "generalparameteriteratorstag": 11, "whose": 11, "predetermin": 11, "plottemporalmappingsstag": 11, "substag": 11, "keep": 11, "minimalenergystag": 11, "list_of_cal": 11, "minimaledpstag": 11, "sumstag": 11, "listifystag": 11, "instead": [11, 14], "removeextrainfostag": 11, "strip": 11, "info": 11, "subcal": 11, "cachebeforeyieldstag": 11, "cach": 11, "break": 11, "top": [11, 13], "bottom": [11, 13], "skipifdumpexistsstag": 11, "check": 11, "alreadi": 11, "skip": 11, "multiprocessingspawnstag": 11, "multiprocess": 11, "multiprocessinggatherstag": 11, "completesavestag": 11, "picklesavestag": 11, "dumpstag": 11, "salsastag": 11, "simul": 11, "anneal": 11, "temporalorderingconversionstag": 11, "spatialmappingconversionstag": 11, "auser": 11, "arrai": 11, "present": [11, 14], "inner": [11, 13], "most": [11, 13], "config": 11, "searchunusedmemorystag": 11, "instanc": 11, "usag": 11, "next": 11, "place": 11, "befor": 11, "workload_data_always_from_top_mem": 11, "fals": [11, 14], "final": [11, 14], "entir": 11, "highest": 11, "travel": 11, "removeunusedmemorystag": 11, "remov": 11, "unus": 11, "accord": 11, "let": 11, "sai": 11, "metric": 11, "easiest": 11, "intend": 11, "behaviour": 11, "guarante": 11, "correct": 11, "taken": 11, "inherit": 11, "abstract": 11, "callabl": 11, "kwarg": 11, "second": 11, "extra_info": 11, "reduct": 11, "statement": 11, "outsid": 11, "happen": 11, "regard": 12, "major": 12, "compon": 12, "termin": 13, "pickle_load": 13, "print_map": 13, "layernode_0": 13, "i2": 13, "i1": 13, "dram": 13, "outer": 13, "innermost": 13, "match": 13, "plot": 13, "bar_plot_cost_model_evaluations_breakdown": 13, "plot_cm": 13, "jpg": 13, "produc": 13, "chart": 13, "recommend": 14, "context": 14, "ml": 14, "often": 14, "recogn": 14, "complet": 14, "conv": 14, "qlinearconv": 14, "matmul": 14, "gemm": 14, "accelerat": 14, "incur": 14, "zero": 14, "feel": 14, "free": 14, "open": 14, "issu": 14, "yourself": 14, "rather": 14, "avoid": 14, "origin": 14, "discard": 14, "doesn": 14, "do": 14, "onnx_model": 14, "modelproto": 14, "my_model_with_internal_data": 14, "save_model": 14, "save_as_external_data": 14, "all_tensors_to_one_fil": 14, "locat": 14, "external_data_filenam": 14, "size_threshold": 14, "convert_attribut": 14, "raw": 14, "specif": 14, "directori": 14, "shape_infer": 14, "my_model": 14, "inferred_model": 14, "infer_shap": 14, "my_inferred_model": 14, "moreov": 14, "repres": 14, "equat": 14, "small": 14, "wherea": 14, "alwai": 14, "freeli": 14, "dimension_rel": 14, "relationship": 14, "stride": 14, "filter": 14, "dilat": 14, "rate": 14, "loop_dim_s": 14, "left": 14, "hand": 14, "operand_precis": 14, "partial": 14, "o_fin": 14, "operand_sourc": 14, "come": 14, "constant_operand": 14, "constant": 14, "prior": 14, "readm": 14, "notat": 14, "batch": 14, "row": 14, "column": 14, "kernel": 14}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"zigzag": [0, 2, 6, 7, 10], "api": 0, "get_hardware_performance_zigzag": 0, "code": [1, 2], "document": [1, 2, 3, 6], "contribut": 2, "guidelin": 2, "upgrad": 2, "project": 2, "version": 2, "develop": 2, "write": 2, "new": [2, 10], "part": 2, "gener": [2, 10], "build": 2, "local": 2, "which": 2, "support": [2, 10, 14], "doxygen": 2, "futur": 3, "chang": 3, "framework": 3, "get": 4, "start": 4, "first": [4, 10], "run": 4, "analyz": 4, "result": [4, 11], "hardwar": [5, 11], "architectur": 5, "oper": [5, 14], "unit": 5, "arrai": 5, "memori": 5, "instanc": 5, "hierarchi": 5, "core": [5, 10], "hw": 5, "acceler": 5, "model": [5, 10, 11, 14], "exampl": 5, "specif": 5, "set": 5, "refer": 5, "welcom": 6, "": [6, 14], "content": 6, "indic": 6, "tabl": 6, "instal": 7, "packag": 7, "manual": [7, 14], "clone": 7, "prerequisit": 7, "map": [8, 10, 11, 13], "user": [8, 12], "defin": 8, "constraint": 8, "output": 9, "simplesavestag": 9, "completesavestag": 9, "creat": [9, 11], "custom": [9, 11], "savestag": 9, "public": 10, "The": [10, 11], "idea": 10, "detail": 10, "latenc": [10, 13], "explan": 10, "tempor": [10, 11, 13], "search": 10, "engin": 10, "differ": 10, "design": 10, "space": 10, "explor": 10, "case": 10, "studi": 10, "extens": 10, "cross": 10, "layer": [10, 14], "depth": 10, "schedul": 10, "multi": 10, "fuse": 10, "stage": 11, "introduct": 11, "main": 11, "entri": 11, "point": 11, "sequenti": 11, "call": 11, "back": 11, "pass": 11, "implement": 11, "input": 11, "parser": 11, "iter": 11, "plot": 11, "reduc": 11, "optim": 11, "save": [11, 14], "dump": 11, "spatial": 11, "cost": 11, "modif": 11, "your": [11, 14], "guid": 12, "visual": 13, "loop": 13, "o": 13, "w": 13, "i": 13, "ox": 13, "0": 13, "14": 13, "sram_2mb": 13, "sram_32kb": 13, "oi": 13, "7": 13, "fx": 13, "11": 13, "rf_2b": 13, "energi": 13, "breakdown": 13, "workload": 14, "onnx": 14, "extern": 14, "data": 14, "infer": 14, "an": 14, "shape": 14, "definit": 14}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"ZigZag API": [[0, "zigzag-api"]], "get_hardware_performance_zigzag()": [[0, "get-hardware-performance-zigzag"]], "Code Documentation": [[1, "code-documentation"]], "Contribute": [[2, "contribute"]], "Contributing guidelines": [[2, "contributing-guidelines"]], "Upgrading the project version (for ZigZag developers)": [[2, "upgrading-the-project-version-for-zigzag-developers"]], "Documentation": [[2, "documentation"], [3, "documentation"]], "Writing new parts for the general documentation": [[2, "writing-new-parts-for-the-general-documentation"]], "Building the general documentation locally": [[2, "building-the-general-documentation-locally"]], "Writing code which supports the code documentation with Doxygen": [[2, "writing-code-which-supports-the-code-documentation-with-doxygen"]], "Building the code documentation locally": [[2, "building-the-code-documentation-locally"]], "Future changes": [[3, "future-changes"]], "Framework": [[3, "framework"]], "Getting Started": [[4, "getting-started"]], "First run": [[4, "first-run"]], "Analyzing results": [[4, "analyzing-results"]], "Hardware Architecture": [[5, "hardware-architecture"]], "Operational Unit": [[5, "operational-unit"]], "Operational Array": [[5, "operational-array"]], "Memory Instance": [[5, "memory-instance"]], "Memory Hierarchy": [[5, "memory-hierarchy"]], "Core": [[5, "core"]], "HW Accelerator Model": [[5, "hw-accelerator-model"]], "Modelled examples": [[5, "modelled-examples"]], "Specific settings": [[5, "specific-settings"]], "References": [[5, "references"]], "Welcome to ZigZag\u2019s documentation!": [[6, "welcome-to-zigzag-s-documentation"]], "Contents:": [[6, null]], "Indices and tables": [[6, "indices-and-tables"]], "Installing ZigZag": [[7, "installing-zigzag"]], "Installing as a package": [[7, "installing-as-a-package"]], "Manual clone": [[7, "manual-clone"]], "Prerequisites": [[7, "prerequisites"]], "Installation": [[7, "installation"]], "Mapping": [[8, "mapping"]], "User-defined mapping constraints": [[8, "user-defined-mapping-constraints"]], "Outputs": [[9, "outputs"]], "SimpleSaveStage": [[9, "simplesavestage"]], "CompleteSaveStage": [[9, "completesavestage"]], "Creating a custom SaveStage": [[9, "creating-a-custom-savestage"]], "Publications": [[10, "publications"]], "The general idea of ZigZag": [[10, "the-general-idea-of-zigzag"]], "Detailed latency model explanation": [[10, "detailed-latency-model-explanation"]], "The new temporal mapping search engine": [[10, "the-new-temporal-mapping-search-engine"]], "Different design space exploration case studies": [[10, "different-design-space-exploration-case-studies"]], "Extension to support cross-layer depth-first scheduling": [[10, "extension-to-support-cross-layer-depth-first-scheduling"]], "Extension to support multi-core layer-fused scheduling": [[10, "extension-to-support-multi-core-layer-fused-scheduling"]], "Stages": [[11, "stages"]], "Introduction": [[11, "introduction"]], "The main entry point": [[11, "the-main-entry-point"]], "The sequential call of stages": [[11, "the-sequential-call-of-stages"]], "The back passing of results": [[11, "the-back-passing-of-results"]], "Implemented stages": [[11, "implemented-stages"]], "Input parser stages": [[11, "input-parser-stages"]], "Iterator stage": [[11, "iterator-stage"]], "Plot stages": [[11, "plot-stages"]], "Reduce stages": [[11, "reduce-stages"]], "Optimization stages": [[11, "optimization-stages"]], "Save and dump stages": [[11, "save-and-dump-stages"]], "Temporal mapping stages": [[11, "temporal-mapping-stages"]], "Spatial mapping stages": [[11, "spatial-mapping-stages"]], "Cost model stages": [[11, "cost-model-stages"]], "Hardware modification stages": [[11, "hardware-modification-stages"]], "Creating your custom stage": [[11, "creating-your-custom-stage"]], "User Guide": [[12, "user-guide"]], "Visualization": [[13, "visualization"]], "Temporal mapping": [[13, "temporal-mapping"]], "Temporal Loops O W I": [[13, "temporal-loops-o-w-i"]], "for OX in [0:14) sram_2MB sram_32KB sram_2MB": [[13, "for-ox-in-0-14-sram-2mb-sram-32kb-sram-2mb"]], "for OY in [0:7) sram_2MB sram_32KB sram_2MB": [[13, "for-oy-in-0-7-sram-2mb-sram-32kb-sram-2mb"]], "for FX in [0:11) rf_2B sram_32KB sram_2MB": [[13, "for-fx-in-0-11-rf-2b-sram-32kb-sram-2mb"]], "Energy and latency breakdown": [[13, "energy-and-latency-breakdown"]], "Workload": [[14, "workload"]], "Onnx models": [[14, "onnx-models"]], "Supported onnx operators": [[14, "supported-onnx-operators"]], "Saving your onnx model with external data": [[14, "saving-your-onnx-model-with-external-data"]], "Inferring an onnx model\u2019s shapes": [[14, "inferring-an-onnx-model-s-shapes"]], "Manual layer definition": [[14, "manual-layer-definition"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "code-documentation", "contribute", "future", "getting-started", "hardware", "index", "installation", "mapping", "outputs", "publications", "stages", "user-guide", "visualization", "workload"], "filenames": ["api.rst", "code-documentation.rst", "contribute.rst", "future.rst", "getting-started.rst", "hardware.rst", "index.rst", "installation.rst", "mapping.rst", "outputs.rst", "publications.rst", "stages.rst", "user-guide.rst", "visualization.rst", "workload.rst"], "titles": ["ZigZag API", "Code Documentation", "Contribute", "Future changes", "Getting Started", "Hardware Architecture", "Welcome to ZigZag\u2019s documentation!", "Installing ZigZag", "Mapping", "Outputs", "Publications", "Stages", "User Guide", "Visualization", "Workload"], "terms": {"onc": [0, 7], "i": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "avail": [0, 2, 5, 7], "your": [0, 2, 7, 8], "python": [0, 2, 4, 5, 7, 14], "path": [0, 4, 14], "you": [0, 2, 3, 4, 5, 7, 8, 9, 11, 14], "can": [0, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14], "import": [0, 2, 4, 5, 13, 14], "ani": [0, 2, 5, 7, 11], "file": [0, 2, 4, 5, 7, 8, 9, 11, 14], "from": [0, 5, 11, 13, 14], "thi": [0, 1, 2, 4, 5, 6, 8, 9, 11, 13, 14], "function": [0, 2, 7, 11, 13], "take": [0, 3, 5, 7, 14], "an": [0, 2, 4, 5, 7, 9, 11], "workload": [0, 4, 6, 8, 11, 12], "hardwar": [0, 4, 6, 8, 12, 14], "architectur": [0, 4, 6, 10, 11, 12], "map": [0, 3, 4, 5, 6, 9, 12], "return": [0, 9, 11], "perform": [0, 5, 10], "execut": [0, 2, 4, 5, 8, 11, 14], "model": [0, 3, 4, 6], "": [0, 2, 3, 4, 5, 8, 10, 11, 13], "layer": [0, 4, 6, 8, 9, 11, 13], "under": [0, 2, 4, 8], "given": [0, 4, 11], "constraint": [0, 4], "energi": [0, 3, 4, 5, 9, 10, 11], "latenc": [0, 3, 4, 5, 6, 9, 11], "cme": [0, 11, 13], "acceler": [0, 4, 6, 8, 9, 10, 11, 14], "opt": 0, "dump_filename_pattern": [0, 4], "output": [0, 4, 5, 6, 11, 12, 13, 14], "datetim": [0, 11], "json": [0, 9, 11], "pickle_filenam": 0, "list_of_cm": [0, 13], "pickl": [0, 11, 13], "The": [0, 1, 2, 4, 5, 6, 8, 9, 12, 13, 14], "input": [0, 3, 4, 5, 8, 9, 14], "ar": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14], "A": [0, 5, 6, 8, 10, 14], "neural": [0, 5, 10], "network": [0, 4, 5, 10], "defin": [0, 4, 5, 9, 10, 11, 14], "onnx": [0, 3, 4, 8, 11], "format": [0, 1, 2, 9], "own": [0, 11, 14], "high": [0, 5, 10], "level": [0, 5, 11, 13], "hw": [0, 3, 4, 6, 8, 11], "descript": [0, 8, 11], "specifi": [0, 5, 9], "core": [0, 4, 6, 8, 11, 13, 14], "alloc": [0, 5, 8, 10, 11, 13], "spatial": [0, 3, 5, 8, 9, 10, 14], "option": [0, 5], "tempor": [0, 3, 4, 6, 9], "order": [0, 2, 3, 5, 10, 11], "memori": [0, 3, 6, 8, 9, 10, 11, 13, 14], "operand": [0, 5, 8, 11, 13, 14], "link": [0, 1, 5, 8, 14], "optim": [0, 4, 6, 10], "target": 0, "It": [0, 4, 9, 11, 14], "edp": [0, 11], "delai": 0, "product": 0, "name": [0, 4, 5, 8, 13, 14], "result": [0, 6, 9, 13], "which": [0, 4, 5, 8, 9, 11, 13, 14], "includ": [0, 2, 3, 5, 9], "all": [0, 2, 4, 5, 9, 11, 14], "detail": [0, 2, 6, 7, 11], "metadata": 0, "analys": 0, "debug": 0, "number": [0, 5, 9], "indic": [0, 14], "overal": 0, "consum": 0, "run": [0, 2, 6, 7, 8, 11], "user": [0, 3, 4, 5, 6, 7, 11], "wai": [0, 1, 2, 4, 5, 9, 11, 13, 14], "cycl": [0, 5], "count": 0, "collect": 0, "cost": [0, 3, 4, 5, 6, 14], "evalu": [0, 5, 11], "stand": 0, "we": [0, 2, 3, 4, 5, 11], "demonstr": [0, 13], "how": [0, 2, 4, 5, 7, 8, 9, 11, 13], "us": [0, 1, 2, 3, 4, 5, 7, 8, 9, 11, 13, 14], "multipl": [0, 5, 6, 10, 11, 13, 14], "demo": 0, "comment": [1, 2], "within": [1, 5, 8, 11, 14], "sourc": [1, 2], "zigzag": [1, 4, 5, 8, 9, 11, 12, 13, 14], "framework": [1, 2, 4, 6, 7, 8, 10, 11, 12, 14], "support": [1, 3, 4, 5, 6, 11], "auto": [1, 5, 10], "doxygen": 1, "automat": [1, 4, 5, 6, 8, 11, 14], "updat": [1, 2, 3, 11], "soon": 1, "somebodi": 1, "push": 1, "someth": 1, "master": 1, "branch": 1, "github": [1, 7, 10], "repo": [1, 14], "project": [1, 6, 10], "follow": [1, 2, 4, 5, 8, 9, 11, 12, 14], "access": [1, 3, 5], "latest": 1, "version": [1, 6, 11], "when": [2, 8, 11, 14], "pleas": [2, 9, 11], "consid": [2, 11], "googl": 2, "style": 2, "guid": [2, 3, 6], "docstr": 2, "class": [2, 3, 11], "method": [2, 5, 9], "exampl": [2, 4, 8, 9, 11, 13, 14], "found": [2, 11, 14], "throughout": 2, "here": [2, 3, 4, 8, 10, 14], "accordingli": 2, "In": [2, 4, 5, 6, 9, 11, 14], "packag": [2, 6], "call": [2, 5, 13], "bumpver": 2, "twine": 2, "These": [2, 11], "instal": [2, 6], "pip": [2, 7], "first": [2, 5, 6, 11], "pull": 2, "make": [2, 3, 5, 7, 9], "sure": 2, "have": [2, 4, 5, 11, 14], "remot": 2, "cahng": 2, "merg": 2, "conflict": 2, "chang": [2, 5, 6, 11], "commit": 2, "Then": [2, 14], "command": [2, 4, 14], "patch": 2, "m": [2, 5, 10], "upload": 2, "dist": 2, "zigzag_ds": 2, "x": [2, 5], "y": [2, 5], "z": [2, 5], "whl": 2, "dse": [2, 6, 7], "tar": 2, "gz": 2, "provid": [2, 4, 5, 6, 7, 8, 11, 12, 14], "sever": 2, "differ": [2, 4, 5, 6, 9, 11, 14], "There": [2, 5, 9], "mani": [2, 5], "public": [2, 6], "relat": 2, "page": [2, 6], "allow": [2, 5, 8, 11], "everyon": 2, "get": [2, 6, 7], "familiar": 2, "more": [2, 3, 4, 5, 7, 11, 12, 14], "about": [2, 9, 11], "implement": 2, "ad": [2, 5, 8], "mandatori": 2, "what": [2, 5, 8, 9, 11], "doe": [2, 5], "achiev": [2, 5], "newli": 2, "explicit": 2, "resid": [2, 11, 13], "doc": 2, "folder": [2, 11], "restructuredtext": 2, "rst": 2, "decid": 2, "would": [2, 14], "best": [2, 11], "fit": 2, "exist": [2, 11], "one": [2, 4, 5, 11], "If": [2, 5, 7, 9, 11, 14], "creat": [2, 8, 13], "lower": [2, 5, 11], "case": [2, 3, 6, 14], "letter": [2, 14], "hyphen": 2, "between": [2, 4, 6, 14], "word": [2, 5], "after": [2, 5, 7, 11], "need": [2, 4, 5, 8, 14], "add": [2, 3, 5, 7, 14], "toctre": 2, "index": [2, 6], "same": [2, 3, 5], "webpag": 2, "sphinx": 2, "should": [2, 5, 8, 9, 14], "both": [2, 3, 5], "press": 2, "theme": 2, "easi": [2, 9], "through": [2, 4, 5, 6, 7, 8, 10, 11, 14], "requir": [2, 4, 5, 7, 8, 9, 11, 14], "txt": [2, 7], "cd": 2, "r": [2, 5, 7], "simpli": [2, 11], "b": [2, 5, 14], "html": 2, "entri": [2, 8], "point": [2, 6], "guidlin": 2, "paramet": [2, 5, 11], "constructor": 2, "download": 2, "describ": [2, 5, 14], "successfulli": 2, "configur": [2, 10], "done": 2, "either": [2, 5], "gui": 2, "conf": 2, "find": [3, 4, 6, 11], "plan": 3, "oper": [3, 8, 11], "ancestor": 3, "layernod": [3, 14], "dummynod": [3, 14], "fix": 3, "loop": [3, 10, 11, 13, 14], "multi": [3, 6], "dimension": 3, "unrol": [3, 5], "fraction": 3, "account": [3, 11, 14], "bandwidth": [3, 5], "loma": [3, 4, 10, 11], "memoryalloc": 3, "besid": [3, 4, 5, 11], "capac": [3, 5], "lpf": 3, "limit": [3, 10], "visualis": 3, "tutori": 3, "remak": 3, "tabl": [3, 5], "without": 3, "df": [3, 5], "stage": [3, 4, 6, 9, 12], "stack": 3, "combin": [3, 5, 8, 9, 11], "common": [3, 5], "versatil": 4, "tool": 4, "estim": [4, 6], "dl": [4, 6], "design": [4, 5, 6, 11], "multitud": 4, "set": [4, 11], "As": [4, 11], "step": [4, 11], "nn": [4, 5, 14], "onto": [4, 6, 8], "go": [4, 5, 13], "alexnet": 4, "ha": [4, 5, 11, 12, 14], "been": 4, "shape": 4, "infer": [4, 5], "mean": [4, 5, 11], "tensor": [4, 5, 14], "intermedi": [4, 5, 14], "inform": [4, 5, 8, 9, 11, 12, 14], "know": [4, 5, 8, 9, 14], "correctli": [4, 5, 14], "tpu": [4, 5], "like": [4, 11, 14], "tpu_lik": 4, "py": [4, 8, 11, 14], "must": [4, 11], "suggest": 4, "resourc": [4, 6, 8], "alexnet_on_tpu_lik": 4, "gener": [4, 5, 6, 8, 9, 11, 12, 13], "ran": 4, "main": [4, 5, 7, 9, 14], "pars": [4, 11, 14], "contain": [4, 8, 14], "program": 4, "flow": [4, 11], "document": [4, 7, 11, 12], "main_onnx": [4, 14], "note": [4, 9], "construct": [4, 5], "becaus": 4, "object": [4, 5, 9, 11, 13, 14], "respect": [4, 5, 9], "modul": [4, 6], "other": [4, 5, 11, 14], "also": [4, 5, 7, 8, 9, 11, 14], "see": [4, 9, 14], "section": [4, 5, 9, 11], "manual": [4, 5, 6, 8, 11], "definit": [4, 8, 9, 11], "resnet18": [4, 8, 14], "salsa": [4, 11], "search": [4, 6], "engin": [4, 6, 11], "util": [4, 9, 13], "schedul": [4, 5, 6, 11], "than": [4, 11], "main_onnx_salsa": 4, "dure": 4, "save": [4, 9], "depend": [4, 7, 14], "total": [4, 5, 11], "five": [4, 12], "each": [4, 5, 9, 11, 13, 14], "node": [4, 8, 9, 11], "onnxmodelparserstag": [4, 8, 11, 14], "wa": 4, "minimallatencystag": [4, 11], "refer": [4, 14], "introduc": 5, "concept": [5, 11], "well": 5, "known": 5, "start": [5, 6, 7, 11], "smallest": 5, "build": [5, 12, 14], "block": [5, 12, 13], "work": [5, 9], "our": [5, 11], "up": [5, 11], "toward": [5, 10], "summat": 5, "accumul": 5, "across": [5, 10, 11], "data": [5, 9, 11], "activ": 5, "train": 5, "weight": [5, 14], "typic": [5, 8], "multipli": 5, "two": [5, 9], "element": [5, 11], "attribut": [5, 9, 14], "input_precis": 5, "list": [5, 11, 13, 14], "precis": [5, 14], "bit": [5, 14], "output_precis": 5, "e": [5, 8, 10, 11, 13, 14], "g": [5, 8, 11, 13], "sum": [5, 11], "energy_cost": 5, "singl": [5, 11], "area": [5, 10], "overhead": 5, "inferenc": 5, "million": 5, "parallel": [5, 8, 14], "significantli": 5, "speed": 5, "comput": [5, 6, 8, 10, 14], "increas": 5, "effici": 5, "cover": 5, "later": [5, 11], "dimens": [5, 11, 14], "size": [5, 14], "explain": [5, 9, 11], "introduct": 5, "operational_unit": 5, "built": 5, "dictionari": [5, 8, 14], "kei": [5, 8], "being": [5, 11], "identifi": 5, "d1": 5, "d2": 5, "valu": [5, 11, 14], "along": 5, "store": 5, "attach": 5, "hierarch": 5, "fashion": 5, "big": 5, "term": 5, "write": [5, 8], "read": [5, 14], "its": [5, 7, 9, 11], "port": 5, "r_bw": 5, "w_bw": 5, "per": 5, "r_cost": 5, "w_cost": 5, "r_port": 5, "w_port": 5, "rw_port": 5, "address": 5, "receiv": [5, 11], "correspond": [5, 11], "For": [5, 11, 13, 14], "now": 5, "assum": [5, 14], "1": [5, 10, 13], "prefetch": 5, "behavior": 5, "thank": 5, "determinist": 5, "dataflow": [5, 10], "min_r_granular": 5, "min_w_granular": 5, "minim": [5, 11], "granular": 5, "better": 5, "half": 5, "quarter": 5, "pattern": [5, 11], "wordlength": 5, "256": 5, "100": 5, "128": 5, "approximatlli": 5, "onli": [5, 9, 11, 14], "50": 5, "spec": [5, 7], "encod": [5, 8], "interconnect": [5, 11], "add_memori": [5, 13], "where": [5, 11, 13, 14], "connect": [5, 11], "higher": [5, 11], "To": [5, 11], "anoth": [5, 11], "decoupl": 5, "algorithm": [5, 6, 8, 10, 14], "side": [5, 14], "oppos": 5, "w": [5, 8, 10, 13], "think": [5, 11], "virtual": [5, 14], "actual": [5, 14], "memory_operand_link": [5, 8, 14], "similarli": 5, "form": 5, "accompani": 5, "served_dimens": 5, "serv": [5, 11], "hot": 5, "tupl": [5, 11], "2": [5, 13], "3": [5, 7], "4": [5, 10], "four": 5, "none": [5, 14], "0": [5, 13], "12": [5, 13], "them": [5, 11], "lastli": 5, "assign": 5, "movement": 5, "possibl": [5, 14], "type": [5, 12, 14], "fh": 5, "th": 5, "low": 5, "fl": 5, "tl": 5, "written": 5, "current": [5, 9], "out": 5, "At": 5, "time": [5, 8], "syntax": 5, "port_typ": 5, "_port_": 5, "port_numb": 5, "rw": 5, "equal": 5, "altern": [5, 7, 14], "default": [5, 8, 11], "intern": [5, 7, 10, 11], "memoryhierarchi": [5, 13], "extend": 5, "networkx": 5, "digraph": 5, "so": [5, 11, 14], "operational_arrai": 5, "new": [5, 6, 11], "memorylevel": 5, "graph": [5, 11, 14], "memory_inst": 5, "memoryinst": [5, 13], "port_alloc": 5, "direction": 5, "abov": 5, "togeth": [5, 14], "id": [5, 8, 14], "memory_hierarchi": 5, "core_set": 5, "compris": 5, "global_buff": 5, "share": 5, "un": 5, "repositori": [5, 7], "5": 5, "dnn": [5, 10], "meta": 5, "prototyp": 5, "edg": [5, 14], "ascend": 5, "tesla": 5, "npu": 5, "depth": [5, 6], "research": 5, "fair": 5, "relev": [5, 9], "comparison": 5, "normal": 5, "1024": [5, 14], "mac": 5, "maxim": 5, "2mb": 5, "global": 5, "buffer": 5, "gb": 5, "kept": 5, "local": 5, "shown": 5, "idx": 5, "7": [5, 13], "9": 5, "variant": 5, "everi": [5, 8], "chip": 5, "denot": 5, "end": [5, 7, 11], "6": [5, 10, 11], "8": [5, 7, 10], "10": [5, 10], "k": [5, 10, 13, 14], "channel": [5, 14], "c": [5, 14], "ox": [5, 13, 14], "oi": [5, 13, 14], "featur": 5, "fx": [5, 13, 14], "fy": [5, 13, 14], "h": [5, 10], "sumbul": [5, 10], "t": [5, 8, 10, 14], "f": 5, "wu": [5, 10], "li": 5, "sarwar": 5, "koven": 5, "murphi": 5, "trotzki": 5, "cai": 5, "ansari": 5, "d": [5, 10], "morri": 5, "liu": [5, 10], "kim": 5, "beign": [5, 10], "lab": 5, "system": [5, 10, 11], "integr": [5, 10], "vr": 5, "custom": [5, 7, 8, 14], "power": 5, "7nm": 5, "technologi": 5, "codec": 5, "avatar": 5, "2022": [5, 10], "ieee": [5, 10], "circuit": [5, 10], "confer": [5, 10], "cicc": 5, "pp": [5, 10], "01": 5, "08": 5, "n": [5, 10], "p": [5, 10], "jouppi": 5, "young": 5, "patil": 5, "patterson": 5, "agraw": 5, "bajwa": 5, "bate": 5, "bhatia": 5, "boden": 5, "borcher": 5, "boyl": 5, "l": [5, 10], "cantin": 5, "chao": 5, "clark": 5, "j": 5, "coriel": 5, "dalei": 5, "dau": 5, "dean": 5, "gelb": 5, "v": [5, 10], "ghaemmaghami": 5, "gottipati": 5, "gulland": 5, "hagmann": 5, "ho": 5, "hogberg": 5, "hu": 5, "hundt": 5, "hurt": 5, "ibarz": 5, "jaffei": 5, "jaworski": 5, "kaplan": 5, "khaitan": 5, "killebrew": 5, "koch": 5, "kumar": 5, "laci": 5, "laudon": 5, "law": 5, "le": 5, "leari": 5, "luck": 5, "lundin": 5, "mackean": 5, "maggior": 5, "mahoni": 5, "miller": 5, "nagarajan": 5, "narayanaswami": 5, "ni": 5, "nix": 5, "norri": 5, "omernick": 5, "penukonda": 5, "phelp": 5, "ross": 5, "salek": 5, "samadiani": 5, "severn": 5, "sizikov": 5, "snelham": 5, "souter": 5, "steinberg": 5, "swing": 5, "tan": 5, "thorson": 5, "tian": 5, "toma": 5, "tuttl": 5, "vasudevan": 5, "walter": 5, "wang": 5, "wilcox": 5, "yoon": 5, "datacent": 5, "analysi": 5, "process": [5, 11], "sigarch": 5, "archit": 5, "vol": [5, 10], "45": 5, "jun": 5, "2017": 5, "yazdanbakhsh": 5, "seshadri": 5, "akin": 5, "convolut": [5, 8, 14], "arxiv": [5, 10], "print": [5, 10, 13], "2102": 5, "10423": 5, "feb": 5, "2021": [5, 10], "liao": 5, "tu": 5, "xia": 5, "zhou": 5, "yuan": 5, "scalabl": 5, "unifi": 5, "ubiquit": 5, "deep": [5, 6, 10], "industri": 5, "track": 5, "paper": [5, 10, 14], "symposium": [5, 10], "hpca": [5, 10], "789": 5, "801": 5, "talp": 5, "sarma": 5, "venkataramanan": 5, "bannon": 5, "mcgee": 5, "floer": 5, "jalot": 5, "hsiong": 5, "arora": 5, "gorti": 5, "sachdev": 5, "solut": 5, "full": 5, "self": [5, 9], "drive": 5, "micro": 5, "40": 5, "25": 5, "35": 5, "2020": [5, 10], "space": [6, 11], "explor": [6, 11], "learn": 6, "bridg": 6, "gap": 6, "decis": 6, "special": 6, "fast": [6, 10], "accur": 6, "analyt": [6, 10], "crucial": 6, "part": [6, 8], "clone": 6, "analyz": [6, 10], "api": [6, 7, 13], "get_hardware_performance_zigzag": 6, "visual": [6, 12], "futur": 6, "contribut": [6, 14], "guidelin": [6, 14], "upgrad": 6, "develop": 6, "idea": 6, "explan": 6, "studi": 6, "extens": 6, "cross": 6, "fuse": 6, "code": [6, 13], "re": 7, "interest": [7, 11], "modif": [7, 9], "directli": 7, "venv": 7, "conda": 7, "environ": 7, "look": [7, 11], "want": [7, 8, 11, 14], "git": 7, "com": 7, "kuleuven": 7, "mica": 7, "http": 7, "anaconda": 7, "argument": [7, 11], "autom": [8, 10], "some": [8, 11, 14], "aspect": [8, 9, 11], "interfac": 8, "core_alloc": [8, 14], "spatial_map": [8, 9, 14], "strategi": [8, 14], "spatialmappinggeneratorstag": [8, 11, 14], "hierarchi": [8, 9, 11, 13], "o": [8, 13, 14], "extra": [8, 11], "flexibl": 8, "scheme": 8, "don": 8, "put": 8, "safe": 8, "bet": 8, "copi": [8, 11], "exact": 8, "detect": 8, "interpret": 9, "predefin": 9, "costmodelevalu": [9, 11, 13], "knowledg": 9, "irrelev": 9, "handl": 9, "complexhandl": 9, "insid": [9, 11, 14], "represent": [9, 11], "invok": 9, "pass": 9, "__simplejsonrepr__": 9, "convert": [9, 11, 14], "off": [9, 10], "load": [9, 14], "reli": 9, "def": 9, "simpl": [9, 11], "energy_tot": 9, "latency_total2": 9, "standard": 9, "filename_pattern": [9, 11], "lose": 9, "etc": [9, 11], "concern": 9, "__jsonrepr__": 9, "temporal_map": 9, "mem_utili_shar": 9, "word_access": 9, "memory_word_access": 9, "operational_energi": 9, "mac_energi": 9, "memory_energi": 9, "mem_energi": 9, "energy_breakdown_per_level": 9, "energy_breakdown": 9, "energy_breakdown_per_level_per_operand": 9, "energy_breakdown_furth": 9, "latency_without_onloading_without_offload": 9, "latency_total0": 9, "latency_with_onloading_without_offload": 9, "latency_total1": 9, "latency_with_onloading_with_offload": 9, "goal": [9, 11], "straightforward": 9, "care": 9, "certain": 9, "modifi": [9, 11], "parser": 9, "pointer": 10, "mei": 10, "houshmand": 10, "jain": 10, "giraldo": 10, "verhelst": 10, "enlarg": 10, "joint": 10, "transact": 10, "70": 10, "1160": 10, "1174": 10, "aug": 10, "doi": 10, "1109": 10, "tc": 10, "3059962": 10, "uniform": 10, "divers": 10, "test": 10, "europ": 10, "exhibit": 10, "date": 10, "antwerp": 10, "belgium": 10, "220": 10, "225": 10, "23919": 10, "date54114": 10, "9774728": 10, "slide": 10, "video": 10, "symon": 10, "base": [10, 11], "3rd": 10, "artifici": 10, "intellig": 10, "aica": 10, "washington": 10, "dc": 10, "usa": 10, "aicas51828": 10, "9458493": 10, "coseman": 10, "papista": 10, "bhattacharje": 10, "deback": 10, "mallik": 10, "verkest": 10, "opportun": 10, "emerg": 10, "analog": 10, "electron": 10, "devic": 10, "meet": 10, "iedm": 10, "san": 10, "francisco": 10, "ca": 10, "29": 10, "iedm13553": 10, "9372006": 10, "accuraci": 10, "trade": 10, "contemporari": 10, "9458553": 10, "colleman": 10, "verelst": 10, "tuytelaar": 10, "processor": 10, "dynam": 10, "ifip": 10, "29th": 10, "veri": 10, "larg": [10, 14], "scale": 10, "vlsi": 10, "soc": 10, "singapor": 10, "soc53125": 10, "9607013": 10, "zhu": 10, "sun": 10, "mobil": 10, "transform": 10, "4th": 10, "incheon": 10, "korea": 10, "republ": 10, "142": 10, "145": 10, "aicas54282": 10, "9869945": 10, "goetschalckx": 10, "enabl": 10, "2023": 10, "karl": 10, "heterogen": 10, "exploit": 10, "fine": 10, "grain": 10, "48550": 10, "2212": 10, "10612": 10, "fasfou": 10, "genet": 10, "date56975": 10, "10137070": 10, "modularli": 11, "easili": 11, "adapt": 11, "sequenc": 11, "determin": 11, "mainstag": 11, "initi": 11, "acceleratorparserstag": 11, "simplesavestag": 11, "workloadstag": 11, "sm": 11, "lomastag": 11, "tm": 11, "costmodelstag": 11, "accelerator_path": 11, "arg": 11, "onnx_model_path": 11, "mapping_path": 11, "loma_lpf_limit": 11, "loma_show_progress_bar": 11, "true": [11, 14], "show": [11, 13], "progress": 11, "bar": [11, 13], "while": 11, "over": 11, "similar": 11, "those": 11, "pipelin": [11, 14], "remain": 11, "said": 11, "further": 11, "label": 11, "below": 11, "fed": 11, "far": 11, "discuss": 11, "last": 11, "revers": 11, "hold": 11, "finish": 11, "conbim": 11, "yield": 11, "chain": 11, "manipul": 11, "invoc": 11, "lowest": 11, "still": 11, "miss": 11, "__init__": 11, "workloadparserstag": 11, "workload_path": 11, "generalparameteriteratorstag": 11, "whose": 11, "predetermin": 11, "plottemporalmappingsstag": 11, "substag": 11, "keep": 11, "minimalenergystag": 11, "list_of_cal": 11, "minimaledpstag": 11, "sumstag": 11, "listifystag": 11, "instead": [11, 14], "removeextrainfostag": 11, "strip": 11, "info": 11, "subcal": 11, "cachebeforeyieldstag": 11, "cach": 11, "break": 11, "top": [11, 13], "bottom": [11, 13], "skipifdumpexistsstag": 11, "check": 11, "alreadi": 11, "skip": 11, "multiprocessingspawnstag": 11, "multiprocess": 11, "multiprocessinggatherstag": 11, "completesavestag": 11, "picklesavestag": 11, "dumpstag": 11, "salsastag": 11, "simul": 11, "anneal": 11, "temporalorderingconversionstag": 11, "spatialmappingconversionstag": 11, "auser": 11, "arrai": 11, "present": [11, 14], "inner": [11, 13], "most": [11, 13], "config": 11, "searchunusedmemorystag": 11, "instanc": 11, "usag": 11, "next": 11, "place": 11, "befor": 11, "workload_data_always_from_top_mem": 11, "fals": [11, 14], "final": [11, 14], "entir": 11, "highest": 11, "travel": 11, "removeunusedmemorystag": 11, "remov": 11, "unus": 11, "accord": 11, "let": 11, "sai": 11, "metric": 11, "easiest": 11, "intend": 11, "behaviour": 11, "guarante": 11, "correct": 11, "taken": 11, "inherit": 11, "abstract": 11, "callabl": 11, "kwarg": 11, "second": 11, "extra_info": 11, "reduct": 11, "statement": 11, "outsid": 11, "happen": 11, "regard": 12, "major": 12, "compon": 12, "termin": 13, "pickle_load": 13, "print_map": 13, "layernode_0": 13, "11": 13, "14": 13, "i2": 13, "i1": 13, "sram_2mb": 13, "dram": 13, "sram_32kb": 13, "rf_2b": 13, "outer": 13, "innermost": 13, "match": 13, "plot": 13, "bar_plot_cost_model_evaluations_breakdown": 13, "plot_cm": 13, "jpg": 13, "produc": 13, "chart": 13, "recommend": 14, "context": 14, "ml": 14, "often": 14, "recogn": 14, "complet": 14, "conv": 14, "qlinearconv": 14, "matmul": 14, "gemm": 14, "accelerat": 14, "incur": 14, "zero": 14, "feel": 14, "free": 14, "open": 14, "issu": 14, "yourself": 14, "rather": 14, "avoid": 14, "origin": 14, "discard": 14, "doesn": 14, "do": 14, "onnx_model": 14, "modelproto": 14, "my_model_with_internal_data": 14, "save_model": 14, "save_as_external_data": 14, "all_tensors_to_one_fil": 14, "locat": 14, "external_data_filenam": 14, "size_threshold": 14, "convert_attribut": 14, "raw": 14, "specif": 14, "directori": 14, "shape_infer": 14, "my_model": 14, "inferred_model": 14, "infer_shap": 14, "my_inferred_model": 14, "moreov": 14, "repres": 14, "equat": 14, "small": 14, "wherea": 14, "alwai": 14, "freeli": 14, "dimension_rel": 14, "relationship": 14, "stride": 14, "filter": 14, "dilat": 14, "rate": 14, "loop_dim_s": 14, "left": 14, "hand": 14, "operand_precis": 14, "partial": 14, "o_fin": 14, "operand_sourc": 14, "come": 14, "constant_operand": 14, "constant": 14, "prior": 14, "readm": 14, "notat": 14, "batch": 14, "row": 14, "column": 14, "kernel": 14}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"zigzag": [0, 2, 6, 7, 10], "api": 0, "get_hardware_performance_zigzag": 0, "code": [1, 2], "document": [1, 2, 3, 6], "contribut": 2, "guidelin": 2, "upgrad": 2, "project": 2, "version": 2, "develop": 2, "write": 2, "new": [2, 10], "part": 2, "gener": [2, 10], "build": 2, "local": 2, "which": 2, "support": [2, 10, 14], "doxygen": 2, "futur": 3, "chang": 3, "framework": 3, "get": 4, "start": 4, "first": [4, 10], "run": 4, "analyz": 4, "result": [4, 11], "hardwar": [5, 11], "architectur": 5, "oper": [5, 14], "unit": 5, "arrai": 5, "memori": 5, "instanc": 5, "hierarchi": 5, "core": [5, 10], "hw": 5, "acceler": 5, "model": [5, 10, 11, 14], "exampl": 5, "specif": 5, "set": 5, "refer": 5, "welcom": 6, "": [6, 14], "content": 6, "indic": 6, "tabl": 6, "instal": 7, "packag": 7, "manual": [7, 14], "clone": 7, "prerequisit": 7, "map": [8, 10, 11, 13], "user": [8, 12], "defin": 8, "constraint": 8, "output": 9, "simplesavestag": 9, "completesavestag": 9, "creat": [9, 11], "custom": [9, 11], "savestag": 9, "public": 10, "The": [10, 11], "idea": 10, "detail": 10, "latenc": [10, 13], "explan": 10, "tempor": [10, 11, 13], "search": 10, "engin": 10, "differ": 10, "design": 10, "space": 10, "explor": 10, "case": 10, "studi": 10, "extens": 10, "cross": 10, "layer": [10, 14], "depth": 10, "schedul": 10, "multi": 10, "fuse": 10, "stage": 11, "introduct": 11, "main": 11, "entri": 11, "point": 11, "sequenti": 11, "call": 11, "back": 11, "pass": 11, "implement": 11, "input": 11, "parser": 11, "iter": 11, "plot": 11, "reduc": 11, "optim": 11, "save": [11, 14], "dump": 11, "spatial": 11, "cost": 11, "modif": 11, "your": [11, 14], "guid": 12, "visual": 13, "energi": 13, "breakdown": 13, "workload": 14, "onnx": 14, "extern": 14, "data": 14, "infer": 14, "an": 14, "shape": 14, "definit": 14}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"ZigZag API": [[0, "zigzag-api"]], "get_hardware_performance_zigzag()": [[0, "get-hardware-performance-zigzag"]], "Code Documentation": [[1, "code-documentation"]], "Contribute": [[2, "contribute"]], "Contributing guidelines": [[2, "contributing-guidelines"]], "Upgrading the project version (for ZigZag developers)": [[2, "upgrading-the-project-version-for-zigzag-developers"]], "Documentation": [[2, "documentation"], [3, "documentation"]], "Writing new parts for the general documentation": [[2, "writing-new-parts-for-the-general-documentation"]], "Building the general documentation locally": [[2, "building-the-general-documentation-locally"]], "Writing code which supports the code documentation with Doxygen": [[2, "writing-code-which-supports-the-code-documentation-with-doxygen"]], "Building the code documentation locally": [[2, "building-the-code-documentation-locally"]], "Future changes": [[3, "future-changes"]], "Framework": [[3, "framework"]], "Getting Started": [[4, "getting-started"]], "First run": [[4, "first-run"]], "Analyzing results": [[4, "analyzing-results"]], "Hardware Architecture": [[5, "hardware-architecture"]], "Operational Unit": [[5, "operational-unit"]], "Operational Array": [[5, "operational-array"]], "Memory Instance": [[5, "memory-instance"]], "Memory Hierarchy": [[5, "memory-hierarchy"]], "Core": [[5, "core"]], "HW Accelerator Model": [[5, "hw-accelerator-model"]], "Modelled examples": [[5, "modelled-examples"]], "Specific settings": [[5, "specific-settings"]], "References": [[5, "references"]], "Welcome to ZigZag\u2019s documentation!": [[6, "welcome-to-zigzag-s-documentation"]], "Contents:": [[6, null]], "Indices and tables": [[6, "indices-and-tables"]], "Installing ZigZag": [[7, "installing-zigzag"]], "Installing as a package": [[7, "installing-as-a-package"]], "Manual clone": [[7, "manual-clone"]], "Prerequisites": [[7, "prerequisites"]], "Installation": [[7, "installation"]], "Mapping": [[8, "mapping"]], "User-defined mapping constraints": [[8, "user-defined-mapping-constraints"]], "Outputs": [[9, "outputs"]], "SimpleSaveStage": [[9, "simplesavestage"]], "CompleteSaveStage": [[9, "completesavestage"]], "Creating a custom SaveStage": [[9, "creating-a-custom-savestage"]], "Publications": [[10, "publications"]], "The general idea of ZigZag": [[10, "the-general-idea-of-zigzag"]], "Detailed latency model explanation": [[10, "detailed-latency-model-explanation"]], "The new temporal mapping search engine": [[10, "the-new-temporal-mapping-search-engine"]], "Different design space exploration case studies": [[10, "different-design-space-exploration-case-studies"]], "Extension to support cross-layer depth-first scheduling": [[10, "extension-to-support-cross-layer-depth-first-scheduling"]], "Extension to support multi-core layer-fused scheduling": [[10, "extension-to-support-multi-core-layer-fused-scheduling"]], "Stages": [[11, "stages"]], "Introduction": [[11, "introduction"]], "The main entry point": [[11, "the-main-entry-point"]], "The sequential call of stages": [[11, "the-sequential-call-of-stages"]], "The back passing of results": [[11, "the-back-passing-of-results"]], "Implemented stages": [[11, "implemented-stages"]], "Input parser stages": [[11, "input-parser-stages"]], "Iterator stage": [[11, "iterator-stage"]], "Plot stages": [[11, "plot-stages"]], "Reduce stages": [[11, "reduce-stages"]], "Optimization stages": [[11, "optimization-stages"]], "Save and dump stages": [[11, "save-and-dump-stages"]], "Temporal mapping stages": [[11, "temporal-mapping-stages"]], "Spatial mapping stages": [[11, "spatial-mapping-stages"]], "Cost model stages": [[11, "cost-model-stages"]], "Hardware modification stages": [[11, "hardware-modification-stages"]], "Creating your custom stage": [[11, "creating-your-custom-stage"]], "User Guide": [[12, "user-guide"]], "Visualization": [[13, "visualization"]], "Temporal mapping": [[13, "temporal-mapping"]], "Energy and latency breakdown": [[13, "energy-and-latency-breakdown"]], "Workload": [[14, "workload"]], "Onnx models": [[14, "onnx-models"]], "Supported onnx operators": [[14, "supported-onnx-operators"]], "Saving your onnx model with external data": [[14, "saving-your-onnx-model-with-external-data"]], "Inferring an onnx model\u2019s shapes": [[14, "inferring-an-onnx-model-s-shapes"]], "Manual layer definition": [[14, "manual-layer-definition"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/visualization.html b/visualization.html index 9187d2af..6fda3616 100644 --- a/visualization.html +++ b/visualization.html @@ -1,9 +1,29 @@ - Visualization — ZigZag 2.0.0 documentation Skip to content

Visualization

The generated CostModelEvaluation object(s) (from e.g. the API call) can be visualized in multiple ways.

Temporal mapping

The temporal mapping can be visualized by a function which prints it to the terminal. The code block demonstrates how to use it:

from zigzag.utils import pickle_load
+                          Visualization — ZigZag 2.0.0 documentation                     Skip to content  

Visualization

The generated CostModelEvaluation object(s) (from e.g. the API call) can be visualized in multiple ways.

Temporal mapping

The temporal mapping can be visualized by a function which prints it to the terminal. The code block demonstrates how to use it:

from zigzag.utils import pickle_load
 from zigzag.visualization.results.print_mapping import print_mapping
 cmes = pickle_load("zigzag/visualization/list_of_cmes.pickle")
 cme = cmes[0]
 print_mapping(cme)
-

The function will show the loops of the temporal mapping and for each operand shows at which memory level it resides. For example:

***** Temporal Mapping - CostModelEvaluation(layer=LayerNode_0, core=1) *****

O (O): [[(‘FX’, 11), (‘FY’, 11)], [(‘OY’, 7), (‘OY’, 2), (‘OX’, 14), (‘K’, 12)], []] W (I2): [[], [(‘FX’, 11), (‘FY’, 11), (‘OY’, 7), (‘OY’, 2), (‘OX’, 14)], [(‘K’, 12)]] I (I1): [[(‘FX’, 11), (‘FY’, 11), (‘OY’, 7), (‘OY’, 2), (‘OX’, 14), (‘K’, 12)], []]

Temporal Loops O W I

for K in [0:12) sram_2MB dram sram_2MB

for OX in [0:14) sram_2MB sram_32KB sram_2MB

for OY in [0:2) sram_2MB sram_32KB sram_2MB

for OY in [0:7) sram_2MB sram_32KB sram_2MB

for FY in [0:11) rf_2B sram_32KB sram_2MB

for FX in [0:11) rf_2B sram_32KB sram_2MB

The top loop is the outer-most for loop, where as the bottom loop is the inner-most. Going from bottom to top, loops are allocated to the innermost memories of the memory hierarchy for each operand. The names of the memories match the names of the MemoryInstance object used to create the memory level using the add_memory() call in the MemoryHierarchy.

Energy and latency breakdown

The energy and latency breakdown of a list of CostModelEvaluation objects can be plotted using the bar_plot_cost_model_evaluations_breakdown function:

from zigzag.utils import pickle_load
+

The function will show the loops of the temporal mapping and for each operand shows at which memory level it resides. For example:

********* Temporal Mapping - CostModelEvaluation(layer=LayerNode_0, core=1) *********
+O (O): [[('FX', 11), ('FY', 11)], [('OY', 7), ('OY', 2), ('OX', 14), ('K', 12)], []]
+W (I2): [[], [('FX', 11), ('FY', 11), ('OY', 7), ('OY', 2), ('OX', 14)], [('K', 12)]]
+I (I1): [[('FX', 11), ('FY', 11), ('OY', 7), ('OY', 2), ('OX', 14), ('K', 12)], []]
+
+-------------------------------------------------------------------------------------
+Temporal Loops                  O                  W                  I
+-------------------------------------------------------------------------------------
+for K in [0:12)                 sram_2MB           dram               sram_2MB
+-------------------------------------------------------------------------------------
+for OX in [0:14)               sram_2MB           sram_32KB          sram_2MB
+-------------------------------------------------------------------------------------
+for OY in [0:2)               sram_2MB           sram_32KB          sram_2MB
+-------------------------------------------------------------------------------------
+    for OY in [0:7)              sram_2MB           sram_32KB          sram_2MB
+-------------------------------------------------------------------------------------
+    for FY in [0:11)            rf_2B              sram_32KB          sram_2MB
+-------------------------------------------------------------------------------------
+    for FX in [0:11)           rf_2B              sram_32KB          sram_2MB
+-------------------------------------------------------------------------------------
+

The top loop is the outer-most for loop, where as the bottom loop is the inner-most. Going from bottom to top, loops are allocated to the innermost memories of the memory hierarchy for each operand. The names of the memories match the names of the MemoryInstance object used to create the memory level using the add_memory() call in the MemoryHierarchy.

Energy and latency breakdown

The energy and latency breakdown of a list of CostModelEvaluation objects can be plotted using the bar_plot_cost_model_evaluations_breakdown function:

from zigzag.utils import pickle_load
 from zigzag.visualization.results.plot_cme import bar_plot_cost_model_evaluations_breakdown
 
 cmes = pickle_load("zigzag/visualization/list_of_cmes.pickle")