accelforge 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. accelforge/__init__.py +21 -0
  2. accelforge/_accelerated_imports.py +16 -0
  3. accelforge/_deprecate/_simanneal/evalmapping.py +271 -0
  4. accelforge/_deprecate/_simanneal/mapspaceglobals.py +298 -0
  5. accelforge/_deprecate/_simanneal/simanneal.py +666 -0
  6. accelforge/_deprecate/_simanneal/tracking.py +105 -0
  7. accelforge/_deprecate/_simanneal/wrappers.py +218 -0
  8. accelforge/_deprecate/_simanneal2/__init__.py +7 -0
  9. accelforge/_deprecate/_simanneal2/simanneal.py +493 -0
  10. accelforge/_deprecate/_simanneal2/tracking.py +116 -0
  11. accelforge/_deprecate/compatibility_util.py +181 -0
  12. accelforge/_deprecate/layerdeduplication/__init__.py +2 -0
  13. accelforge/_deprecate/layerdeduplication/group_similar_einsums.py +160 -0
  14. accelforge/_deprecate/layerdeduplication/grouped_einsums.py +84 -0
  15. accelforge/_deprecate/mapping_filter_tags/__init__.py +2 -0
  16. accelforge/_deprecate/mapping_filter_tags/ffmt.py +212 -0
  17. accelforge/_deprecate/mapping_filter_tags/onesplit.py +24 -0
  18. accelforge/_deprecate/mapping_filter_tags/util.py +24 -0
  19. accelforge/_deprecate/tags.py +69 -0
  20. accelforge/_deprecate/viz/__init__.py +0 -0
  21. accelforge/_deprecate/viz/interactive.py +159 -0
  22. accelforge/_deprecate/viz/reservationtree.py +307 -0
  23. accelforge/_deprecate/viz/ski_slope.py +88 -0
  24. accelforge/_version.py +15 -0
  25. accelforge/examples.py +39 -0
  26. accelforge/frontend/__init__.py +10 -0
  27. accelforge/frontend/_binding.py +129 -0
  28. accelforge/frontend/_workload_isl/__init__.py +2 -0
  29. accelforge/frontend/_workload_isl/_isl.py +149 -0
  30. accelforge/frontend/_workload_isl/_symbolic.py +141 -0
  31. accelforge/frontend/arch copy.py +1544 -0
  32. accelforge/frontend/arch.py +1642 -0
  33. accelforge/frontend/config.py +63 -0
  34. accelforge/frontend/mapper/__init__.py +5 -0
  35. accelforge/frontend/mapper/ffm.py +126 -0
  36. accelforge/frontend/mapper/mapper.py +7 -0
  37. accelforge/frontend/mapper/metrics.py +30 -0
  38. accelforge/frontend/mapping/__init__.py +1 -0
  39. accelforge/frontend/mapping/mapping.py +1736 -0
  40. accelforge/frontend/model.py +14 -0
  41. accelforge/frontend/renames.py +150 -0
  42. accelforge/frontend/spec copy.py +230 -0
  43. accelforge/frontend/spec.py +301 -0
  44. accelforge/frontend/variables.py +12 -0
  45. accelforge/frontend/workload.py +952 -0
  46. accelforge/mapper/FFM/__init__.py +9 -0
  47. accelforge/mapper/FFM/_join_pmappings/__init__.py +0 -0
  48. accelforge/mapper/FFM/_join_pmappings/compatibility.py +653 -0
  49. accelforge/mapper/FFM/_join_pmappings/compress_pmappings.py +140 -0
  50. accelforge/mapper/FFM/_join_pmappings/join_pmappings.py +703 -0
  51. accelforge/mapper/FFM/_join_pmappings/pmapping_dataframe.py +901 -0
  52. accelforge/mapper/FFM/_join_pmappings/pmapping_group.py +337 -0
  53. accelforge/mapper/FFM/_make_pmappings/contraints/__init__.py +0 -0
  54. accelforge/mapper/FFM/_make_pmappings/contraints/constraints.py +360 -0
  55. accelforge/mapper/FFM/_make_pmappings/make_pmapping_templates/__init__.py +1 -0
  56. accelforge/mapper/FFM/_make_pmappings/make_pmapping_templates/make_loops.py +373 -0
  57. accelforge/mapper/FFM/_make_pmappings/make_pmapping_templates/make_pmapping_templates.py +463 -0
  58. accelforge/mapper/FFM/_make_pmappings/make_pmapping_templates/make_reservations.py +95 -0
  59. accelforge/mapper/FFM/_make_pmappings/make_pmapping_templates/make_storage_order.py +382 -0
  60. accelforge/mapper/FFM/_make_pmappings/make_pmapping_templates/make_storages.py +155 -0
  61. accelforge/mapper/FFM/_make_pmappings/make_pmappings.py +411 -0
  62. accelforge/mapper/FFM/_make_pmappings/make_pmappings_from_templates/__init__.py +1 -0
  63. accelforge/mapper/FFM/_make_pmappings/make_pmappings_from_templates/make_pmappings_from_templates.py +407 -0
  64. accelforge/mapper/FFM/_make_pmappings/make_pmappings_from_templates/make_tile_shapes.py +1681 -0
  65. accelforge/mapper/FFM/_make_pmappings/make_pmappings_from_templates/run_model.py +170 -0
  66. accelforge/mapper/FFM/_make_pmappings/make_pmappings_from_templates/symbol_relations.py +174 -0
  67. accelforge/mapper/FFM/_make_pmappings/pmapper_job.py +282 -0
  68. accelforge/mapper/FFM/_pareto_df/df_convention.py +273 -0
  69. accelforge/mapper/FFM/_pareto_df/pareto copy.py +836 -0
  70. accelforge/mapper/FFM/_pareto_df/pareto.py +508 -0
  71. accelforge/mapper/FFM/data.py +61 -0
  72. accelforge/mapper/FFM/main copy.py +236 -0
  73. accelforge/mapper/FFM/main.py +208 -0
  74. accelforge/mapper/FFM/mappings.py +510 -0
  75. accelforge/mapper/FFM/pmappings.py +310 -0
  76. accelforge/mapper/__init__.py +4 -0
  77. accelforge/mapper.py +0 -0
  78. accelforge/model/__init__.py +1 -0
  79. accelforge/model/_looptree/__init__.py +0 -0
  80. accelforge/model/_looptree/accesses.py +335 -0
  81. accelforge/model/_looptree/capacity/__init__.py +1 -0
  82. accelforge/model/_looptree/capacity/aggregators.py +36 -0
  83. accelforge/model/_looptree/capacity/capacity.py +47 -0
  84. accelforge/model/_looptree/energy.py +150 -0
  85. accelforge/model/_looptree/equivalent_ranks.py +29 -0
  86. accelforge/model/_looptree/latency/__init__.py +1 -0
  87. accelforge/model/_looptree/latency/latency.py +98 -0
  88. accelforge/model/_looptree/latency/memory.py +120 -0
  89. accelforge/model/_looptree/latency/processors.py +92 -0
  90. accelforge/model/_looptree/mapping_utilities.py +71 -0
  91. accelforge/model/_looptree/reuse/__init__.py +4 -0
  92. accelforge/model/_looptree/reuse/isl/__init__.py +1 -0
  93. accelforge/model/_looptree/reuse/isl/des.py +59 -0
  94. accelforge/model/_looptree/reuse/isl/isl_functions.py +374 -0
  95. accelforge/model/_looptree/reuse/isl/mapping_to_isl/__init__.py +4 -0
  96. accelforge/model/_looptree/reuse/isl/mapping_to_isl/analyze_mapping.py +297 -0
  97. accelforge/model/_looptree/reuse/isl/mapping_to_isl/skews_from_mapping.py +236 -0
  98. accelforge/model/_looptree/reuse/isl/mapping_to_isl/tiling.py +685 -0
  99. accelforge/model/_looptree/reuse/isl/mapping_to_isl/types.py +188 -0
  100. accelforge/model/_looptree/reuse/isl/spatial.py +260 -0
  101. accelforge/model/_looptree/reuse/isl/temporal.py +182 -0
  102. accelforge/model/_looptree/reuse/symbolic/__init__.py +1 -0
  103. accelforge/model/_looptree/reuse/symbolic/symbolic copy 2.py +1346 -0
  104. accelforge/model/_looptree/reuse/symbolic/symbolic copy.py +1408 -0
  105. accelforge/model/_looptree/reuse/symbolic/symbolic.py +1396 -0
  106. accelforge/model/_looptree/run.py +122 -0
  107. accelforge/model/_looptree/types.py +26 -0
  108. accelforge/model/_looptree/visualization/__init__.py +0 -0
  109. accelforge/model/_looptree/visualization/occupancy.py +11 -0
  110. accelforge/model/main.py +222 -0
  111. accelforge/plotting/__init__.py +2 -0
  112. accelforge/plotting/mappings.py +219 -0
  113. accelforge/plotting/specs.py +57 -0
  114. accelforge/util/__init__.py +4 -0
  115. accelforge/util/_base_analysis_types.py +24 -0
  116. accelforge/util/_basetypes.py +1089 -0
  117. accelforge/util/_frozenset.py +36 -0
  118. accelforge/util/_isl.py +29 -0
  119. accelforge/util/_itertools.py +14 -0
  120. accelforge/util/_mathfuncs.py +57 -0
  121. accelforge/util/_parse_expressions.py +339 -0
  122. accelforge/util/_picklecache.py +32 -0
  123. accelforge/util/_setexpressions.py +268 -0
  124. accelforge/util/_sympy/__init__.py +0 -0
  125. accelforge/util/_sympy/broadcast_max.py +18 -0
  126. accelforge/util/_visualization.py +112 -0
  127. accelforge/util/_yaml.py +579 -0
  128. accelforge/util/parallel.py +193 -0
  129. accelforge-0.0.1.dist-info/METADATA +64 -0
  130. accelforge-0.0.1.dist-info/RECORD +258 -0
  131. accelforge-0.0.1.dist-info/WHEEL +5 -0
  132. accelforge-0.0.1.dist-info/licenses/LICENSE +19 -0
  133. accelforge-0.0.1.dist-info/top_level.txt +5 -0
  134. docs/_build/html/_sources/fastfusion.frontend.mapper.rst.txt +37 -0
  135. docs/_build/html/_sources/fastfusion.frontend.rst.txt +70 -0
  136. docs/_build/html/_sources/fastfusion.frontend.workload.rst.txt +21 -0
  137. docs/_build/html/_sources/fastfusion.mapper.FFM.rst.txt +37 -0
  138. docs/_build/html/_sources/fastfusion.mapper.rst.txt +18 -0
  139. docs/_build/html/_sources/fastfusion.rst.txt +20 -0
  140. docs/_build/html/_sources/fastfusion.util.rst.txt +21 -0
  141. docs/_build/html/_sources/index.rst.txt +87 -0
  142. docs/_build/html/_sources/modules.rst.txt +7 -0
  143. docs/_build/html/_sources/notes/citation.rst.txt +45 -0
  144. docs/_build/html/_sources/notes/definitions.rst.txt +43 -0
  145. docs/_build/html/_sources/notes/faqs.rst.txt +39 -0
  146. docs/_build/html/_sources/notes/modeling/accelerator_energy_latency.rst.txt +72 -0
  147. docs/_build/html/_sources/notes/modeling/component_energy_area.rst.txt +96 -0
  148. docs/_build/html/_sources/notes/modeling/mapping.rst.txt +100 -0
  149. docs/_build/html/_sources/notes/modeling.rst.txt +33 -0
  150. docs/_build/html/_sources/notes/parsing/arithmetic_parsing.rst.txt +136 -0
  151. docs/_build/html/_sources/notes/parsing/setexpressions.rst.txt +63 -0
  152. docs/_build/html/_sources/notes/parsing/yaml_parsing.rst.txt +176 -0
  153. docs/_build/html/_sources/notes/quickstart_and_installation.rst.txt +9 -0
  154. docs/_build/html/_sources/notes/spec/architecture.rst.txt +133 -0
  155. docs/_build/html/_sources/notes/spec/mapping.rst.txt +12 -0
  156. docs/_build/html/_sources/notes/spec/workload.rst.txt +83 -0
  157. docs/_build/html/_sources/notes/spec.rst.txt +36 -0
  158. docs/source/_ext/include_attrs.py +213 -0
  159. docs/source/_ext/include_docstring.py +364 -0
  160. docs/source/_ext/include_functions.py +154 -0
  161. docs/source/_ext/include_notebook.py +131 -0
  162. docs/source/_ext/include_yaml.py +119 -0
  163. docs/source/_ext/inherited_attributes.py +222 -0
  164. docs/source/_ext/paths.py +4 -0
  165. docs/source/conf.py +79 -0
  166. examples/arches/compute_in_memory/_include.yaml +74 -0
  167. examples/arches/compute_in_memory/_include_functions.py +229 -0
  168. examples/arches/compute_in_memory/_load_spec.py +57 -0
  169. examples/arches/compute_in_memory/components/c2c_multiplier.py +181 -0
  170. examples/arches/compute_in_memory/components/dac_c2c_r2r.py +605 -0
  171. examples/arches/compute_in_memory/components/misc.py +195 -0
  172. examples/arches/compute_in_memory/components/util/bit_functions.py +51 -0
  173. examples/arches/compute_in_memory/components/zero_comparator.py +92 -0
  174. examples/arches/compute_in_memory/isaac.yaml +233 -0
  175. examples/arches/compute_in_memory/memory_cells/ecram_demo.yaml +63 -0
  176. examples/arches/compute_in_memory/memory_cells/rram_example.yaml +63 -0
  177. examples/arches/compute_in_memory/memory_cells/rram_isaac_isca_2016.yaml +64 -0
  178. examples/arches/compute_in_memory/memory_cells/rram_neurosim_default.yaml +63 -0
  179. examples/arches/compute_in_memory/memory_cells/rram_raella_isca_2023.yaml +70 -0
  180. examples/arches/compute_in_memory/memory_cells/rram_wan_nature_2022.yaml +63 -0
  181. examples/arches/compute_in_memory/memory_cells/sram_colonnade_jssc_2021.yaml +63 -0
  182. examples/arches/compute_in_memory/memory_cells/sram_example.yaml +63 -0
  183. examples/arches/compute_in_memory/memory_cells/sram_jia_jssc_2020.yaml +63 -0
  184. examples/arches/compute_in_memory/memory_cells/sram_sinangil_jssc_2021.yaml +63 -0
  185. examples/arches/compute_in_memory/memory_cells/sram_wang_vlsi_2022.yaml +63 -0
  186. examples/arches/compute_in_memory/wang_vlsi_2022.yaml +289 -0
  187. examples/arches/eyeriss.yaml +68 -0
  188. examples/arches/fanout_variations/at_glb.yaml +31 -0
  189. examples/arches/fanout_variations/at_glb_with_fanout_node.yaml +34 -0
  190. examples/arches/fanout_variations/at_mac.yaml +31 -0
  191. examples/arches/fanout_variations/at_mac_with_constraints.yaml +38 -0
  192. examples/arches/fanout_variations/at_mac_with_fanout_node.yaml +34 -0
  193. examples/arches/nvdla.yaml +47 -0
  194. examples/arches/simple.yaml +28 -0
  195. examples/arches/tpu_v4i.yaml +67 -0
  196. examples/mappings/unfused_matmuls_to_simple.yaml +33 -0
  197. examples/misc/component_annotated.yaml +33 -0
  198. examples/workloads/gpt3_6.7B.yaml +124 -0
  199. examples/workloads/matmuls.yaml +20 -0
  200. examples/workloads/mobilenet_28.yaml +81 -0
  201. examples/workloads/mobilenet_various_separate.yaml +106 -0
  202. examples/workloads/three_matmuls_annotated.yaml +59 -0
  203. notebooks/.ipynb_checkpoints/fastfusion_arch_study_michael-checkpoint.ipynb +359 -0
  204. notebooks/compute_in_memory/_scripts.py +339 -0
  205. notebooks/compute_in_memory/isaac.guide.ipynb +270 -0
  206. notebooks/compute_in_memory/wang_vlsi_2022.ipynb +602 -0
  207. notebooks/paths.py +4 -0
  208. notebooks/tutorials/.ipynb_checkpoints/1_FFM-checkpoint.ipynb +3110 -0
  209. notebooks/tutorials/FFM.ipynb +3498 -0
  210. notebooks/tutorials/_include.py +48 -0
  211. notebooks/tutorials/component_energy_area.ipynb +363 -0
  212. tests/Q_mapping.yaml +38 -0
  213. tests/__init__.py +0 -0
  214. tests/conv.mapping.yaml +27 -0
  215. tests/conv.workload.yaml +13 -0
  216. tests/conv_sym.mapping.yaml +43 -0
  217. tests/copy.mapping.yaml +35 -0
  218. tests/copy.workload.yaml +15 -0
  219. tests/distribuffers/__init__.py +0 -0
  220. tests/distribuffers/multicast/test_cases.yaml +482 -0
  221. tests/distribuffers/spec/binding/valid_bindings.yaml +97 -0
  222. tests/distribuffers/spec/distributed.yaml +100 -0
  223. tests/distribuffers/spec/logical_arch.yaml +32 -0
  224. tests/distribuffers/spec/physical_arch.yaml +69 -0
  225. tests/distribuffers/test_binding.py +48 -0
  226. tests/frontend/__init__.py +0 -0
  227. tests/frontend/test_mapping_viz.py +52 -0
  228. tests/mapper/__init__.py +0 -0
  229. tests/mapper/configs/conv1d/conv1d.mapping.yaml +31 -0
  230. tests/mapper/configs/conv1d/conv1d.workload.yaml +11 -0
  231. tests/mapper/configs/two_conv1d/two_conv1d.expected.yaml +38 -0
  232. tests/mapper/configs/two_conv1d/two_conv1d.mapping.yaml +54 -0
  233. tests/mapper/configs/two_conv1d/two_conv1d.workload.yaml +19 -0
  234. tests/mapper/test_mapping_to_isl.py +90 -0
  235. tests/mapper/test_spatial_reuse_analysis.py +67 -0
  236. tests/mapper/test_temporal_reuse_analysis.py +56 -0
  237. tests/mapper/util.py +58 -0
  238. tests/matmul.mapping.yaml +29 -0
  239. tests/matmul.workload.yaml +12 -0
  240. tests/matmul_spatial.mapping.yaml +44 -0
  241. tests/mha.renames.yaml +65 -0
  242. tests/mha.workload.yaml +67 -0
  243. tests/mha.yaml +59 -0
  244. tests/mha_full.workload.yaml +67 -0
  245. tests/mobilenet.workload.yaml +35 -0
  246. tests/mobilenet_long.workload.yaml +64 -0
  247. tests/pmappingcache.py +24 -0
  248. tests/processing_stage.arch.yaml +40 -0
  249. tests/snowcat.arch.yaml +36 -0
  250. tests/test_ffm_join_pmappings.py +106 -0
  251. tests/test_ffm_make_pmappings.py +82 -0
  252. tests/test_ffm_make_tile_shapes.py +49 -0
  253. tests/test_mapper.py +100 -0
  254. tests/test_model.py +37 -0
  255. tests/test_plotting.py +72 -0
  256. tests/test_processing_stage.py +46 -0
  257. tests/test_symbolic_model.py +248 -0
  258. tests/test_workload.py +141 -0
@@ -0,0 +1,3110 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 1,
6
+ "metadata": {},
7
+ "outputs": [
8
+ {
9
+ "name": "stdout",
10
+ "output_type": "stream",
11
+ "text": [
12
+ "Using 32 parallel jobs\n"
13
+ ]
14
+ }
15
+ ],
16
+ "source": [
17
+ "# Imports\n",
18
+ "import fastfusion as ff\n",
19
+ "from IPython.display import SVG, display\n",
20
+ "import os\n",
21
+ "ff.set_n_parallel_jobs(os.cpu_count(), print_message=True)"
22
+ ]
23
+ },
24
+ {
25
+ "cell_type": "code",
26
+ "execution_count": 2,
27
+ "metadata": {},
28
+ "outputs": [
29
+ {
30
+ "name": "stderr",
31
+ "output_type": "stream",
32
+ "text": [
33
+ "WARNING Loading configuration file from /root/.config/fastfusion/config.yaml\n"
34
+ ]
35
+ }
36
+ ],
37
+ "source": [
38
+ "# Initialize the specification and show the workload.\n",
39
+ "BATCH_SIZE = 1\n",
40
+ "N_TOKENS = 65536\n",
41
+ "FUSE = True\n",
42
+ "\n",
43
+ "spec = ff.Spec.from_yaml(\n",
44
+ " \"arches/tpu_v4i_like.yaml\",\n",
45
+ " # \"arches/simple.arch.yaml\",\n",
46
+ " \"workloads/gpt3_6.7B.yaml\",\n",
47
+ " jinja_parse_data=dict(\n",
48
+ " BATCH_SIZE=BATCH_SIZE,\n",
49
+ " N_TOKENS=N_TOKENS,\n",
50
+ " )\n",
51
+ ")\n",
52
+ "\n",
53
+ "# If fusion is disabled, keep all tensors in main memory.\n",
54
+ "if not FUSE:\n",
55
+ " spec.arch.nodes[\"MainMemory\"].constraints.tensors.keep = \"All()\"\n",
56
+ "\n",
57
+ "# display(SVG(spec.workload.render()))"
58
+ ]
59
+ },
60
+ {
61
+ "cell_type": "code",
62
+ "execution_count": 3,
63
+ "metadata": {},
64
+ "outputs": [
65
+ {
66
+ "name": "stderr",
67
+ "output_type": "stream",
68
+ "text": [
69
+ "Generating pmapping templates for compute MAC Einsum I: 0it [00:00, ?it/s]it [00:00, ?it/s]\n",
70
+ "Generating pmapping templates for compute scalar_unit Einsum I: 1it [00:00, 11.39it/s]\n",
71
+ "Generating pmapping templates for compute scalar_unit Einsum QK: 0it [00:00, ?it/s]]\n",
72
+ "Generating pmapping templates for compute scalar_unit Einsum Q: 0it [00:00, ?it/s]\n",
73
+ "Generating pmapping templates for compute scalar_unit Einsum K: 0it [00:00, ?it/s]\n",
74
+ "Generating pmapping templates for compute scalar_unit Einsum V: 0it [00:00, ?it/s]\n",
75
+ "Generating pmapping templates for compute scalar_unit Einsum Z: 0it [00:00, ?it/s]\n",
76
+ "Generating pmapping templates for compute MAC Einsum QK_softmax: 0it [00:00, ?it/s], 17.68it/s]\n",
77
+ "Generating pmapping templates for compute scalar_unit Einsum FFB: 0it [00:00, ?it/s]\n",
78
+ "Generating pmapping templates for compute scalar_unit Einsum FFA: 0it [00:00, ?it/s]\n",
79
+ "Generating pmapping templates for compute scalar_unit Einsum AV: 0it [00:00, ?it/s]\n",
80
+ "Generating pmapping templates for compute scalar_unit Einsum QK_softmax: 6it [00:00, 27.43it/s]\n",
81
+ "Generating pmapping templates for compute MAC Einsum K: 22it [00:00, 34.69it/s]]]\n",
82
+ "Generating pmapping templates for compute MAC Einsum QK: 22it [00:00, 35.45it/s]\n",
83
+ "Generating pmapping templates for compute MAC Einsum V: 22it [00:00, 35.12it/s]\n",
84
+ "Generating pmapping templates for compute MAC Einsum Z: 22it [00:00, 37.79it/s]]\n",
85
+ "Generating pmapping templates for compute MAC Einsum AV: 22it [00:00, 37.18it/s]\n",
86
+ "Generating pmapping templates for compute MAC Einsum Q: 22it [00:00, 35.88it/s]s]\n",
87
+ "Generating pmapping templates for compute MAC Einsum FFA: 22it [00:00, 34.38it/s]\n",
88
+ "Generating pmapping templates for compute MAC Einsum FFB: 22it [00:00, 33.02it/s]\n",
89
+ "Generating jobs: 100% 20/20 [00:02<00:00, 7.11it/s]\n",
90
+ "WARNING Einsum I has 1 pmapping templates:\n",
91
+ "WARNING \t[I_in,I in MainMemory] T-b,d,m S-Z-b,d,m scalar_unit computes I\n",
92
+ "WARNING Einsum V has 22 pmapping templates:\n",
93
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
94
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
95
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
96
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
97
+ "WARNING \t[WV,V,I in MainMemory] T-d,e,h [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
98
+ "WARNING \t[WV,V,I in MainMemory] T-d,e,h [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
99
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [V in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
100
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
101
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
102
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
103
+ "WARNING \t[WV,V,I in MainMemory] T-d,e,h [WV in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
104
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
105
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
106
+ "WARNING \t[WV,V,I in MainMemory] T-d,e,h [WV in GlobalBuffer] T-b,m [V in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
107
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [V in GlobalBuffer] T-d [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
108
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [V in GlobalBuffer] T-d [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
109
+ "WARNING \t[WV,V,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WV in GlobalBuffer] T-b,m [V in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
110
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
111
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h [WV in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
112
+ "WARNING \t[WV,V,I in MainMemory] T-b,e,h,m [V in GlobalBuffer] T-d [WV in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
113
+ "WARNING \t[WV,V,I in MainMemory] T-d,e,h [WV in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h [V in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [V in LocalBuffer] T-d S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
114
+ "WARNING \t[WV,V,I in MainMemory] T-d,e,h [WV in GlobalBuffer] T-b,m [V in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [V in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WV in Register] T-b,m MAC computes V\n",
115
+ "WARNING Einsum K has 22 pmapping templates:\n",
116
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
117
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
118
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
119
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
120
+ "WARNING \t[WK,K,I in MainMemory] T-d,e,h [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
121
+ "WARNING \t[WK,K,I in MainMemory] T-d,e,h [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
122
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [K in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
123
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
124
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
125
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
126
+ "WARNING \t[WK,K,I in MainMemory] T-d,e,h [WK in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
127
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
128
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
129
+ "WARNING \t[WK,K,I in MainMemory] T-d,e,h [WK in GlobalBuffer] T-b,m [K in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
130
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [K in GlobalBuffer] T-d [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
131
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [K in GlobalBuffer] T-d [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
132
+ "WARNING \t[WK,K,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WK in GlobalBuffer] T-b,m [K in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
133
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
134
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h [WK in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
135
+ "WARNING \t[WK,K,I in MainMemory] T-b,e,h,m [K in GlobalBuffer] T-d [WK in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
136
+ "WARNING \t[WK,K,I in MainMemory] T-d,e,h [WK in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h [K in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [K in LocalBuffer] T-d S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
137
+ "WARNING \t[WK,K,I in MainMemory] T-d,e,h [WK in GlobalBuffer] T-b,m [K in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [K in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WK in Register] T-b,m MAC computes K\n",
138
+ "WARNING Einsum Q has 22 pmapping templates:\n",
139
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
140
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
141
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
142
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
143
+ "WARNING \t[WQ,Q,I in MainMemory] T-d,e,h [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
144
+ "WARNING \t[WQ,Q,I in MainMemory] T-d,e,h [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
145
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [Q in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
146
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
147
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
148
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
149
+ "WARNING \t[WQ,Q,I in MainMemory] T-d,e,h [WQ in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
150
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
151
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
152
+ "WARNING \t[WQ,Q,I in MainMemory] T-d,e,h [WQ in GlobalBuffer] T-b,m [Q in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
153
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [Q in GlobalBuffer] T-d [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
154
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [Q in GlobalBuffer] T-d [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
155
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,d,m [I in GlobalBuffer] T-e,h [WQ in GlobalBuffer] T-b,m [Q in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
156
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
157
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h [WQ in GlobalBuffer] T-b,m S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
158
+ "WARNING \t[WQ,Q,I in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-d [WQ in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
159
+ "WARNING \t[WQ,Q,I in MainMemory] T-d,e,h [WQ in GlobalBuffer] T-b,m [I in GlobalBuffer] T-e,h [Q in GlobalBuffer] T-d S-Z-b,d,e,h,m [I in LocalBuffer] T-e,h [Q in LocalBuffer] T-d S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
160
+ "WARNING \t[WQ,Q,I in MainMemory] T-d,e,h [WQ in GlobalBuffer] T-b,m [Q in GlobalBuffer] T-d [I in GlobalBuffer] T-e,h S-Z-b,d,e,h,m [Q in LocalBuffer] T-d [I in LocalBuffer] T-e,h S-Y-d S-X-e,h [WQ in Register] T-b,m MAC computes Q\n",
161
+ "WARNING Einsum QK has 22 pmapping templates:\n",
162
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
163
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
164
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,p [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
165
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,p [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
166
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
167
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
168
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,p [K in GlobalBuffer] T-m [Q in GlobalBuffer] T-p S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
169
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
170
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
171
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,p [K in GlobalBuffer] T-m [QK in GlobalBuffer] T-e S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
172
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
173
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
174
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p [QK in GlobalBuffer] T-e S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
175
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e [Q in GlobalBuffer] T-p S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
176
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,p [K in GlobalBuffer] T-m [Q in GlobalBuffer] T-p [QK in GlobalBuffer] T-e S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
177
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,p [K in GlobalBuffer] T-m [QK in GlobalBuffer] T-e [Q in GlobalBuffer] T-p S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
178
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p [K in GlobalBuffer] T-m [QK in GlobalBuffer] T-e S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
179
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p [QK in GlobalBuffer] T-e [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
180
+ "WARNING \t[QK,Q,K in MainMemory] T-b,e,h,m [Q in GlobalBuffer] T-p [QK in GlobalBuffer] T-e [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
181
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e [K in GlobalBuffer] T-m [Q in GlobalBuffer] T-p S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
182
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e [Q in GlobalBuffer] T-p [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [Q in LocalBuffer] T-p [QK in LocalBuffer] T-e S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
183
+ "WARNING \t[QK,Q,K in MainMemory] T-b,h,m,p [QK in GlobalBuffer] T-e [Q in GlobalBuffer] T-p [K in GlobalBuffer] T-m S-Z-b,e,h,m,p [QK in LocalBuffer] T-e [Q in LocalBuffer] T-p S-Y-e S-X-p [K in Register] T-m MAC computes QK\n",
184
+ "WARNING Einsum QK_softmax has 6 pmapping templates:\n",
185
+ "WARNING \t[QK_softmax,QK in MainMemory] T-b,h,m,p S-Z-b,h,m,p [QK,QK_softmax in LocalBuffer] scalar_unit computes QK_softmax\n",
186
+ "WARNING \t[QK_softmax,QK in MainMemory] T-b,h,m,p S-Z-b,h,m,p [QK_softmax,QK in LocalBuffer] scalar_unit computes QK_softmax\n",
187
+ "WARNING \t[QK_softmax,QK in MainMemory] T-b,h,m,p [QK in GlobalBuffer] S-Z-b,h,m,p [QK_softmax,QK in LocalBuffer] scalar_unit computes QK_softmax\n",
188
+ "WARNING \t[QK_softmax,QK in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] S-Z-b,h,m,p [QK,QK_softmax in LocalBuffer] scalar_unit computes QK_softmax\n",
189
+ "WARNING \t[QK_softmax,QK in MainMemory] T-b,h,m,p [QK,QK_softmax in GlobalBuffer] S-Z-b,h,m,p [QK,QK_softmax in LocalBuffer] scalar_unit computes QK_softmax\n",
190
+ "WARNING \t[QK_softmax,QK in MainMemory] T-b,h,m,p [QK_softmax,QK in GlobalBuffer] S-Z-b,h,m,p [QK_softmax,QK in LocalBuffer] scalar_unit computes QK_softmax\n",
191
+ "WARNING Einsum AV has 22 pmapping templates:\n",
192
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
193
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
194
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
195
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
196
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,p [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
197
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,p [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
198
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p [QK_softmax in GlobalBuffer] T-f S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
199
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f [AV in GlobalBuffer] T-p S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
200
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
201
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
202
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,p [V in GlobalBuffer] T-m [AV in GlobalBuffer] T-p S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
203
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
204
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
205
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,p [V in GlobalBuffer] T-m [QK_softmax in GlobalBuffer] T-f S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
206
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p [QK_softmax in GlobalBuffer] T-f [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
207
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p [QK_softmax in GlobalBuffer] T-f [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
208
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-p [V in GlobalBuffer] T-m [QK_softmax in GlobalBuffer] T-f S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
209
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f [AV in GlobalBuffer] T-p [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
210
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f [AV in GlobalBuffer] T-p [V in GlobalBuffer] T-m S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
211
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,h,m,p [QK_softmax in GlobalBuffer] T-f [V in GlobalBuffer] T-m [AV in GlobalBuffer] T-p S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
212
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,p [V in GlobalBuffer] T-m [AV in GlobalBuffer] T-p [QK_softmax in GlobalBuffer] T-f S-Z-b,f,h,m,p [AV in LocalBuffer] T-p [QK_softmax in LocalBuffer] T-f S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
213
+ "WARNING \t[V,QK_softmax,AV in MainMemory] T-b,f,h,p [V in GlobalBuffer] T-m [QK_softmax in GlobalBuffer] T-f [AV in GlobalBuffer] T-p S-Z-b,f,h,m,p [QK_softmax in LocalBuffer] T-f [AV in LocalBuffer] T-p S-Y-p S-X-f [V in Register] T-m MAC computes AV\n",
214
+ "WARNING Einsum Z has 22 pmapping templates:\n",
215
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
216
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
217
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
218
+ "WARNING \t[Z,WZ,AV in MainMemory] T-f,g,h [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
219
+ "WARNING \t[Z,WZ,AV in MainMemory] T-f,g,h [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
220
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
221
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
222
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
223
+ "WARNING \t[Z,WZ,AV in MainMemory] T-f,g,h [WZ in GlobalBuffer] T-b,m [AV in GlobalBuffer] T-g S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
224
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g [Z in GlobalBuffer] T-f,h S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
225
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h [AV in GlobalBuffer] T-g S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
226
+ "WARNING \t[Z,WZ,AV in MainMemory] T-f,g,h [WZ in GlobalBuffer] T-b,m [Z in GlobalBuffer] T-f,h S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
227
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
228
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
229
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g [WZ in GlobalBuffer] T-b,m [Z in GlobalBuffer] T-f,h S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
230
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g [Z in GlobalBuffer] T-f,h [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
231
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,f,h,m [AV in GlobalBuffer] T-g [Z in GlobalBuffer] T-f,h [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
232
+ "WARNING \t[Z,WZ,AV in MainMemory] T-f,g,h [WZ in GlobalBuffer] T-b,m [AV in GlobalBuffer] T-g [Z in GlobalBuffer] T-f,h S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
233
+ "WARNING \t[Z,WZ,AV in MainMemory] T-f,g,h [WZ in GlobalBuffer] T-b,m [Z in GlobalBuffer] T-f,h [AV in GlobalBuffer] T-g S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
234
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h [AV in GlobalBuffer] T-g [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [AV in LocalBuffer] T-g [Z in LocalBuffer] T-f,h S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
235
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h [AV in GlobalBuffer] T-g [WZ in GlobalBuffer] T-b,m S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
236
+ "WARNING \t[Z,WZ,AV in MainMemory] T-b,g,m [Z in GlobalBuffer] T-f,h [WZ in GlobalBuffer] T-b,m [AV in GlobalBuffer] T-g S-Z-b,f,g,h,m [Z in LocalBuffer] T-f,h [AV in LocalBuffer] T-g S-Y-f,h S-X-g [WZ in Register] T-b,m MAC computes Z\n",
237
+ "WARNING Einsum FFA has 22 pmapping templates:\n",
238
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
239
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
240
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
241
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-c,g [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
242
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-c,g [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
243
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
244
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
245
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
246
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-c,g [WFFA in GlobalBuffer] T-b,m [FFA in GlobalBuffer] T-g S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
247
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g [Z in GlobalBuffer] T-c S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
248
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c [FFA in GlobalBuffer] T-g S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
249
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-c,g [WFFA in GlobalBuffer] T-b,m [Z in GlobalBuffer] T-c S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
250
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
251
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
252
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g [WFFA in GlobalBuffer] T-b,m [Z in GlobalBuffer] T-c S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
253
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g [Z in GlobalBuffer] T-c [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
254
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-g [Z in GlobalBuffer] T-c [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
255
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-c,g [WFFA in GlobalBuffer] T-b,m [FFA in GlobalBuffer] T-g [Z in GlobalBuffer] T-c S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
256
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-c,g [WFFA in GlobalBuffer] T-b,m [Z in GlobalBuffer] T-c [FFA in GlobalBuffer] T-g S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
257
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c [FFA in GlobalBuffer] T-g [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [FFA in LocalBuffer] T-g [Z in LocalBuffer] T-c S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
258
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c [FFA in GlobalBuffer] T-g [WFFA in GlobalBuffer] T-b,m S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
259
+ "WARNING \t[Z,WFFA,FFA in MainMemory] T-b,g,m [Z in GlobalBuffer] T-c [WFFA in GlobalBuffer] T-b,m [FFA in GlobalBuffer] T-g S-Z-b,c,g,m [Z in LocalBuffer] T-c [FFA in LocalBuffer] T-g S-Y-g S-X-c [WFFA in Register] T-b,m MAC computes FFA\n",
260
+ "WARNING Einsum FFB has 22 pmapping templates:\n",
261
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
262
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
263
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
264
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
265
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-c,j [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
266
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-c,j [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
267
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j [FFB in GlobalBuffer] T-c S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
268
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c [FFA in GlobalBuffer] T-j S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
269
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
270
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
271
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-c,j [WFFB in GlobalBuffer] T-b,m [FFA in GlobalBuffer] T-j S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
272
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
273
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
274
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-c,j [WFFB in GlobalBuffer] T-b,m [FFB in GlobalBuffer] T-c S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
275
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j [FFB in GlobalBuffer] T-c [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
276
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j [FFB in GlobalBuffer] T-c [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
277
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,c,m [FFA in GlobalBuffer] T-j [WFFB in GlobalBuffer] T-b,m [FFB in GlobalBuffer] T-c S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
278
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c [FFA in GlobalBuffer] T-j [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
279
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c [FFA in GlobalBuffer] T-j [WFFB in GlobalBuffer] T-b,m S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
280
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-b,j,m [FFB in GlobalBuffer] T-c [WFFB in GlobalBuffer] T-b,m [FFA in GlobalBuffer] T-j S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
281
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-c,j [WFFB in GlobalBuffer] T-b,m [FFA in GlobalBuffer] T-j [FFB in GlobalBuffer] T-c S-Z-b,c,j,m [FFA in LocalBuffer] T-j [FFB in LocalBuffer] T-c S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
282
+ "WARNING \t[WFFB,FFB,FFA in MainMemory] T-c,j [WFFB in GlobalBuffer] T-b,m [FFB in GlobalBuffer] T-c [FFA in GlobalBuffer] T-j S-Z-b,c,j,m [FFB in LocalBuffer] T-c [FFA in LocalBuffer] T-j S-Y-c S-X-j [WFFB in Register] T-b,m MAC computes FFB\n",
283
+ "WARNING Insufficient jobs available to utilize available threads. Splitting jobs into smaller chunks.\n",
284
+ "Generating pmappings: 100% 183/183 [00:18<00:00, 10.00it/s]\n",
285
+ "Grouping pmappings for V: 100% 1/1 [00:02<00:00, 2.08s/it]\n",
286
+ "Grouping pmappings for K: 100% 1/1 [00:00<00:00, 76.60it/s]\n",
287
+ "Grouping pmappings for Q: 100% 1/1 [00:00<00:00, 80.82it/s]\n",
288
+ "Grouping pmappings for QK: 100% 1/1 [00:00<00:00, 91.17it/s]\n",
289
+ "Grouping pmappings for QK_softmax: 100% 1/1 [00:00<00:00, 338.36it/s]\n",
290
+ "Grouping pmappings for AV: 100% 1/1 [00:00<00:00, 53.25it/s]\n",
291
+ "Grouping pmappings for Z: 100% 1/1 [00:00<00:00, 51.58it/s]\n",
292
+ "Grouping pmappings for FFA: 100% 1/1 [00:00<00:00, 113.61it/s]\n",
293
+ "Grouping pmappings for FFB: 100% 1/1 [00:00<00:00, 94.91it/s]"
294
+ ]
295
+ },
296
+ {
297
+ "name": "stdout",
298
+ "output_type": "stream",
299
+ "text": [
300
+ "V: 4.69e12 total, 4.48e09 (1/1.05e03) valid, 3.31e05 (1/1.42e07) evaluated, 1 (1/4.69e12) Pareto-Optimal\n",
301
+ "Q: 5.27e12 total, 9.29e09 (1/567) valid, 7.49e05 (1/7.03e06) evaluated, 1 (1/5.27e12) Pareto-Optimal\n",
302
+ "K: 5.27e12 total, 9.29e09 (1/567) valid, 7.49e05 (1/7.03e06) evaluated, 1 (1/5.27e12) Pareto-Optimal\n",
303
+ "Z: 4.30e12 total, 8.89e09 (1/484) valid, 7.28e05 (1/5.91e06) evaluated, 1 (1/4.30e12) Pareto-Optimal\n",
304
+ "QK: 1.13e10 total, 2.35e06 (1/4.81e03) valid, 5.10e04 (1/2.21e05) evaluated, 1 (1/1.13e10) Pareto-Optimal\n",
305
+ "AV: 1.01e10 total, 1.92e06 (1/5.29e03) valid, 6.40e04 (1/1.58e05) evaluated, 1 (1/1.01e10) Pareto-Optimal\n",
306
+ "FFA: 6.16e11 total, 5.44e08 (1/1.13e03) valid, 8.77e05 (1/7.03e05) evaluated, 1 (1/6.16e11) Pareto-Optimal\n",
307
+ "FFB: 6.15e11 total, 4.83e08 (1/1.27e03) valid, 8.75e05 (1/7.02e05) evaluated, 1 (1/6.15e11) Pareto-Optimal\n",
308
+ "QK_softmax: 7.28e04 total, 90 (1/809) valid, 204 (1/357) evaluated, 1 (1/7.28e04) Pareto-Optimal\n",
309
+ "I: 1.55e03 total, 10 (1/155) valid, 19 (1/81) evaluated, 1 (1/1.55e03) Pareto-Optimal\n",
310
+ "Total: 2.08e13 total, 3.30e10 (1/630) valid, 4.42e06 (1/4.69e06) evaluated, 10 (1/2.08e12) Pareto-Optimal\n"
311
+ ]
312
+ },
313
+ {
314
+ "name": "stderr",
315
+ "output_type": "stream",
316
+ "text": [
317
+ "\n"
318
+ ]
319
+ }
320
+ ],
321
+ "source": [
322
+ "# Generate the pmappings.\n",
323
+ "\n",
324
+ "# Set optimization metrics\n",
325
+ "spec.mapper.ffm.metrics = ff.mapper.FFM.Metrics.ENERGY\n",
326
+ "# spec.mapper.ffm.metrics = ff.mapper.FFM.Metrics.LATENCY\n",
327
+ "\n",
328
+ "pmappings = ff.mapper.FFM.make_pmappings(\n",
329
+ " spec,\n",
330
+ " # Having can_combine_multiple_runs=False enables some optimizations, but prevents\n",
331
+ " # you from doing things like:\n",
332
+ " # pmappings = make_pmappings(*args_a) | make_pmappings(*args_b)\n",
333
+ " can_combine_multiple_runs=False\n",
334
+ ")"
335
+ ]
336
+ },
337
+ {
338
+ "cell_type": "code",
339
+ "execution_count": 4,
340
+ "metadata": {},
341
+ "outputs": [
342
+ {
343
+ "name": "stdout",
344
+ "output_type": "stream",
345
+ "text": [
346
+ "Total number of pmappings: 20769965870080.746\n",
347
+ "Number of valid pmappings: 32977033174.29269\n",
348
+ "Number of Pareto-optimal pmappings: 10\n",
349
+ "Number of evaluated pmappings: 4424068\n"
350
+ ]
351
+ }
352
+ ],
353
+ "source": [
354
+ "# Output some stats about the generated pmappings.\n",
355
+ "print(f\"Total number of pmappings: {pmappings.total_pmappings()}\")\n",
356
+ "print(f\"Number of valid pmappings: {pmappings.valid_pmappings()}\")\n",
357
+ "print(f\"Number of Pareto-optimal pmappings: {pmappings.pareto_optimal_pmappings()}\")\n",
358
+ "print(f\"Number of evaluated pmappings: {pmappings.evaluated_pmappings()}\")"
359
+ ]
360
+ },
361
+ {
362
+ "cell_type": "code",
363
+ "execution_count": 5,
364
+ "metadata": {},
365
+ "outputs": [
366
+ {
367
+ "name": "stdout",
368
+ "output_type": "stream",
369
+ "text": [
370
+ "Einsum I has 1 pmappings with 1 compatibilities\n",
371
+ "Einsum V has 1 pmappings with 1 compatibilities\n",
372
+ "Einsum K has 1 pmappings with 1 compatibilities\n",
373
+ "Einsum Q has 1 pmappings with 1 compatibilities\n",
374
+ "Einsum QK has 1 pmappings with 1 compatibilities\n",
375
+ "Einsum QK_softmax has 1 pmappings with 1 compatibilities\n",
376
+ "Einsum AV has 1 pmappings with 1 compatibilities\n",
377
+ "Einsum Z has 1 pmappings with 1 compatibilities\n",
378
+ "Einsum FFA has 1 pmappings with 1 compatibilities\n",
379
+ "Einsum FFB has 1 pmappings with 1 compatibilities\n"
380
+ ]
381
+ },
382
+ {
383
+ "name": "stderr",
384
+ "output_type": "stream",
385
+ "text": [
386
+ "Compressing pmappings: 100% 10/10 [00:00<00:00, 875.95it/s]\n"
387
+ ]
388
+ },
389
+ {
390
+ "name": "stdout",
391
+ "output_type": "stream",
392
+ "text": [
393
+ "Not tracking GlobalBuffer because it is never reserved for multiple pmappings.\n",
394
+ "Not tracking LocalBuffer because it is never reserved for multiple pmappings.\n",
395
+ "Not tracking MainMemory because it is never reserved for multiple pmappings.\n",
396
+ "Not tracking Register because it is never reserved for multiple pmappings.\n"
397
+ ]
398
+ },
399
+ {
400
+ "name": "stderr",
401
+ "output_type": "stream",
402
+ "text": [
403
+ "Removing unneeded reservations for I: 100% 2/2 [00:00<00:00, 170.82it/s]\n",
404
+ "Removing unneeded reservations for V: 100% 2/2 [00:00<00:00, 180.02it/s]\n",
405
+ "Removing unneeded reservations for K: 100% 2/2 [00:00<00:00, 184.07it/s]\n",
406
+ "Removing unneeded reservations for Q: 100% 2/2 [00:00<00:00, 175.85it/s]\n",
407
+ "Removing unneeded reservations for QK: 100% 2/2 [00:00<00:00, 183.53it/s]\n",
408
+ "Removing unneeded reservations for QK_softmax: 100% 2/2 [00:00<00:00, 181.81it/s]\n",
409
+ "Removing unneeded reservations for AV: 100% 2/2 [00:00<00:00, 182.31it/s]\n",
410
+ "Removing unneeded reservations for Z: 100% 2/2 [00:00<00:00, 173.06it/s]\n",
411
+ "Removing unneeded reservations for FFA: 100% 2/2 [00:00<00:00, 181.86it/s]\n",
412
+ "Removing unneeded reservations for FFB: 100% 2/2 [00:00<00:00, 171.25it/s]\n",
413
+ "Grouping pmappings for V (2/10): 100% 1/1 [00:00<00:00, 445.78it/s]\n",
414
+ "Grouping pmappings for K (3/10): 100% 1/1 [00:00<00:00, 363.17it/s]\n",
415
+ "Grouping pmappings for Q (4/10): 100% 1/1 [00:00<00:00, 653.62it/s]\n",
416
+ "Grouping pmappings for QK (5/10): 100% 1/1 [00:00<00:00, 520.90it/s]\n",
417
+ "Grouping pmappings for QK_softmax (6/10): 100% 1/1 [00:00<00:00, 614.37it/s]\n",
418
+ "Grouping pmappings for AV (7/10): 100% 1/1 [00:00<00:00, 767.91it/s]\n",
419
+ "Grouping pmappings for Z (8/10): 100% 1/1 [00:00<00:00, 653.83it/s]\n",
420
+ "Grouping pmappings for FFA (9/10): 100% 1/1 [00:00<00:00, 924.87it/s]\n",
421
+ "Grouping pmappings for FFB (10/10): 100% 1/1 [00:00<00:00, 970.68it/s]\n",
422
+ "Grouping pmappings: 100% 1/1 [00:00<00:00, 1001.51it/s]\n",
423
+ "Merging pmappings for I <--> V (2/10): 100% 1/1 [00:00<00:00, 240.28it/s]\n",
424
+ "Merging pmappings for V <--> K (3/10): 100% 1/1 [00:00<00:00, 265.40it/s]\n",
425
+ "Merging pmappings for K <--> Q (4/10): 100% 1/1 [00:00<00:00, 200.00it/s]\n",
426
+ "Merging pmappings for Q <--> QK (5/10): 100% 1/1 [00:00<00:00, 226.67it/s]\n",
427
+ "Merging pmappings for QK <--> QK_softmax (6/10): 100% 1/1 [00:00<00:00, 221.22it/s]\n",
428
+ "Merging pmappings for QK_softmax <--> AV (7/10): 100% 1/1 [00:00<00:00, 288.78it/s]\n",
429
+ "Merging pmappings for AV <--> Z (8/10): 100% 1/1 [00:00<00:00, 233.61it/s]\n",
430
+ "Merging pmappings for Z <--> FFA (9/10): 100% 1/1 [00:00<00:00, 249.29it/s]\n",
431
+ "Merging pmappings for FFA <--> FFB (10/10): 100% 1/1 [00:00<00:00, 247.41it/s]\n",
432
+ "Final consolidate: 100% 1/1 [00:00<00:00, 19972.88it/s]\n"
433
+ ]
434
+ }
435
+ ],
436
+ "source": [
437
+ "# Join the pmappings to create a full mapping.\n",
438
+ "mappings = ff.mapper.FFM.join_pmappings(\n",
439
+ " spec,\n",
440
+ " pmappings,\n",
441
+ ")"
442
+ ]
443
+ },
444
+ {
445
+ "cell_type": "code",
446
+ "execution_count": 6,
447
+ "metadata": {},
448
+ "outputs": [
449
+ {
450
+ "data": {
451
+ "image/svg+xml": [
452
+ "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"2475pt\" height=\"1209pt\" viewBox=\"0.00 0.00 2474.50 1208.62\">\n",
453
+ "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 1204.62)\">\n",
454
+ "<title>G</title>\n",
455
+ "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-1204.62 2470.5,-1204.62 2470.5,4 -4,4\"/>\n",
456
+ "<!-- Storage_139989534993424 -->\n",
457
+ "<g id=\"node1\" class=\"node\">\n",
458
+ "<title>Storage_139989534993424</title>\n",
459
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1343,-1197.3C1343,-1199.17 1249.1,-1200.69 1133.5,-1200.69 1017.9,-1200.69 924,-1199.17 924,-1197.3 924,-1197.3 924,-1166.82 924,-1166.82 924,-1164.96 1017.9,-1163.44 1133.5,-1163.44 1249.1,-1163.44 1343,-1164.96 1343,-1166.82 1343,-1166.82 1343,-1197.3 1343,-1197.3\"/>\n",
460
+ "<path fill=\"none\" stroke=\"black\" d=\"M1343,-1197.3C1343,-1195.43 1249.1,-1193.91 1133.5,-1193.91 1017.9,-1193.91 924,-1195.43 924,-1197.3\"/>\n",
461
+ "<text text-anchor=\"start\" x=\"926.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
462
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"1052,-1170.56 1052,-1192.56 1065,-1192.56 1065,-1170.56 1052,-1170.56\"/>\n",
463
+ "<text text-anchor=\"start\" x=\"1056.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
464
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1070,-1170.56 1070,-1192.56 1088,-1192.56 1088,-1170.56 1070,-1170.56\"/>\n",
465
+ "<text text-anchor=\"start\" x=\"1074.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
466
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"1093,-1170.56 1093,-1192.56 1110,-1192.56 1110,-1170.56 1093,-1170.56\"/>\n",
467
+ "<text text-anchor=\"start\" x=\"1097.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
468
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"1115,-1170.56 1115,-1192.56 1134,-1192.56 1134,-1170.56 1115,-1170.56\"/>\n",
469
+ "<text text-anchor=\"start\" x=\"1119.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
470
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1139,-1170.56 1139,-1192.56 1166,-1192.56 1166,-1170.56 1139,-1170.56\"/>\n",
471
+ "<text text-anchor=\"start\" x=\"1143.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
472
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1171,-1170.56 1171,-1192.56 1252,-1192.56 1252,-1170.56 1171,-1170.56\"/>\n",
473
+ "<text text-anchor=\"start\" x=\"1175.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
474
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1257,-1170.56 1257,-1192.56 1282,-1192.56 1282,-1170.56 1257,-1170.56\"/>\n",
475
+ "<text text-anchor=\"start\" x=\"1261.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
476
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"1287,-1170.56 1287,-1192.56 1305,-1192.56 1305,-1170.56 1287,-1170.56\"/>\n",
477
+ "<text text-anchor=\"start\" x=\"1291.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
478
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"1310,-1170.56 1310,-1192.56 1341,-1192.56 1341,-1170.56 1310,-1170.56\"/>\n",
479
+ "<text text-anchor=\"start\" x=\"1314.5\" y=\"-1178.46\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
480
+ "</g>\n",
481
+ "<!-- Sequential_139990948662160 -->\n",
482
+ "<g id=\"node2\" class=\"node\">\n",
483
+ "<title>Sequential_139990948662160</title>\n",
484
+ "<polygon fill=\"#ffffe0\" stroke=\"black\" points=\"1160.5,-1131.5 1147,-1149.5 1120,-1149.5 1106.5,-1131.5 1120,-1113.5 1147,-1113.5 1160.5,-1131.5\"/>\n",
485
+ "<text text-anchor=\"middle\" x=\"1133.5\" y=\"-1128.4\" font-family=\"Arial\" font-size=\"12.00\">Split</text>\n",
486
+ "</g>\n",
487
+ "<!-- Storage_139989534993424&#45;&gt;Sequential_139990948662160 -->\n",
488
+ "<g id=\"edge1\" class=\"edge\">\n",
489
+ "<title>Storage_139989534993424-&gt;Sequential_139990948662160</title>\n",
490
+ "<path fill=\"none\" stroke=\"black\" d=\"M1133.5,-1163.26C1133.5,-1162.15 1133.5,-1161.02 1133.5,-1159.88\"/>\n",
491
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1137,-1159.66 1133.5,-1149.66 1130,-1159.66 1137,-1159.66\"/>\n",
492
+ "</g>\n",
493
+ "<!-- Storage_139989534993104 -->\n",
494
+ "<g id=\"node3\" class=\"node\">\n",
495
+ "<title>Storage_139989534993104</title>\n",
496
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M265.5,-1096.18C265.5,-1098.04 229.64,-1099.56 185.5,-1099.56 141.36,-1099.56 105.5,-1098.04 105.5,-1096.18 105.5,-1096.18 105.5,-1065.7 105.5,-1065.7 105.5,-1063.83 141.36,-1062.31 185.5,-1062.31 229.64,-1062.31 265.5,-1063.83 265.5,-1065.7 265.5,-1065.7 265.5,-1096.18 265.5,-1096.18\"/>\n",
497
+ "<path fill=\"none\" stroke=\"black\" d=\"M265.5,-1096.18C265.5,-1094.31 229.64,-1092.79 185.5,-1092.79 141.36,-1092.79 105.5,-1094.31 105.5,-1096.18\"/>\n",
498
+ "<text text-anchor=\"start\" x=\"107.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
499
+ "<polygon fill=\"none\" stroke=\"#ff00ff\" stroke-width=\"5\" points=\"233,-1069.44 233,-1091.44 263,-1091.44 263,-1069.44 233,-1069.44\"/>\n",
500
+ "<text text-anchor=\"start\" x=\"237.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">I_in</text>\n",
501
+ "</g>\n",
502
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989534993104 -->\n",
503
+ "<g id=\"edge2\" class=\"edge\">\n",
504
+ "<title>Sequential_139990948662160-&gt;Storage_139989534993104</title>\n",
505
+ "<path fill=\"none\" stroke=\"black\" d=\"M1106.74,-1130.82C1001.85,-1131.8 608.74,-1132.89 287.5,-1099.5 283.59,-1099.09 279.6,-1098.63 275.58,-1098.12\"/>\n",
506
+ "<polygon fill=\"black\" stroke=\"black\" points=\"275.92,-1094.63 265.54,-1096.76 274.98,-1101.57 275.92,-1094.63\"/>\n",
507
+ "</g>\n",
508
+ "<!-- Storage_139989535844992 -->\n",
509
+ "<g id=\"node9\" class=\"node\">\n",
510
+ "<title>Storage_139989535844992</title>\n",
511
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M456.5,-1096.18C456.5,-1098.04 420.64,-1099.56 376.5,-1099.56 332.36,-1099.56 296.5,-1098.04 296.5,-1096.18 296.5,-1096.18 296.5,-1065.7 296.5,-1065.7 296.5,-1063.83 332.36,-1062.31 376.5,-1062.31 420.64,-1062.31 456.5,-1063.83 456.5,-1065.7 456.5,-1065.7 456.5,-1096.18 456.5,-1096.18\"/>\n",
512
+ "<path fill=\"none\" stroke=\"black\" d=\"M456.5,-1096.18C456.5,-1094.31 420.64,-1092.79 376.5,-1092.79 332.36,-1092.79 296.5,-1094.31 296.5,-1096.18\"/>\n",
513
+ "<text text-anchor=\"start\" x=\"298.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
514
+ "<polygon fill=\"none\" stroke=\"#f000ff\" stroke-width=\"5\" points=\"424,-1069.44 424,-1091.44 454,-1091.44 454,-1069.44 424,-1069.44\"/>\n",
515
+ "<text text-anchor=\"start\" x=\"428.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">WV</text>\n",
516
+ "</g>\n",
517
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989535844992 -->\n",
518
+ "<g id=\"edge3\" class=\"edge\">\n",
519
+ "<title>Sequential_139990948662160-&gt;Storage_139989535844992</title>\n",
520
+ "<path fill=\"none\" stroke=\"black\" d=\"M1107.31,-1130.25C1019.57,-1129.2 728.01,-1123.96 488.5,-1099.5 481.37,-1098.77 473.99,-1097.89 466.59,-1096.93\"/>\n",
521
+ "<polygon fill=\"black\" stroke=\"black\" points=\"466.89,-1093.43 456.51,-1095.55 465.95,-1100.37 466.89,-1093.43\"/>\n",
522
+ "</g>\n",
523
+ "<!-- Storage_139989534754528 -->\n",
524
+ "<g id=\"node31\" class=\"node\">\n",
525
+ "<title>Storage_139989534754528</title>\n",
526
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M657,-1096.18C657,-1098.04 621.37,-1099.56 577.5,-1099.56 533.63,-1099.56 498,-1098.04 498,-1096.18 498,-1096.18 498,-1065.7 498,-1065.7 498,-1063.83 533.63,-1062.31 577.5,-1062.31 621.37,-1062.31 657,-1063.83 657,-1065.7 657,-1065.7 657,-1096.18 657,-1096.18\"/>\n",
527
+ "<path fill=\"none\" stroke=\"black\" d=\"M657,-1096.18C657,-1094.31 621.37,-1092.79 577.5,-1092.79 533.63,-1092.79 498,-1094.31 498,-1096.18\"/>\n",
528
+ "<text text-anchor=\"start\" x=\"500.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
529
+ "<polygon fill=\"none\" stroke=\"#3c00ff\" stroke-width=\"5\" points=\"626,-1069.44 626,-1091.44 655,-1091.44 655,-1069.44 626,-1069.44\"/>\n",
530
+ "<text text-anchor=\"start\" x=\"630.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">WK</text>\n",
531
+ "</g>\n",
532
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989534754528 -->\n",
533
+ "<g id=\"edge4\" class=\"edge\">\n",
534
+ "<title>Sequential_139990948662160-&gt;Storage_139989534754528</title>\n",
535
+ "<path fill=\"none\" stroke=\"black\" d=\"M1107.51,-1129.97C1037.79,-1128.3 840.7,-1121.92 666.23,-1099.48\"/>\n",
536
+ "<polygon fill=\"black\" stroke=\"black\" points=\"666.47,-1095.98 656.1,-1098.15 665.56,-1102.92 666.47,-1095.98\"/>\n",
537
+ "</g>\n",
538
+ "<!-- Storage_139989533580000 -->\n",
539
+ "<g id=\"node53\" class=\"node\">\n",
540
+ "<title>Storage_139989533580000</title>\n",
541
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M836,-1096.18C836,-1098.04 799.92,-1099.56 755.5,-1099.56 711.08,-1099.56 675,-1098.04 675,-1096.18 675,-1096.18 675,-1065.7 675,-1065.7 675,-1063.83 711.08,-1062.31 755.5,-1062.31 799.92,-1062.31 836,-1063.83 836,-1065.7 836,-1065.7 836,-1096.18 836,-1096.18\"/>\n",
542
+ "<path fill=\"none\" stroke=\"black\" d=\"M836,-1096.18C836,-1094.31 799.92,-1092.79 755.5,-1092.79 711.08,-1092.79 675,-1094.31 675,-1096.18\"/>\n",
543
+ "<text text-anchor=\"start\" x=\"677.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
544
+ "<polygon fill=\"none\" stroke=\"#9500ff\" stroke-width=\"5\" points=\"803,-1069.44 803,-1091.44 834,-1091.44 834,-1069.44 803,-1069.44\"/>\n",
545
+ "<text text-anchor=\"start\" x=\"807.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">WQ</text>\n",
546
+ "</g>\n",
547
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989533580000 -->\n",
548
+ "<g id=\"edge5\" class=\"edge\">\n",
549
+ "<title>Sequential_139990948662160-&gt;Storage_139989533580000</title>\n",
550
+ "<path fill=\"none\" stroke=\"black\" d=\"M1108.66,-1128.58C1060.11,-1124.66 949.01,-1114.92 845.49,-1099.57\"/>\n",
551
+ "<polygon fill=\"black\" stroke=\"black\" points=\"845.9,-1096.09 835.5,-1098.07 844.86,-1103.02 845.9,-1096.09\"/>\n",
552
+ "</g>\n",
553
+ "<!-- Reservation_139989530259568 -->\n",
554
+ "<g id=\"node75\" class=\"node\">\n",
555
+ "<title>Reservation_139989530259568</title>\n",
556
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1115,-1098.94 854,-1098.94 854,-1094.94 850,-1094.94 850,-1090.94 854,-1090.94 854,-1070.94 850,-1070.94 850,-1066.94 854,-1066.94 854,-1062.94 1115,-1062.94 1115,-1098.94\"/>\n",
557
+ "<polyline fill=\"none\" stroke=\"black\" points=\"854,-1094.94 858,-1094.94 858,-1090.94 854,-1090.94 \"/>\n",
558
+ "<polyline fill=\"none\" stroke=\"black\" points=\"854,-1070.94 858,-1070.94 858,-1066.94 854,-1066.94 \"/>\n",
559
+ "<text text-anchor=\"start\" x=\"856.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
560
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1017,-1069.44 1017,-1091.44 1035,-1091.44 1035,-1069.44 1017,-1069.44\"/>\n",
561
+ "<text text-anchor=\"start\" x=\"1021.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
562
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1040,-1069.44 1040,-1091.44 1067,-1091.44 1067,-1069.44 1040,-1069.44\"/>\n",
563
+ "<text text-anchor=\"start\" x=\"1044.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
564
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"1072,-1069.44 1072,-1091.44 1091,-1091.44 1091,-1069.44 1072,-1069.44\"/>\n",
565
+ "<text text-anchor=\"start\" x=\"1076.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
566
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"1096,-1069.44 1096,-1091.44 1113,-1091.44 1113,-1069.44 1096,-1069.44\"/>\n",
567
+ "<text text-anchor=\"start\" x=\"1100.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
568
+ "</g>\n",
569
+ "<!-- Sequential_139990948662160&#45;&gt;Reservation_139989530259568 -->\n",
570
+ "<g id=\"edge6\" class=\"edge\">\n",
571
+ "<title>Sequential_139990948662160-&gt;Reservation_139989530259568</title>\n",
572
+ "<path fill=\"none\" stroke=\"black\" d=\"M1112.15,-1123.54C1094.9,-1117.92 1069.7,-1109.71 1046.24,-1102.06\"/>\n",
573
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1047.26,-1098.71 1036.67,-1098.94 1045.09,-1105.37 1047.26,-1098.71\"/>\n",
574
+ "</g>\n",
575
+ "<!-- Reservation_139989530543200 -->\n",
576
+ "<g id=\"node92\" class=\"node\">\n",
577
+ "<title>Reservation_139989530543200</title>\n",
578
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1434,-1098.94 1133,-1098.94 1133,-1094.94 1129,-1094.94 1129,-1090.94 1133,-1090.94 1133,-1070.94 1129,-1070.94 1129,-1066.94 1133,-1066.94 1133,-1062.94 1434,-1062.94 1434,-1098.94\"/>\n",
579
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1133,-1094.94 1137,-1094.94 1137,-1090.94 1133,-1090.94 \"/>\n",
580
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1133,-1070.94 1137,-1070.94 1137,-1066.94 1133,-1066.94 \"/>\n",
581
+ "<text text-anchor=\"start\" x=\"1135.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
582
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1296,-1069.44 1296,-1091.44 1314,-1091.44 1314,-1069.44 1296,-1069.44\"/>\n",
583
+ "<text text-anchor=\"start\" x=\"1300.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
584
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1319,-1069.44 1319,-1091.44 1400,-1091.44 1400,-1069.44 1319,-1069.44\"/>\n",
585
+ "<text text-anchor=\"start\" x=\"1323.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
586
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1405,-1069.44 1405,-1091.44 1432,-1091.44 1432,-1069.44 1405,-1069.44\"/>\n",
587
+ "<text text-anchor=\"start\" x=\"1409.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
588
+ "</g>\n",
589
+ "<!-- Sequential_139990948662160&#45;&gt;Reservation_139989530543200 -->\n",
590
+ "<g id=\"edge7\" class=\"edge\">\n",
591
+ "<title>Sequential_139990948662160-&gt;Reservation_139989530543200</title>\n",
592
+ "<path fill=\"none\" stroke=\"black\" d=\"M1154.67,-1123.65C1171.99,-1118.04 1197.4,-1109.81 1221.09,-1102.14\"/>\n",
593
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1222.32,-1105.42 1230.76,-1099.01 1220.17,-1098.76 1222.32,-1105.42\"/>\n",
594
+ "</g>\n",
595
+ "<!-- Reservation_139989529912704 -->\n",
596
+ "<g id=\"node100\" class=\"node\">\n",
597
+ "<title>Reservation_139989529912704</title>\n",
598
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1751,-1098.94 1452,-1098.94 1452,-1094.94 1448,-1094.94 1448,-1090.94 1452,-1090.94 1452,-1070.94 1448,-1070.94 1448,-1066.94 1452,-1066.94 1452,-1062.94 1751,-1062.94 1751,-1098.94\"/>\n",
599
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1452,-1094.94 1456,-1094.94 1456,-1090.94 1452,-1090.94 \"/>\n",
600
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1452,-1070.94 1456,-1070.94 1456,-1066.94 1452,-1066.94 \"/>\n",
601
+ "<text text-anchor=\"start\" x=\"1454.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
602
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1615,-1069.44 1615,-1091.44 1633,-1091.44 1633,-1069.44 1615,-1069.44\"/>\n",
603
+ "<text text-anchor=\"start\" x=\"1619.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
604
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1638,-1069.44 1638,-1091.44 1719,-1091.44 1719,-1069.44 1638,-1069.44\"/>\n",
605
+ "<text text-anchor=\"start\" x=\"1642.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
606
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1724,-1069.44 1724,-1091.44 1749,-1091.44 1749,-1069.44 1724,-1069.44\"/>\n",
607
+ "<text text-anchor=\"start\" x=\"1728.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
608
+ "</g>\n",
609
+ "<!-- Sequential_139990948662160&#45;&gt;Reservation_139989529912704 -->\n",
610
+ "<g id=\"edge8\" class=\"edge\">\n",
611
+ "<title>Sequential_139990948662160-&gt;Reservation_139989529912704</title>\n",
612
+ "<path fill=\"none\" stroke=\"black\" d=\"M1158.34,-1128.09C1209.29,-1123.14 1329.55,-1111.35 1441.58,-1099.59\"/>\n",
613
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1442.12,-1103.05 1451.7,-1098.53 1441.39,-1096.09 1442.12,-1103.05\"/>\n",
614
+ "</g>\n",
615
+ "<!-- Storage_139989529182928 -->\n",
616
+ "<g id=\"node117\" class=\"node\">\n",
617
+ "<title>Storage_139989529182928</title>\n",
618
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1929.5,-1096.18C1929.5,-1098.04 1893.64,-1099.56 1849.5,-1099.56 1805.36,-1099.56 1769.5,-1098.04 1769.5,-1096.18 1769.5,-1096.18 1769.5,-1065.7 1769.5,-1065.7 1769.5,-1063.83 1805.36,-1062.31 1849.5,-1062.31 1893.64,-1062.31 1929.5,-1063.83 1929.5,-1065.7 1929.5,-1065.7 1929.5,-1096.18 1929.5,-1096.18\"/>\n",
619
+ "<path fill=\"none\" stroke=\"black\" d=\"M1929.5,-1096.18C1929.5,-1094.31 1893.64,-1092.79 1849.5,-1092.79 1805.36,-1092.79 1769.5,-1094.31 1769.5,-1096.18\"/>\n",
620
+ "<text text-anchor=\"start\" x=\"1771.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
621
+ "<polygon fill=\"none\" stroke=\"#ff00b4\" stroke-width=\"5\" points=\"1897,-1069.44 1897,-1091.44 1927,-1091.44 1927,-1069.44 1897,-1069.44\"/>\n",
622
+ "<text text-anchor=\"start\" x=\"1901.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">WZ</text>\n",
623
+ "</g>\n",
624
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989529182928 -->\n",
625
+ "<g id=\"edge9\" class=\"edge\">\n",
626
+ "<title>Sequential_139990948662160-&gt;Storage_139989529182928</title>\n",
627
+ "<path fill=\"none\" stroke=\"black\" d=\"M1159.85,-1130.54C1246.21,-1130.39 1528.34,-1127.63 1759.5,-1099.5 1759.72,-1099.47 1759.93,-1099.45 1760.15,-1099.42\"/>\n",
628
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1760.65,-1102.88 1770.09,-1098.07 1759.71,-1095.95 1760.65,-1102.88\"/>\n",
629
+ "</g>\n",
630
+ "<!-- Storage_139989527910416 -->\n",
631
+ "<g id=\"node139\" class=\"node\">\n",
632
+ "<title>Storage_139989527910416</title>\n",
633
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2121,-1096.18C2121,-1098.04 2082.23,-1099.56 2034.5,-1099.56 1986.77,-1099.56 1948,-1098.04 1948,-1096.18 1948,-1096.18 1948,-1065.7 1948,-1065.7 1948,-1063.83 1986.77,-1062.31 2034.5,-1062.31 2082.23,-1062.31 2121,-1063.83 2121,-1065.7 2121,-1065.7 2121,-1096.18 2121,-1096.18\"/>\n",
634
+ "<path fill=\"none\" stroke=\"black\" d=\"M2121,-1096.18C2121,-1094.31 2082.23,-1092.79 2034.5,-1092.79 1986.77,-1092.79 1948,-1094.31 1948,-1096.18\"/>\n",
635
+ "<text text-anchor=\"start\" x=\"1950.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
636
+ "<polygon fill=\"none\" stroke=\"#000080\" stroke-width=\"5\" points=\"2076,-1069.44 2076,-1091.44 2119,-1091.44 2119,-1069.44 2076,-1069.44\"/>\n",
637
+ "<text text-anchor=\"start\" x=\"2080.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">WFFA</text>\n",
638
+ "</g>\n",
639
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989527910416 -->\n",
640
+ "<g id=\"edge10\" class=\"edge\">\n",
641
+ "<title>Sequential_139990948662160-&gt;Storage_139989527910416</title>\n",
642
+ "<path fill=\"none\" stroke=\"black\" d=\"M1160.36,-1130.85C1262.22,-1131.88 1634.39,-1133 1938.5,-1099.5 1938.84,-1099.46 1939.18,-1099.42 1939.52,-1099.39\"/>\n",
643
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1940.04,-1102.85 1949.53,-1098.15 1939.18,-1095.9 1940.04,-1102.85\"/>\n",
644
+ "</g>\n",
645
+ "<!-- Storage_139989526816608 -->\n",
646
+ "<g id=\"node160\" class=\"node\">\n",
647
+ "<title>Storage_139989526816608</title>\n",
648
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2389,-1096.18C2389,-1098.04 2342.16,-1099.56 2284.5,-1099.56 2226.84,-1099.56 2180,-1098.04 2180,-1096.18 2180,-1096.18 2180,-1065.7 2180,-1065.7 2180,-1063.83 2226.84,-1062.31 2284.5,-1062.31 2342.16,-1062.31 2389,-1063.83 2389,-1065.7 2389,-1065.7 2389,-1096.18 2389,-1096.18\"/>\n",
649
+ "<path fill=\"none\" stroke=\"black\" d=\"M2389,-1096.18C2389,-1094.31 2342.16,-1092.79 2284.5,-1092.79 2226.84,-1092.79 2180,-1094.31 2180,-1096.18\"/>\n",
650
+ "<text text-anchor=\"start\" x=\"2182.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reuses</text>\n",
651
+ "<polygon fill=\"none\" stroke=\"#808000\" stroke-width=\"5\" points=\"2308,-1069.44 2308,-1091.44 2351,-1091.44 2351,-1069.44 2308,-1069.44\"/>\n",
652
+ "<text text-anchor=\"start\" x=\"2312.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">WFFB</text>\n",
653
+ "<polygon fill=\"none\" stroke=\"#0000ff\" stroke-width=\"5\" points=\"2356,-1069.44 2356,-1091.44 2387,-1091.44 2387,-1069.44 2356,-1069.44\"/>\n",
654
+ "<text text-anchor=\"start\" x=\"2360.5\" y=\"-1077.34\" font-family=\"Arial\" font-size=\"12.00\">FFB</text>\n",
655
+ "</g>\n",
656
+ "<!-- Sequential_139990948662160&#45;&gt;Storage_139989526816608 -->\n",
657
+ "<g id=\"edge11\" class=\"edge\">\n",
658
+ "<title>Sequential_139990948662160-&gt;Storage_139989526816608</title>\n",
659
+ "<path fill=\"none\" stroke=\"black\" d=\"M1160.09,-1130.47C1275.58,-1130.17 1745.14,-1127.21 2129.5,-1099.5 2142.52,-1098.56 2156.14,-1097.35 2169.66,-1096.01\"/>\n",
660
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2170.38,-1099.46 2179.97,-1094.96 2169.67,-1092.49 2170.38,-1099.46\"/>\n",
661
+ "</g>\n",
662
+ "<!-- Reservation_139989534993184 -->\n",
663
+ "<g id=\"node4\" class=\"node\">\n",
664
+ "<title>Reservation_139989534993184</title>\n",
665
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"213,-1047.81 0,-1047.81 0,-1043.81 -4,-1043.81 -4,-1039.81 0,-1039.81 0,-1019.81 -4,-1019.81 -4,-1015.81 0,-1015.81 0,-1011.81 213,-1011.81 213,-1047.81\"/>\n",
666
+ "<polyline fill=\"none\" stroke=\"black\" points=\"0,-1043.81 4,-1043.81 4,-1039.81 0,-1039.81 \"/>\n",
667
+ "<polyline fill=\"none\" stroke=\"black\" points=\"0,-1019.81 4,-1019.81 4,-1015.81 0,-1015.81 \"/>\n",
668
+ "<text text-anchor=\"start\" x=\"2.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
669
+ "<polygon fill=\"none\" stroke=\"#ff00ff\" stroke-width=\"5\" points=\"163,-1018.31 163,-1040.31 193,-1040.31 193,-1018.31 163,-1018.31\"/>\n",
670
+ "<text text-anchor=\"start\" x=\"167.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">I_in</text>\n",
671
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"198,-1018.31 198,-1040.31 211,-1040.31 211,-1018.31 198,-1018.31\"/>\n",
672
+ "<text text-anchor=\"start\" x=\"202.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
673
+ "</g>\n",
674
+ "<!-- Storage_139989534993104&#45;&gt;Reservation_139989534993184 -->\n",
675
+ "<g id=\"edge12\" class=\"edge\">\n",
676
+ "<title>Storage_139989534993104-&gt;Reservation_139989534993184</title>\n",
677
+ "<path fill=\"none\" stroke=\"black\" d=\"M156.98,-1062.2C152.28,-1059.28 147.36,-1056.22 142.51,-1053.21\"/>\n",
678
+ "<polygon fill=\"black\" stroke=\"black\" points=\"144.26,-1050.17 133.92,-1047.86 140.57,-1056.12 144.26,-1050.17\"/>\n",
679
+ "</g>\n",
680
+ "<!-- Temporal_139989535844112 -->\n",
681
+ "<g id=\"node5\" class=\"node\">\n",
682
+ "<title>Temporal_139989535844112</title>\n",
683
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"175,-997.25 34,-997.25 34,-961.25 175,-961.25 175,-997.25\"/>\n",
684
+ "<text text-anchor=\"middle\" x=\"104.5\" y=\"-976.15\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
685
+ "</g>\n",
686
+ "<!-- Reservation_139989534993184&#45;&gt;Temporal_139989535844112 -->\n",
687
+ "<g id=\"edge13\" class=\"edge\">\n",
688
+ "<title>Reservation_139989534993184-&gt;Temporal_139989535844112</title>\n",
689
+ "<path fill=\"none\" stroke=\"black\" d=\"M105.79,-1011.55C105.74,-1010.27 105.68,-1008.95 105.63,-1007.62\"/>\n",
690
+ "<polygon fill=\"black\" stroke=\"black\" points=\"109.12,-1007.3 105.21,-997.45 102.12,-1007.59 109.12,-1007.3\"/>\n",
691
+ "</g>\n",
692
+ "<!-- Temporal_139989535844272 -->\n",
693
+ "<g id=\"node6\" class=\"node\">\n",
694
+ "<title>Temporal_139989535844272</title>\n",
695
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"182.5,-946.69 26.5,-946.69 26.5,-910.69 182.5,-910.69 182.5,-946.69\"/>\n",
696
+ "<text text-anchor=\"middle\" x=\"104.5\" y=\"-925.59\" font-family=\"Arial\" font-size=\"12.00\">for d in [0..4096) stride=1</text>\n",
697
+ "</g>\n",
698
+ "<!-- Temporal_139989535844112&#45;&gt;Temporal_139989535844272 -->\n",
699
+ "<g id=\"edge14\" class=\"edge\">\n",
700
+ "<title>Temporal_139989535844112-&gt;Temporal_139989535844272</title>\n",
701
+ "<path fill=\"none\" stroke=\"black\" d=\"M104.5,-960.99C104.5,-959.7 104.5,-958.39 104.5,-957.06\"/>\n",
702
+ "<polygon fill=\"black\" stroke=\"black\" points=\"108,-956.89 104.5,-946.89 101,-956.89 108,-956.89\"/>\n",
703
+ "</g>\n",
704
+ "<!-- Temporal_139989535844512 -->\n",
705
+ "<g id=\"node7\" class=\"node\">\n",
706
+ "<title>Temporal_139989535844512</title>\n",
707
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"188.5,-896.12 20.5,-896.12 20.5,-860.12 188.5,-860.12 188.5,-896.12\"/>\n",
708
+ "<text text-anchor=\"middle\" x=\"104.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..65536) stride=1</text>\n",
709
+ "</g>\n",
710
+ "<!-- Temporal_139989535844272&#45;&gt;Temporal_139989535844512 -->\n",
711
+ "<g id=\"edge15\" class=\"edge\">\n",
712
+ "<title>Temporal_139989535844272-&gt;Temporal_139989535844512</title>\n",
713
+ "<path fill=\"none\" stroke=\"black\" d=\"M104.5,-910.43C104.5,-909.14 104.5,-907.82 104.5,-906.49\"/>\n",
714
+ "<polygon fill=\"black\" stroke=\"black\" points=\"108,-906.33 104.5,-896.33 101,-906.33 108,-906.33\"/>\n",
715
+ "</g>\n",
716
+ "<!-- Compute_139989535844672 -->\n",
717
+ "<g id=\"node8\" class=\"node\">\n",
718
+ "<title>Compute_139989535844672</title>\n",
719
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"104.5\" cy=\"-827.56\" rx=\"72.84\" ry=\"18\"/>\n",
720
+ "<text text-anchor=\"middle\" x=\"104.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">scalar_unit computes I</text>\n",
721
+ "</g>\n",
722
+ "<!-- Temporal_139989535844512&#45;&gt;Compute_139989535844672 -->\n",
723
+ "<g id=\"edge16\" class=\"edge\">\n",
724
+ "<title>Temporal_139989535844512-&gt;Compute_139989535844672</title>\n",
725
+ "<path fill=\"none\" stroke=\"black\" d=\"M104.5,-859.87C104.5,-858.58 104.5,-857.26 104.5,-855.93\"/>\n",
726
+ "<polygon fill=\"black\" stroke=\"black\" points=\"108,-855.76 104.5,-845.76 101,-855.77 108,-855.76\"/>\n",
727
+ "</g>\n",
728
+ "<!-- Storage_139989534182128 -->\n",
729
+ "<g id=\"node10\" class=\"node\">\n",
730
+ "<title>Storage_139989534182128</title>\n",
731
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M412,-1045.05C412,-1046.92 376.82,-1048.44 333.5,-1048.44 290.18,-1048.44 255,-1046.92 255,-1045.05 255,-1045.05 255,-1014.57 255,-1014.57 255,-1012.71 290.18,-1011.19 333.5,-1011.19 376.82,-1011.19 412,-1012.71 412,-1014.57 412,-1014.57 412,-1045.05 412,-1045.05\"/>\n",
732
+ "<path fill=\"none\" stroke=\"black\" d=\"M412,-1045.05C412,-1043.18 376.82,-1041.66 333.5,-1041.66 290.18,-1041.66 255,-1043.18 255,-1045.05\"/>\n",
733
+ "<text text-anchor=\"start\" x=\"257.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
734
+ "<polygon fill=\"none\" stroke=\"#f000ff\" stroke-width=\"5\" points=\"380,-1018.31 380,-1040.31 410,-1040.31 410,-1018.31 380,-1018.31\"/>\n",
735
+ "<text text-anchor=\"start\" x=\"384.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">WV</text>\n",
736
+ "</g>\n",
737
+ "<!-- Storage_139989535844992&#45;&gt;Storage_139989534182128 -->\n",
738
+ "<g id=\"edge17\" class=\"edge\">\n",
739
+ "<title>Storage_139989535844992-&gt;Storage_139989534182128</title>\n",
740
+ "<path fill=\"none\" stroke=\"black\" d=\"M360.98,-1062.2C359.29,-1060.28 357.55,-1058.29 355.81,-1056.3\"/>\n",
741
+ "<polygon fill=\"black\" stroke=\"black\" points=\"358.37,-1053.91 349.15,-1048.69 353.1,-1058.52 358.37,-1053.91\"/>\n",
742
+ "</g>\n",
743
+ "<!-- Reservation_139989535845312 -->\n",
744
+ "<g id=\"node11\" class=\"node\">\n",
745
+ "<title>Reservation_139989535845312</title>\n",
746
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"429.5,-997.25 193.5,-997.25 193.5,-993.25 189.5,-993.25 189.5,-989.25 193.5,-989.25 193.5,-969.25 189.5,-969.25 189.5,-965.25 193.5,-965.25 193.5,-961.25 429.5,-961.25 429.5,-997.25\"/>\n",
747
+ "<polyline fill=\"none\" stroke=\"black\" points=\"193.5,-993.25 197.5,-993.25 197.5,-989.25 193.5,-989.25 \"/>\n",
748
+ "<polyline fill=\"none\" stroke=\"black\" points=\"193.5,-969.25 197.5,-969.25 197.5,-965.25 193.5,-965.25 \"/>\n",
749
+ "<text text-anchor=\"start\" x=\"195.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
750
+ "<polygon fill=\"none\" stroke=\"#f000ff\" stroke-width=\"5\" points=\"356,-967.75 356,-989.75 386,-989.75 386,-967.75 356,-967.75\"/>\n",
751
+ "<text text-anchor=\"start\" x=\"360.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">WV</text>\n",
752
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"391,-967.75 391,-989.75 409,-989.75 409,-967.75 391,-967.75\"/>\n",
753
+ "<text text-anchor=\"start\" x=\"395.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
754
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"414,-967.75 414,-989.75 427,-989.75 427,-967.75 414,-967.75\"/>\n",
755
+ "<text text-anchor=\"start\" x=\"418.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
756
+ "</g>\n",
757
+ "<!-- Storage_139989534182128&#45;&gt;Reservation_139989535845312 -->\n",
758
+ "<g id=\"edge18\" class=\"edge\">\n",
759
+ "<title>Storage_139989534182128-&gt;Reservation_139989535845312</title>\n",
760
+ "<path fill=\"none\" stroke=\"black\" d=\"M325.43,-1011.01C324.8,-1009.62 324.16,-1008.2 323.52,-1006.77\"/>\n",
761
+ "<polygon fill=\"black\" stroke=\"black\" points=\"326.59,-1005.07 319.27,-997.41 320.21,-1007.96 326.59,-1005.07\"/>\n",
762
+ "</g>\n",
763
+ "<!-- Reservation_139989534182288 -->\n",
764
+ "<g id=\"node12\" class=\"node\">\n",
765
+ "<title>Reservation_139989534182288</title>\n",
766
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"407,-946.69 216,-946.69 216,-942.69 212,-942.69 212,-938.69 216,-938.69 216,-918.69 212,-918.69 212,-914.69 216,-914.69 216,-910.69 407,-910.69 407,-946.69\"/>\n",
767
+ "<polyline fill=\"none\" stroke=\"black\" points=\"216,-942.69 220,-942.69 220,-938.69 216,-938.69 \"/>\n",
768
+ "<polyline fill=\"none\" stroke=\"black\" points=\"216,-918.69 220,-918.69 220,-914.69 216,-914.69 \"/>\n",
769
+ "<text text-anchor=\"start\" x=\"218.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
770
+ "<polygon fill=\"none\" stroke=\"#f000ff\" stroke-width=\"5\" points=\"375,-917.19 375,-939.19 405,-939.19 405,-917.19 375,-917.19\"/>\n",
771
+ "<text text-anchor=\"start\" x=\"379.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">WV</text>\n",
772
+ "</g>\n",
773
+ "<!-- Reservation_139989535845312&#45;&gt;Reservation_139989534182288 -->\n",
774
+ "<g id=\"edge19\" class=\"edge\">\n",
775
+ "<title>Reservation_139989535845312-&gt;Reservation_139989534182288</title>\n",
776
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-960.99C311.5,-959.7 311.5,-958.39 311.5,-957.06\"/>\n",
777
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-956.89 311.5,-946.89 308,-956.89 315,-956.89\"/>\n",
778
+ "</g>\n",
779
+ "<!-- Temporal_139989534182608 -->\n",
780
+ "<g id=\"node13\" class=\"node\">\n",
781
+ "<title>Temporal_139989534182608</title>\n",
782
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"395.5,-896.12 227.5,-896.12 227.5,-860.12 395.5,-860.12 395.5,-896.12\"/>\n",
783
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..4096) stride=16</text>\n",
784
+ "</g>\n",
785
+ "<!-- Reservation_139989534182288&#45;&gt;Temporal_139989534182608 -->\n",
786
+ "<g id=\"edge20\" class=\"edge\">\n",
787
+ "<title>Reservation_139989534182288-&gt;Temporal_139989534182608</title>\n",
788
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-910.43C311.5,-909.14 311.5,-907.82 311.5,-906.49\"/>\n",
789
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-906.33 311.5,-896.33 308,-906.33 315,-906.33\"/>\n",
790
+ "</g>\n",
791
+ "<!-- Storage_139989534184528 -->\n",
792
+ "<g id=\"node14\" class=\"node\">\n",
793
+ "<title>Storage_139989534184528</title>\n",
794
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M381.5,-842.8C381.5,-844.67 350.12,-846.19 311.5,-846.19 272.88,-846.19 241.5,-844.67 241.5,-842.8 241.5,-842.8 241.5,-812.32 241.5,-812.32 241.5,-810.46 272.88,-808.94 311.5,-808.94 350.12,-808.94 381.5,-810.46 381.5,-812.32 381.5,-812.32 381.5,-842.8 381.5,-842.8\"/>\n",
795
+ "<path fill=\"none\" stroke=\"black\" d=\"M381.5,-842.8C381.5,-840.93 350.12,-839.41 311.5,-839.41 272.88,-839.41 241.5,-840.93 241.5,-842.8\"/>\n",
796
+ "<text text-anchor=\"start\" x=\"243.5\" y=\"-823.96\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
797
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"366,-816.06 366,-838.06 379,-838.06 379,-816.06 366,-816.06\"/>\n",
798
+ "<text text-anchor=\"start\" x=\"370.5\" y=\"-823.96\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
799
+ "</g>\n",
800
+ "<!-- Temporal_139989534182608&#45;&gt;Storage_139989534184528 -->\n",
801
+ "<g id=\"edge21\" class=\"edge\">\n",
802
+ "<title>Temporal_139989534182608-&gt;Storage_139989534184528</title>\n",
803
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-859.87C311.5,-858.78 311.5,-857.67 311.5,-856.54\"/>\n",
804
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-856.42 311.5,-846.42 308,-856.42 315,-856.42\"/>\n",
805
+ "</g>\n",
806
+ "<!-- Reservation_139989534184848 -->\n",
807
+ "<g id=\"node15\" class=\"node\">\n",
808
+ "<title>Reservation_139989534184848</title>\n",
809
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"398.5,-794.44 224.5,-794.44 224.5,-790.44 220.5,-790.44 220.5,-786.44 224.5,-786.44 224.5,-766.44 220.5,-766.44 220.5,-762.44 224.5,-762.44 224.5,-758.44 398.5,-758.44 398.5,-794.44\"/>\n",
810
+ "<polyline fill=\"none\" stroke=\"black\" points=\"224.5,-790.44 228.5,-790.44 228.5,-786.44 224.5,-786.44 \"/>\n",
811
+ "<polyline fill=\"none\" stroke=\"black\" points=\"224.5,-766.44 228.5,-766.44 228.5,-762.44 224.5,-762.44 \"/>\n",
812
+ "<text text-anchor=\"start\" x=\"226.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
813
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"383,-764.94 383,-786.94 396,-786.94 396,-764.94 383,-764.94\"/>\n",
814
+ "<text text-anchor=\"start\" x=\"387.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
815
+ "</g>\n",
816
+ "<!-- Storage_139989534184528&#45;&gt;Reservation_139989534184848 -->\n",
817
+ "<g id=\"edge22\" class=\"edge\">\n",
818
+ "<title>Storage_139989534184528-&gt;Reservation_139989534184848</title>\n",
819
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-808.83C311.5,-807.53 311.5,-806.2 311.5,-804.86\"/>\n",
820
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-804.65 311.5,-794.65 308,-804.65 315,-804.65\"/>\n",
821
+ "</g>\n",
822
+ "<!-- Temporal_139989534184928 -->\n",
823
+ "<g id=\"node16\" class=\"node\">\n",
824
+ "<title>Temporal_139989534184928</title>\n",
825
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"382,-743.88 241,-743.88 241,-707.88 382,-707.88 382,-743.88\"/>\n",
826
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-722.77\" font-family=\"Arial\" font-size=\"12.00\">for e in [0..2) stride=64</text>\n",
827
+ "</g>\n",
828
+ "<!-- Reservation_139989534184848&#45;&gt;Temporal_139989534184928 -->\n",
829
+ "<g id=\"edge23\" class=\"edge\">\n",
830
+ "<title>Reservation_139989534184848-&gt;Temporal_139989534184928</title>\n",
831
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-758.18C311.5,-756.89 311.5,-755.57 311.5,-754.24\"/>\n",
832
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-754.08 311.5,-744.08 308,-754.08 315,-754.08\"/>\n",
833
+ "</g>\n",
834
+ "<!-- Storage_139989534185168 -->\n",
835
+ "<g id=\"node17\" class=\"node\">\n",
836
+ "<title>Storage_139989534185168</title>\n",
837
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M381,-690.55C381,-692.42 349.85,-693.94 311.5,-693.94 273.15,-693.94 242,-692.42 242,-690.55 242,-690.55 242,-660.07 242,-660.07 242,-658.21 273.15,-656.69 311.5,-656.69 349.85,-656.69 381,-658.21 381,-660.07 381,-660.07 381,-690.55 381,-690.55\"/>\n",
838
+ "<path fill=\"none\" stroke=\"black\" d=\"M381,-690.55C381,-688.68 349.85,-687.16 311.5,-687.16 273.15,-687.16 242,-688.68 242,-690.55\"/>\n",
839
+ "<text text-anchor=\"start\" x=\"244.5\" y=\"-671.71\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
840
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"361,-663.81 361,-685.81 379,-685.81 379,-663.81 361,-663.81\"/>\n",
841
+ "<text text-anchor=\"start\" x=\"365.5\" y=\"-671.71\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
842
+ "</g>\n",
843
+ "<!-- Temporal_139989534184928&#45;&gt;Storage_139989534185168 -->\n",
844
+ "<g id=\"edge24\" class=\"edge\">\n",
845
+ "<title>Temporal_139989534184928-&gt;Storage_139989534185168</title>\n",
846
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-707.62C311.5,-706.53 311.5,-705.42 311.5,-704.29\"/>\n",
847
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-704.17 311.5,-694.17 308,-704.17 315,-704.17\"/>\n",
848
+ "</g>\n",
849
+ "<!-- Reservation_139989534185408 -->\n",
850
+ "<g id=\"node18\" class=\"node\">\n",
851
+ "<title>Reservation_139989534185408</title>\n",
852
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"398,-642.19 225,-642.19 225,-638.19 221,-638.19 221,-634.19 225,-634.19 225,-614.19 221,-614.19 221,-610.19 225,-610.19 225,-606.19 398,-606.19 398,-642.19\"/>\n",
853
+ "<polyline fill=\"none\" stroke=\"black\" points=\"225,-638.19 229,-638.19 229,-634.19 225,-634.19 \"/>\n",
854
+ "<polyline fill=\"none\" stroke=\"black\" points=\"225,-614.19 229,-614.19 229,-610.19 225,-610.19 \"/>\n",
855
+ "<text text-anchor=\"start\" x=\"227.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
856
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"378,-612.69 378,-634.69 396,-634.69 396,-612.69 378,-612.69\"/>\n",
857
+ "<text text-anchor=\"start\" x=\"382.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
858
+ "</g>\n",
859
+ "<!-- Storage_139989534185168&#45;&gt;Reservation_139989534185408 -->\n",
860
+ "<g id=\"edge25\" class=\"edge\">\n",
861
+ "<title>Storage_139989534185168-&gt;Reservation_139989534185408</title>\n",
862
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-656.58C311.5,-655.28 311.5,-653.95 311.5,-652.61\"/>\n",
863
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-652.4 311.5,-642.4 308,-652.4 315,-652.4\"/>\n",
864
+ "</g>\n",
865
+ "<!-- Temporal_139989534185648 -->\n",
866
+ "<g id=\"node19\" class=\"node\">\n",
867
+ "<title>Temporal_139989534185648</title>\n",
868
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"389.5,-591.62 233.5,-591.62 233.5,-555.62 389.5,-555.62 389.5,-591.62\"/>\n",
869
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-570.52\" font-family=\"Arial\" font-size=\"12.00\">for d in [0..32) stride=128</text>\n",
870
+ "</g>\n",
871
+ "<!-- Reservation_139989534185408&#45;&gt;Temporal_139989534185648 -->\n",
872
+ "<g id=\"edge26\" class=\"edge\">\n",
873
+ "<title>Reservation_139989534185408-&gt;Temporal_139989534185648</title>\n",
874
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-605.93C311.5,-604.64 311.5,-603.32 311.5,-601.99\"/>\n",
875
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-601.83 311.5,-591.83 308,-601.83 315,-601.83\"/>\n",
876
+ "</g>\n",
877
+ "<!-- Storage_139989534186048 -->\n",
878
+ "<g id=\"node20\" class=\"node\">\n",
879
+ "<title>Storage_139989534186048</title>\n",
880
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M378.5,-538.3C378.5,-540.17 348.47,-541.69 311.5,-541.69 274.53,-541.69 244.5,-540.17 244.5,-538.3 244.5,-538.3 244.5,-507.82 244.5,-507.82 244.5,-505.96 274.53,-504.44 311.5,-504.44 348.47,-504.44 378.5,-505.96 378.5,-507.82 378.5,-507.82 378.5,-538.3 378.5,-538.3\"/>\n",
881
+ "<path fill=\"none\" stroke=\"black\" d=\"M378.5,-538.3C378.5,-536.43 348.47,-534.91 311.5,-534.91 274.53,-534.91 244.5,-536.43 244.5,-538.3\"/>\n",
882
+ "<text text-anchor=\"start\" x=\"246.5\" y=\"-519.46\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
883
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"363,-511.56 363,-533.56 376,-533.56 376,-511.56 363,-511.56\"/>\n",
884
+ "<text text-anchor=\"start\" x=\"367.5\" y=\"-519.46\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
885
+ "</g>\n",
886
+ "<!-- Temporal_139989534185648&#45;&gt;Storage_139989534186048 -->\n",
887
+ "<g id=\"edge27\" class=\"edge\">\n",
888
+ "<title>Temporal_139989534185648-&gt;Storage_139989534186048</title>\n",
889
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-555.37C311.5,-554.28 311.5,-553.17 311.5,-552.04\"/>\n",
890
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-551.92 311.5,-541.92 308,-551.92 315,-551.92\"/>\n",
891
+ "</g>\n",
892
+ "<!-- Reservation_139989534187888 -->\n",
893
+ "<g id=\"node21\" class=\"node\">\n",
894
+ "<title>Reservation_139989534187888</title>\n",
895
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"395.5,-489.94 227.5,-489.94 227.5,-485.94 223.5,-485.94 223.5,-481.94 227.5,-481.94 227.5,-461.94 223.5,-461.94 223.5,-457.94 227.5,-457.94 227.5,-453.94 395.5,-453.94 395.5,-489.94\"/>\n",
896
+ "<polyline fill=\"none\" stroke=\"black\" points=\"227.5,-485.94 231.5,-485.94 231.5,-481.94 227.5,-481.94 \"/>\n",
897
+ "<polyline fill=\"none\" stroke=\"black\" points=\"227.5,-461.94 231.5,-461.94 231.5,-457.94 227.5,-457.94 \"/>\n",
898
+ "<text text-anchor=\"start\" x=\"229.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
899
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"380,-460.44 380,-482.44 393,-482.44 393,-460.44 380,-460.44\"/>\n",
900
+ "<text text-anchor=\"start\" x=\"384.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
901
+ "</g>\n",
902
+ "<!-- Storage_139989534186048&#45;&gt;Reservation_139989534187888 -->\n",
903
+ "<g id=\"edge28\" class=\"edge\">\n",
904
+ "<title>Storage_139989534186048-&gt;Reservation_139989534187888</title>\n",
905
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-504.33C311.5,-503.03 311.5,-501.7 311.5,-500.36\"/>\n",
906
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-500.15 311.5,-490.15 308,-500.15 315,-500.15\"/>\n",
907
+ "</g>\n",
908
+ "<!-- Temporal_139989534187968 -->\n",
909
+ "<g id=\"node22\" class=\"node\">\n",
910
+ "<title>Temporal_139989534187968</title>\n",
911
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"382,-438.81 241,-438.81 241,-402.81 382,-402.81 382,-438.81\"/>\n",
912
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-417.71\" font-family=\"Arial\" font-size=\"12.00\">for e in [0..16) stride=4</text>\n",
913
+ "</g>\n",
914
+ "<!-- Reservation_139989534187888&#45;&gt;Temporal_139989534187968 -->\n",
915
+ "<g id=\"edge29\" class=\"edge\">\n",
916
+ "<title>Reservation_139989534187888-&gt;Temporal_139989534187968</title>\n",
917
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-453.76C311.5,-452.27 311.5,-450.74 311.5,-449.2\"/>\n",
918
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-449.07 311.5,-439.07 308,-449.07 315,-449.07\"/>\n",
919
+ "</g>\n",
920
+ "<!-- Spatial_139989534188128 -->\n",
921
+ "<g id=\"node23\" class=\"node\">\n",
922
+ "<title>Spatial_139989534188128</title>\n",
923
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"396.5,-388.25 226.5,-388.25 226.5,-352.25 396.5,-352.25 396.5,-388.25\"/>\n",
924
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-367.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for d in [0..128) stride=1</text>\n",
925
+ "</g>\n",
926
+ "<!-- Temporal_139989534187968&#45;&gt;Spatial_139989534188128 -->\n",
927
+ "<g id=\"edge30\" class=\"edge\">\n",
928
+ "<title>Temporal_139989534187968-&gt;Spatial_139989534188128</title>\n",
929
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-402.55C311.5,-401.27 311.5,-399.95 311.5,-398.62\"/>\n",
930
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-398.45 311.5,-388.45 308,-398.45 315,-398.45\"/>\n",
931
+ "</g>\n",
932
+ "<!-- Spatial_139989534188368 -->\n",
933
+ "<g id=\"node24\" class=\"node\">\n",
934
+ "<title>Spatial_139989534188368</title>\n",
935
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"393.5,-338.25 229.5,-338.25 229.5,-302.25 393.5,-302.25 393.5,-338.25\"/>\n",
936
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">S-X for h in [0..32) stride=1</text>\n",
937
+ "</g>\n",
938
+ "<!-- Spatial_139989534188128&#45;&gt;Spatial_139989534188368 -->\n",
939
+ "<g id=\"edge31\" class=\"edge\">\n",
940
+ "<title>Spatial_139989534188128-&gt;Spatial_139989534188368</title>\n",
941
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-352.19C311.5,-350.92 311.5,-349.62 311.5,-348.3\"/>\n",
942
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-348.25 311.5,-338.25 308,-348.25 315,-348.25\"/>\n",
943
+ "</g>\n",
944
+ "<!-- Spatial_139989534188608 -->\n",
945
+ "<g id=\"node25\" class=\"node\">\n",
946
+ "<title>Spatial_139989534188608</title>\n",
947
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"390,-288.25 233,-288.25 233,-252.25 390,-252.25 390,-288.25\"/>\n",
948
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">S-X for e in [0..4) stride=1</text>\n",
949
+ "</g>\n",
950
+ "<!-- Spatial_139989534188368&#45;&gt;Spatial_139989534188608 -->\n",
951
+ "<g id=\"edge32\" class=\"edge\">\n",
952
+ "<title>Spatial_139989534188368-&gt;Spatial_139989534188608</title>\n",
953
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-302.19C311.5,-300.92 311.5,-299.62 311.5,-298.3\"/>\n",
954
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-298.25 311.5,-288.25 308,-298.25 315,-298.25\"/>\n",
955
+ "</g>\n",
956
+ "<!-- Storage_139991121755216 -->\n",
957
+ "<g id=\"node26\" class=\"node\">\n",
958
+ "<title>Storage_139991121755216</title>\n",
959
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M377,-234.93C377,-236.79 347.64,-238.31 311.5,-238.31 275.36,-238.31 246,-236.79 246,-234.93 246,-234.93 246,-204.45 246,-204.45 246,-202.58 275.36,-201.06 311.5,-201.06 347.64,-201.06 377,-202.58 377,-204.45 377,-204.45 377,-234.93 377,-234.93\"/>\n",
960
+ "<path fill=\"none\" stroke=\"black\" d=\"M377,-234.93C377,-233.06 347.64,-231.54 311.5,-231.54 275.36,-231.54 246,-233.06 246,-234.93\"/>\n",
961
+ "<text text-anchor=\"start\" x=\"248.5\" y=\"-216.09\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
962
+ "<polygon fill=\"none\" stroke=\"#f000ff\" stroke-width=\"5\" points=\"345,-208.19 345,-230.19 375,-230.19 375,-208.19 345,-208.19\"/>\n",
963
+ "<text text-anchor=\"start\" x=\"349.5\" y=\"-216.09\" font-family=\"Arial\" font-size=\"12.00\">WV</text>\n",
964
+ "</g>\n",
965
+ "<!-- Spatial_139989534188608&#45;&gt;Storage_139991121755216 -->\n",
966
+ "<g id=\"edge33\" class=\"edge\">\n",
967
+ "<title>Spatial_139989534188608-&gt;Storage_139991121755216</title>\n",
968
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-251.99C311.5,-250.9 311.5,-249.79 311.5,-248.67\"/>\n",
969
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-248.55 311.5,-238.55 308,-248.55 315,-248.55\"/>\n",
970
+ "</g>\n",
971
+ "<!-- Reservation_139989534586464 -->\n",
972
+ "<g id=\"node27\" class=\"node\">\n",
973
+ "<title>Reservation_139989534586464</title>\n",
974
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"394.5,-186.56 228.5,-186.56 228.5,-182.56 224.5,-182.56 224.5,-178.56 228.5,-178.56 228.5,-158.56 224.5,-158.56 224.5,-154.56 228.5,-154.56 228.5,-150.56 394.5,-150.56 394.5,-186.56\"/>\n",
975
+ "<polyline fill=\"none\" stroke=\"black\" points=\"228.5,-182.56 232.5,-182.56 232.5,-178.56 228.5,-178.56 \"/>\n",
976
+ "<polyline fill=\"none\" stroke=\"black\" points=\"228.5,-158.56 232.5,-158.56 232.5,-154.56 228.5,-154.56 \"/>\n",
977
+ "<text text-anchor=\"start\" x=\"230.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
978
+ "<polygon fill=\"none\" stroke=\"#f000ff\" stroke-width=\"5\" points=\"362,-157.06 362,-179.06 392,-179.06 392,-157.06 362,-157.06\"/>\n",
979
+ "<text text-anchor=\"start\" x=\"366.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">WV</text>\n",
980
+ "</g>\n",
981
+ "<!-- Storage_139991121755216&#45;&gt;Reservation_139989534586464 -->\n",
982
+ "<g id=\"edge34\" class=\"edge\">\n",
983
+ "<title>Storage_139991121755216-&gt;Reservation_139989534586464</title>\n",
984
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-200.95C311.5,-199.65 311.5,-198.33 311.5,-196.99\"/>\n",
985
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-196.78 311.5,-186.78 308,-196.78 315,-196.78\"/>\n",
986
+ "</g>\n",
987
+ "<!-- Temporal_139989534587344 -->\n",
988
+ "<g id=\"node28\" class=\"node\">\n",
989
+ "<title>Temporal_139989534587344</title>\n",
990
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"382,-136 241,-136 241,-100 382,-100 382,-136\"/>\n",
991
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-114.9\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
992
+ "</g>\n",
993
+ "<!-- Reservation_139989534586464&#45;&gt;Temporal_139989534587344 -->\n",
994
+ "<g id=\"edge35\" class=\"edge\">\n",
995
+ "<title>Reservation_139989534586464-&gt;Temporal_139989534587344</title>\n",
996
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-150.3C311.5,-149.02 311.5,-147.7 311.5,-146.37\"/>\n",
997
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-146.2 311.5,-136.2 308,-146.2 315,-146.2\"/>\n",
998
+ "</g>\n",
999
+ "<!-- Temporal_139989534587904 -->\n",
1000
+ "<g id=\"node29\" class=\"node\">\n",
1001
+ "<title>Temporal_139989534587904</title>\n",
1002
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"384,-86 239,-86 239,-50 384,-50 384,-86\"/>\n",
1003
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-64.9\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..16) stride=1</text>\n",
1004
+ "</g>\n",
1005
+ "<!-- Temporal_139989534587344&#45;&gt;Temporal_139989534587904 -->\n",
1006
+ "<g id=\"edge36\" class=\"edge\">\n",
1007
+ "<title>Temporal_139989534587344-&gt;Temporal_139989534587904</title>\n",
1008
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-99.94C311.5,-98.67 311.5,-97.37 311.5,-96.05\"/>\n",
1009
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-96 311.5,-86 308,-96 315,-96\"/>\n",
1010
+ "</g>\n",
1011
+ "<!-- Compute_139989534754208 -->\n",
1012
+ "<g id=\"node30\" class=\"node\">\n",
1013
+ "<title>Compute_139989534754208</title>\n",
1014
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"311.5\" cy=\"-18\" rx=\"55.45\" ry=\"18\"/>\n",
1015
+ "<text text-anchor=\"middle\" x=\"311.5\" y=\"-14.9\" font-family=\"Arial\" font-size=\"12.00\">MAC computes V</text>\n",
1016
+ "</g>\n",
1017
+ "<!-- Temporal_139989534587904&#45;&gt;Compute_139989534754208 -->\n",
1018
+ "<g id=\"edge37\" class=\"edge\">\n",
1019
+ "<title>Temporal_139989534587904-&gt;Compute_139989534754208</title>\n",
1020
+ "<path fill=\"none\" stroke=\"black\" d=\"M311.5,-49.94C311.5,-48.67 311.5,-47.37 311.5,-46.05\"/>\n",
1021
+ "<polygon fill=\"black\" stroke=\"black\" points=\"315,-46 311.5,-36 308,-46 315,-46\"/>\n",
1022
+ "</g>\n",
1023
+ "<!-- Storage_139989533073216 -->\n",
1024
+ "<g id=\"node32\" class=\"node\">\n",
1025
+ "<title>Storage_139989533073216</title>\n",
1026
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M654.5,-1045.05C654.5,-1046.92 619.54,-1048.44 576.5,-1048.44 533.46,-1048.44 498.5,-1046.92 498.5,-1045.05 498.5,-1045.05 498.5,-1014.57 498.5,-1014.57 498.5,-1012.71 533.46,-1011.19 576.5,-1011.19 619.54,-1011.19 654.5,-1012.71 654.5,-1014.57 654.5,-1014.57 654.5,-1045.05 654.5,-1045.05\"/>\n",
1027
+ "<path fill=\"none\" stroke=\"black\" d=\"M654.5,-1045.05C654.5,-1043.18 619.54,-1041.66 576.5,-1041.66 533.46,-1041.66 498.5,-1043.18 498.5,-1045.05\"/>\n",
1028
+ "<text text-anchor=\"start\" x=\"500.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
1029
+ "<polygon fill=\"none\" stroke=\"#3c00ff\" stroke-width=\"5\" points=\"623,-1018.31 623,-1040.31 652,-1040.31 652,-1018.31 623,-1018.31\"/>\n",
1030
+ "<text text-anchor=\"start\" x=\"627.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">WK</text>\n",
1031
+ "</g>\n",
1032
+ "<!-- Storage_139989534754528&#45;&gt;Storage_139989533073216 -->\n",
1033
+ "<g id=\"edge38\" class=\"edge\">\n",
1034
+ "<title>Storage_139989534754528-&gt;Storage_139989533073216</title>\n",
1035
+ "<path fill=\"none\" stroke=\"black\" d=\"M577.14,-1062.2C577.12,-1061.1 577.09,-1059.98 577.07,-1058.85\"/>\n",
1036
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580.57,-1058.61 576.86,-1048.69 573.57,-1058.76 580.57,-1058.61\"/>\n",
1037
+ "</g>\n",
1038
+ "<!-- Reservation_139989529466096 -->\n",
1039
+ "<g id=\"node33\" class=\"node\">\n",
1040
+ "<title>Reservation_139989529466096</title>\n",
1041
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"705,-997.25 448,-997.25 448,-993.25 444,-993.25 444,-989.25 448,-989.25 448,-969.25 444,-969.25 444,-965.25 448,-965.25 448,-961.25 705,-961.25 705,-997.25\"/>\n",
1042
+ "<polyline fill=\"none\" stroke=\"black\" points=\"448,-993.25 452,-993.25 452,-989.25 448,-989.25 \"/>\n",
1043
+ "<polyline fill=\"none\" stroke=\"black\" points=\"448,-969.25 452,-969.25 452,-965.25 448,-965.25 \"/>\n",
1044
+ "<text text-anchor=\"start\" x=\"450.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
1045
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"611,-967.75 611,-989.75 629,-989.75 629,-967.75 611,-967.75\"/>\n",
1046
+ "<text text-anchor=\"start\" x=\"615.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
1047
+ "<polygon fill=\"none\" stroke=\"#3c00ff\" stroke-width=\"5\" points=\"634,-967.75 634,-989.75 663,-989.75 663,-967.75 634,-967.75\"/>\n",
1048
+ "<text text-anchor=\"start\" x=\"638.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">WK</text>\n",
1049
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"668,-967.75 668,-989.75 685,-989.75 685,-967.75 668,-967.75\"/>\n",
1050
+ "<text text-anchor=\"start\" x=\"672.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1051
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"690,-967.75 690,-989.75 703,-989.75 703,-967.75 690,-967.75\"/>\n",
1052
+ "<text text-anchor=\"start\" x=\"694.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1053
+ "</g>\n",
1054
+ "<!-- Storage_139989533073216&#45;&gt;Reservation_139989529466096 -->\n",
1055
+ "<g id=\"edge39\" class=\"edge\">\n",
1056
+ "<title>Storage_139989533073216-&gt;Reservation_139989529466096</title>\n",
1057
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-1011.01C576.5,-1009.9 576.5,-1008.77 576.5,-1007.63\"/>\n",
1058
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-1007.41 576.5,-997.41 573,-1007.41 580,-1007.41\"/>\n",
1059
+ "</g>\n",
1060
+ "<!-- Reservation_139989533073376 -->\n",
1061
+ "<g id=\"node34\" class=\"node\">\n",
1062
+ "<title>Reservation_139989533073376</title>\n",
1063
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"671.5,-946.69 481.5,-946.69 481.5,-942.69 477.5,-942.69 477.5,-938.69 481.5,-938.69 481.5,-918.69 477.5,-918.69 477.5,-914.69 481.5,-914.69 481.5,-910.69 671.5,-910.69 671.5,-946.69\"/>\n",
1064
+ "<polyline fill=\"none\" stroke=\"black\" points=\"481.5,-942.69 485.5,-942.69 485.5,-938.69 481.5,-938.69 \"/>\n",
1065
+ "<polyline fill=\"none\" stroke=\"black\" points=\"481.5,-918.69 485.5,-918.69 485.5,-914.69 481.5,-914.69 \"/>\n",
1066
+ "<text text-anchor=\"start\" x=\"483.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
1067
+ "<polygon fill=\"none\" stroke=\"#3c00ff\" stroke-width=\"5\" points=\"640,-917.19 640,-939.19 669,-939.19 669,-917.19 640,-917.19\"/>\n",
1068
+ "<text text-anchor=\"start\" x=\"644.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">WK</text>\n",
1069
+ "</g>\n",
1070
+ "<!-- Reservation_139989529466096&#45;&gt;Reservation_139989533073376 -->\n",
1071
+ "<g id=\"edge40\" class=\"edge\">\n",
1072
+ "<title>Reservation_139989529466096-&gt;Reservation_139989533073376</title>\n",
1073
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-960.99C576.5,-959.7 576.5,-958.39 576.5,-957.06\"/>\n",
1074
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-956.89 576.5,-946.89 573,-956.89 580,-956.89\"/>\n",
1075
+ "</g>\n",
1076
+ "<!-- Temporal_139989533073696 -->\n",
1077
+ "<g id=\"node35\" class=\"node\">\n",
1078
+ "<title>Temporal_139989533073696</title>\n",
1079
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"647,-896.12 506,-896.12 506,-860.12 647,-860.12 647,-896.12\"/>\n",
1080
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
1081
+ "</g>\n",
1082
+ "<!-- Reservation_139989533073376&#45;&gt;Temporal_139989533073696 -->\n",
1083
+ "<g id=\"edge41\" class=\"edge\">\n",
1084
+ "<title>Reservation_139989533073376-&gt;Temporal_139989533073696</title>\n",
1085
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-910.43C576.5,-909.14 576.5,-907.82 576.5,-906.49\"/>\n",
1086
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-906.33 576.5,-896.33 573,-906.33 580,-906.33\"/>\n",
1087
+ "</g>\n",
1088
+ "<!-- Temporal_139989533075056 -->\n",
1089
+ "<g id=\"node36\" class=\"node\">\n",
1090
+ "<title>Temporal_139989533075056</title>\n",
1091
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"660.5,-845.56 492.5,-845.56 492.5,-809.56 660.5,-809.56 660.5,-845.56\"/>\n",
1092
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..64) stride=1024</text>\n",
1093
+ "</g>\n",
1094
+ "<!-- Temporal_139989533073696&#45;&gt;Temporal_139989533075056 -->\n",
1095
+ "<g id=\"edge42\" class=\"edge\">\n",
1096
+ "<title>Temporal_139989533073696-&gt;Temporal_139989533075056</title>\n",
1097
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-859.87C576.5,-858.58 576.5,-857.26 576.5,-855.93\"/>\n",
1098
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-855.76 576.5,-845.76 573,-855.77 580,-855.76\"/>\n",
1099
+ "</g>\n",
1100
+ "<!-- Storage_139989533075616 -->\n",
1101
+ "<g id=\"node37\" class=\"node\">\n",
1102
+ "<title>Storage_139989533075616</title>\n",
1103
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M646.5,-791.68C646.5,-793.54 615.12,-795.06 576.5,-795.06 537.88,-795.06 506.5,-793.54 506.5,-791.68 506.5,-791.68 506.5,-761.2 506.5,-761.2 506.5,-759.33 537.88,-757.81 576.5,-757.81 615.12,-757.81 646.5,-759.33 646.5,-761.2 646.5,-761.2 646.5,-791.68 646.5,-791.68\"/>\n",
1104
+ "<path fill=\"none\" stroke=\"black\" d=\"M646.5,-791.68C646.5,-789.81 615.12,-788.29 576.5,-788.29 537.88,-788.29 506.5,-789.81 506.5,-791.68\"/>\n",
1105
+ "<text text-anchor=\"start\" x=\"508.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
1106
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"631,-764.94 631,-786.94 644,-786.94 644,-764.94 631,-764.94\"/>\n",
1107
+ "<text text-anchor=\"start\" x=\"635.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1108
+ "</g>\n",
1109
+ "<!-- Temporal_139989533075056&#45;&gt;Storage_139989533075616 -->\n",
1110
+ "<g id=\"edge43\" class=\"edge\">\n",
1111
+ "<title>Temporal_139989533075056-&gt;Storage_139989533075616</title>\n",
1112
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-809.38C576.5,-808.07 576.5,-806.74 576.5,-805.38\"/>\n",
1113
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-805.03 576.5,-795.03 573,-805.03 580,-805.03\"/>\n",
1114
+ "</g>\n",
1115
+ "<!-- Reservation_139989533075776 -->\n",
1116
+ "<g id=\"node38\" class=\"node\">\n",
1117
+ "<title>Reservation_139989533075776</title>\n",
1118
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"663.5,-743.88 489.5,-743.88 489.5,-739.88 485.5,-739.88 485.5,-735.88 489.5,-735.88 489.5,-715.88 485.5,-715.88 485.5,-711.88 489.5,-711.88 489.5,-707.88 663.5,-707.88 663.5,-743.88\"/>\n",
1119
+ "<polyline fill=\"none\" stroke=\"black\" points=\"489.5,-739.88 493.5,-739.88 493.5,-735.88 489.5,-735.88 \"/>\n",
1120
+ "<polyline fill=\"none\" stroke=\"black\" points=\"489.5,-715.88 493.5,-715.88 493.5,-711.88 489.5,-711.88 \"/>\n",
1121
+ "<text text-anchor=\"start\" x=\"491.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
1122
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"648,-714.38 648,-736.38 661,-736.38 661,-714.38 648,-714.38\"/>\n",
1123
+ "<text text-anchor=\"start\" x=\"652.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1124
+ "</g>\n",
1125
+ "<!-- Storage_139989533075616&#45;&gt;Reservation_139989533075776 -->\n",
1126
+ "<g id=\"edge44\" class=\"edge\">\n",
1127
+ "<title>Storage_139989533075616-&gt;Reservation_139989533075776</title>\n",
1128
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-757.63C576.5,-756.52 576.5,-755.39 576.5,-754.25\"/>\n",
1129
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-754.03 576.5,-744.03 573,-754.03 580,-754.03\"/>\n",
1130
+ "</g>\n",
1131
+ "<!-- Temporal_139989533075936 -->\n",
1132
+ "<g id=\"node39\" class=\"node\">\n",
1133
+ "<title>Temporal_139989533075936</title>\n",
1134
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"647,-693.31 506,-693.31 506,-657.31 647,-657.31 647,-693.31\"/>\n",
1135
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for e in [0..2) stride=64</text>\n",
1136
+ "</g>\n",
1137
+ "<!-- Reservation_139989533075776&#45;&gt;Temporal_139989533075936 -->\n",
1138
+ "<g id=\"edge45\" class=\"edge\">\n",
1139
+ "<title>Reservation_139989533075776-&gt;Temporal_139989533075936</title>\n",
1140
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-707.62C576.5,-706.33 576.5,-705.01 576.5,-703.68\"/>\n",
1141
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-703.51 576.5,-693.51 573,-703.52 580,-703.51\"/>\n",
1142
+ "</g>\n",
1143
+ "<!-- Storage_139989533076096 -->\n",
1144
+ "<g id=\"node40\" class=\"node\">\n",
1145
+ "<title>Storage_139989533076096</title>\n",
1146
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M645.5,-639.43C645.5,-641.29 614.57,-642.81 576.5,-642.81 538.43,-642.81 507.5,-641.29 507.5,-639.43 507.5,-639.43 507.5,-608.95 507.5,-608.95 507.5,-607.08 538.43,-605.56 576.5,-605.56 614.57,-605.56 645.5,-607.08 645.5,-608.95 645.5,-608.95 645.5,-639.43 645.5,-639.43\"/>\n",
1147
+ "<path fill=\"none\" stroke=\"black\" d=\"M645.5,-639.43C645.5,-637.56 614.57,-636.04 576.5,-636.04 538.43,-636.04 507.5,-637.56 507.5,-639.43\"/>\n",
1148
+ "<text text-anchor=\"start\" x=\"509.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1149
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"626,-612.69 626,-634.69 643,-634.69 643,-612.69 626,-612.69\"/>\n",
1150
+ "<text text-anchor=\"start\" x=\"630.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1151
+ "</g>\n",
1152
+ "<!-- Temporal_139989533075936&#45;&gt;Storage_139989533076096 -->\n",
1153
+ "<g id=\"edge46\" class=\"edge\">\n",
1154
+ "<title>Temporal_139989533075936-&gt;Storage_139989533076096</title>\n",
1155
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-657.13C576.5,-655.82 576.5,-654.49 576.5,-653.13\"/>\n",
1156
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-652.78 576.5,-642.78 573,-652.78 580,-652.78\"/>\n",
1157
+ "</g>\n",
1158
+ "<!-- Reservation_139989533076336 -->\n",
1159
+ "<g id=\"node41\" class=\"node\">\n",
1160
+ "<title>Reservation_139989533076336</title>\n",
1161
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"662.5,-591.62 490.5,-591.62 490.5,-587.62 486.5,-587.62 486.5,-583.62 490.5,-583.62 490.5,-563.62 486.5,-563.62 486.5,-559.62 490.5,-559.62 490.5,-555.62 662.5,-555.62 662.5,-591.62\"/>\n",
1162
+ "<polyline fill=\"none\" stroke=\"black\" points=\"490.5,-587.62 494.5,-587.62 494.5,-583.62 490.5,-583.62 \"/>\n",
1163
+ "<polyline fill=\"none\" stroke=\"black\" points=\"490.5,-563.62 494.5,-563.62 494.5,-559.62 490.5,-559.62 \"/>\n",
1164
+ "<text text-anchor=\"start\" x=\"492.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1165
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"643,-562.12 643,-584.12 660,-584.12 660,-562.12 643,-562.12\"/>\n",
1166
+ "<text text-anchor=\"start\" x=\"647.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1167
+ "</g>\n",
1168
+ "<!-- Storage_139989533076096&#45;&gt;Reservation_139989533076336 -->\n",
1169
+ "<g id=\"edge47\" class=\"edge\">\n",
1170
+ "<title>Storage_139989533076096-&gt;Reservation_139989533076336</title>\n",
1171
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-605.38C576.5,-604.27 576.5,-603.14 576.5,-602\"/>\n",
1172
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-601.78 576.5,-591.78 573,-601.78 580,-601.78\"/>\n",
1173
+ "</g>\n",
1174
+ "<!-- Temporal_139989533076576 -->\n",
1175
+ "<g id=\"node42\" class=\"node\">\n",
1176
+ "<title>Temporal_139989533076576</title>\n",
1177
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"654.5,-541.06 498.5,-541.06 498.5,-505.06 654.5,-505.06 654.5,-541.06\"/>\n",
1178
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">for d in [0..32) stride=128</text>\n",
1179
+ "</g>\n",
1180
+ "<!-- Reservation_139989533076336&#45;&gt;Temporal_139989533076576 -->\n",
1181
+ "<g id=\"edge48\" class=\"edge\">\n",
1182
+ "<title>Reservation_139989533076336-&gt;Temporal_139989533076576</title>\n",
1183
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-555.37C576.5,-554.08 576.5,-552.76 576.5,-551.43\"/>\n",
1184
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-551.26 576.5,-541.26 573,-551.27 580,-551.26\"/>\n",
1185
+ "</g>\n",
1186
+ "<!-- Storage_139989533076976 -->\n",
1187
+ "<g id=\"node43\" class=\"node\">\n",
1188
+ "<title>Storage_139989533076976</title>\n",
1189
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M643.5,-487.18C643.5,-489.04 613.47,-490.56 576.5,-490.56 539.53,-490.56 509.5,-489.04 509.5,-487.18 509.5,-487.18 509.5,-456.7 509.5,-456.7 509.5,-454.83 539.53,-453.31 576.5,-453.31 613.47,-453.31 643.5,-454.83 643.5,-456.7 643.5,-456.7 643.5,-487.18 643.5,-487.18\"/>\n",
1190
+ "<path fill=\"none\" stroke=\"black\" d=\"M643.5,-487.18C643.5,-485.31 613.47,-483.79 576.5,-483.79 539.53,-483.79 509.5,-485.31 509.5,-487.18\"/>\n",
1191
+ "<text text-anchor=\"start\" x=\"511.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1192
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"628,-460.44 628,-482.44 641,-482.44 641,-460.44 628,-460.44\"/>\n",
1193
+ "<text text-anchor=\"start\" x=\"632.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1194
+ "</g>\n",
1195
+ "<!-- Temporal_139989533076576&#45;&gt;Storage_139989533076976 -->\n",
1196
+ "<g id=\"edge49\" class=\"edge\">\n",
1197
+ "<title>Temporal_139989533076576-&gt;Storage_139989533076976</title>\n",
1198
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-504.88C576.5,-503.57 576.5,-502.24 576.5,-500.88\"/>\n",
1199
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-500.53 576.5,-490.53 573,-500.53 580,-500.53\"/>\n",
1200
+ "</g>\n",
1201
+ "<!-- Reservation_139989533078896 -->\n",
1202
+ "<g id=\"node44\" class=\"node\">\n",
1203
+ "<title>Reservation_139989533078896</title>\n",
1204
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"660.5,-438.81 492.5,-438.81 492.5,-434.81 488.5,-434.81 488.5,-430.81 492.5,-430.81 492.5,-410.81 488.5,-410.81 488.5,-406.81 492.5,-406.81 492.5,-402.81 660.5,-402.81 660.5,-438.81\"/>\n",
1205
+ "<polyline fill=\"none\" stroke=\"black\" points=\"492.5,-434.81 496.5,-434.81 496.5,-430.81 492.5,-430.81 \"/>\n",
1206
+ "<polyline fill=\"none\" stroke=\"black\" points=\"492.5,-410.81 496.5,-410.81 496.5,-406.81 492.5,-406.81 \"/>\n",
1207
+ "<text text-anchor=\"start\" x=\"494.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1208
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"645,-409.31 645,-431.31 658,-431.31 658,-409.31 645,-409.31\"/>\n",
1209
+ "<text text-anchor=\"start\" x=\"649.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1210
+ "</g>\n",
1211
+ "<!-- Storage_139989533076976&#45;&gt;Reservation_139989533078896 -->\n",
1212
+ "<g id=\"edge50\" class=\"edge\">\n",
1213
+ "<title>Storage_139989533076976-&gt;Reservation_139989533078896</title>\n",
1214
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-453.2C576.5,-451.9 576.5,-450.58 576.5,-449.24\"/>\n",
1215
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-449.03 576.5,-439.03 573,-449.03 580,-449.03\"/>\n",
1216
+ "</g>\n",
1217
+ "<!-- Temporal_139989533078816 -->\n",
1218
+ "<g id=\"node45\" class=\"node\">\n",
1219
+ "<title>Temporal_139989533078816</title>\n",
1220
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"647,-388.25 506,-388.25 506,-352.25 647,-352.25 647,-388.25\"/>\n",
1221
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-367.15\" font-family=\"Arial\" font-size=\"12.00\">for e in [0..16) stride=4</text>\n",
1222
+ "</g>\n",
1223
+ "<!-- Reservation_139989533078896&#45;&gt;Temporal_139989533078816 -->\n",
1224
+ "<g id=\"edge51\" class=\"edge\">\n",
1225
+ "<title>Reservation_139989533078896-&gt;Temporal_139989533078816</title>\n",
1226
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-402.55C576.5,-401.27 576.5,-399.95 576.5,-398.62\"/>\n",
1227
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-398.45 576.5,-388.45 573,-398.45 580,-398.45\"/>\n",
1228
+ "</g>\n",
1229
+ "<!-- Spatial_139989533079056 -->\n",
1230
+ "<g id=\"node46\" class=\"node\">\n",
1231
+ "<title>Spatial_139989533079056</title>\n",
1232
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"661.5,-338.25 491.5,-338.25 491.5,-302.25 661.5,-302.25 661.5,-338.25\"/>\n",
1233
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for d in [0..128) stride=1</text>\n",
1234
+ "</g>\n",
1235
+ "<!-- Temporal_139989533078816&#45;&gt;Spatial_139989533079056 -->\n",
1236
+ "<g id=\"edge52\" class=\"edge\">\n",
1237
+ "<title>Temporal_139989533078816-&gt;Spatial_139989533079056</title>\n",
1238
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-352.19C576.5,-350.92 576.5,-349.62 576.5,-348.3\"/>\n",
1239
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-348.25 576.5,-338.25 573,-348.25 580,-348.25\"/>\n",
1240
+ "</g>\n",
1241
+ "<!-- Spatial_139989533079296 -->\n",
1242
+ "<g id=\"node47\" class=\"node\">\n",
1243
+ "<title>Spatial_139989533079296</title>\n",
1244
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"655,-288.25 498,-288.25 498,-252.25 655,-252.25 655,-288.25\"/>\n",
1245
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">S-X for e in [0..4) stride=1</text>\n",
1246
+ "</g>\n",
1247
+ "<!-- Spatial_139989533079056&#45;&gt;Spatial_139989533079296 -->\n",
1248
+ "<g id=\"edge53\" class=\"edge\">\n",
1249
+ "<title>Spatial_139989533079056-&gt;Spatial_139989533079296</title>\n",
1250
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-302.19C576.5,-300.92 576.5,-299.62 576.5,-298.3\"/>\n",
1251
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-298.25 576.5,-288.25 573,-298.25 580,-298.25\"/>\n",
1252
+ "</g>\n",
1253
+ "<!-- Spatial_139989533079536 -->\n",
1254
+ "<g id=\"node48\" class=\"node\">\n",
1255
+ "<title>Spatial_139989533079536</title>\n",
1256
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"658.5,-237.69 494.5,-237.69 494.5,-201.69 658.5,-201.69 658.5,-237.69\"/>\n",
1257
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-216.59\" font-family=\"Arial\" font-size=\"12.00\">S-X for h in [0..32) stride=1</text>\n",
1258
+ "</g>\n",
1259
+ "<!-- Spatial_139989533079296&#45;&gt;Spatial_139989533079536 -->\n",
1260
+ "<g id=\"edge54\" class=\"edge\">\n",
1261
+ "<title>Spatial_139989533079296-&gt;Spatial_139989533079536</title>\n",
1262
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-251.99C576.5,-250.7 576.5,-249.39 576.5,-248.06\"/>\n",
1263
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-247.89 576.5,-237.89 573,-247.89 580,-247.89\"/>\n",
1264
+ "</g>\n",
1265
+ "<!-- Storage_139989533575760 -->\n",
1266
+ "<g id=\"node49\" class=\"node\">\n",
1267
+ "<title>Storage_139989533575760</title>\n",
1268
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M641.5,-183.8C641.5,-185.67 612.37,-187.19 576.5,-187.19 540.63,-187.19 511.5,-185.67 511.5,-183.8 511.5,-183.8 511.5,-153.32 511.5,-153.32 511.5,-151.46 540.63,-149.94 576.5,-149.94 612.37,-149.94 641.5,-151.46 641.5,-153.32 641.5,-153.32 641.5,-183.8 641.5,-183.8\"/>\n",
1269
+ "<path fill=\"none\" stroke=\"black\" d=\"M641.5,-183.8C641.5,-181.93 612.37,-180.41 576.5,-180.41 540.63,-180.41 511.5,-181.93 511.5,-183.8\"/>\n",
1270
+ "<text text-anchor=\"start\" x=\"513.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
1271
+ "<polygon fill=\"none\" stroke=\"#3c00ff\" stroke-width=\"5\" points=\"610,-157.06 610,-179.06 639,-179.06 639,-157.06 610,-157.06\"/>\n",
1272
+ "<text text-anchor=\"start\" x=\"614.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">WK</text>\n",
1273
+ "</g>\n",
1274
+ "<!-- Spatial_139989533079536&#45;&gt;Storage_139989533575760 -->\n",
1275
+ "<g id=\"edge55\" class=\"edge\">\n",
1276
+ "<title>Spatial_139989533079536-&gt;Storage_139989533575760</title>\n",
1277
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-201.51C576.5,-200.2 576.5,-198.86 576.5,-197.51\"/>\n",
1278
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-197.15 576.5,-187.15 573,-197.15 580,-197.15\"/>\n",
1279
+ "</g>\n",
1280
+ "<!-- Reservation_139989533576640 -->\n",
1281
+ "<g id=\"node50\" class=\"node\">\n",
1282
+ "<title>Reservation_139989533576640</title>\n",
1283
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"659,-136 494,-136 494,-132 490,-132 490,-128 494,-128 494,-108 490,-108 490,-104 494,-104 494,-100 659,-100 659,-136\"/>\n",
1284
+ "<polyline fill=\"none\" stroke=\"black\" points=\"494,-132 498,-132 498,-128 494,-128 \"/>\n",
1285
+ "<polyline fill=\"none\" stroke=\"black\" points=\"494,-108 498,-108 498,-104 494,-104 \"/>\n",
1286
+ "<text text-anchor=\"start\" x=\"496.5\" y=\"-114.4\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
1287
+ "<polygon fill=\"none\" stroke=\"#3c00ff\" stroke-width=\"5\" points=\"628,-106.5 628,-128.5 657,-128.5 657,-106.5 628,-106.5\"/>\n",
1288
+ "<text text-anchor=\"start\" x=\"632.5\" y=\"-114.4\" font-family=\"Arial\" font-size=\"12.00\">WK</text>\n",
1289
+ "</g>\n",
1290
+ "<!-- Storage_139989533575760&#45;&gt;Reservation_139989533576640 -->\n",
1291
+ "<g id=\"edge56\" class=\"edge\">\n",
1292
+ "<title>Storage_139989533575760-&gt;Reservation_139989533576640</title>\n",
1293
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-149.76C576.5,-148.65 576.5,-147.52 576.5,-146.38\"/>\n",
1294
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-146.16 576.5,-136.16 573,-146.16 580,-146.16\"/>\n",
1295
+ "</g>\n",
1296
+ "<!-- Temporal_139989533576880 -->\n",
1297
+ "<g id=\"node51\" class=\"node\">\n",
1298
+ "<title>Temporal_139989533576880</title>\n",
1299
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"656.5,-86 496.5,-86 496.5,-50 656.5,-50 656.5,-86\"/>\n",
1300
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-64.9\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..1024) stride=1</text>\n",
1301
+ "</g>\n",
1302
+ "<!-- Reservation_139989533576640&#45;&gt;Temporal_139989533576880 -->\n",
1303
+ "<g id=\"edge57\" class=\"edge\">\n",
1304
+ "<title>Reservation_139989533576640-&gt;Temporal_139989533576880</title>\n",
1305
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-99.94C576.5,-98.67 576.5,-97.37 576.5,-96.05\"/>\n",
1306
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-96 576.5,-86 573,-96 580,-96\"/>\n",
1307
+ "</g>\n",
1308
+ "<!-- Compute_139989533577440 -->\n",
1309
+ "<g id=\"node52\" class=\"node\">\n",
1310
+ "<title>Compute_139989533577440</title>\n",
1311
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"576.5\" cy=\"-18\" rx=\"54.88\" ry=\"18\"/>\n",
1312
+ "<text text-anchor=\"middle\" x=\"576.5\" y=\"-14.9\" font-family=\"Arial\" font-size=\"12.00\">MAC computes K</text>\n",
1313
+ "</g>\n",
1314
+ "<!-- Temporal_139989533576880&#45;&gt;Compute_139989533577440 -->\n",
1315
+ "<g id=\"edge58\" class=\"edge\">\n",
1316
+ "<title>Temporal_139989533576880-&gt;Compute_139989533577440</title>\n",
1317
+ "<path fill=\"none\" stroke=\"black\" d=\"M576.5,-49.94C576.5,-48.67 576.5,-47.37 576.5,-46.05\"/>\n",
1318
+ "<polygon fill=\"black\" stroke=\"black\" points=\"580,-46 576.5,-36 573,-46 580,-46\"/>\n",
1319
+ "</g>\n",
1320
+ "<!-- Storage_139989531996832 -->\n",
1321
+ "<g id=\"node54\" class=\"node\">\n",
1322
+ "<title>Storage_139989531996832</title>\n",
1323
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M904.5,-1045.05C904.5,-1046.92 869.09,-1048.44 825.5,-1048.44 781.91,-1048.44 746.5,-1046.92 746.5,-1045.05 746.5,-1045.05 746.5,-1014.57 746.5,-1014.57 746.5,-1012.71 781.91,-1011.19 825.5,-1011.19 869.09,-1011.19 904.5,-1012.71 904.5,-1014.57 904.5,-1014.57 904.5,-1045.05 904.5,-1045.05\"/>\n",
1324
+ "<path fill=\"none\" stroke=\"black\" d=\"M904.5,-1045.05C904.5,-1043.18 869.09,-1041.66 825.5,-1041.66 781.91,-1041.66 746.5,-1043.18 746.5,-1045.05\"/>\n",
1325
+ "<text text-anchor=\"start\" x=\"748.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
1326
+ "<polygon fill=\"none\" stroke=\"#9500ff\" stroke-width=\"5\" points=\"871,-1018.31 871,-1040.31 902,-1040.31 902,-1018.31 871,-1018.31\"/>\n",
1327
+ "<text text-anchor=\"start\" x=\"875.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">WQ</text>\n",
1328
+ "</g>\n",
1329
+ "<!-- Storage_139989533580000&#45;&gt;Storage_139989531996832 -->\n",
1330
+ "<g id=\"edge59\" class=\"edge\">\n",
1331
+ "<title>Storage_139989533580000-&gt;Storage_139989531996832</title>\n",
1332
+ "<path fill=\"none\" stroke=\"black\" d=\"M780.77,-1062.2C784.3,-1059.73 787.96,-1057.15 791.61,-1054.59\"/>\n",
1333
+ "<polygon fill=\"black\" stroke=\"black\" points=\"793.86,-1057.3 800.03,-1048.69 789.83,-1051.57 793.86,-1057.3\"/>\n",
1334
+ "</g>\n",
1335
+ "<!-- Reservation_139989529912224 -->\n",
1336
+ "<g id=\"node55\" class=\"node\">\n",
1337
+ "<title>Reservation_139989529912224</title>\n",
1338
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1006,-997.25 723,-997.25 723,-993.25 719,-993.25 719,-989.25 723,-989.25 723,-969.25 719,-969.25 719,-965.25 723,-965.25 723,-961.25 1006,-961.25 1006,-997.25\"/>\n",
1339
+ "<polyline fill=\"none\" stroke=\"black\" points=\"723,-993.25 727,-993.25 727,-989.25 723,-989.25 \"/>\n",
1340
+ "<polyline fill=\"none\" stroke=\"black\" points=\"723,-969.25 727,-969.25 727,-965.25 723,-965.25 \"/>\n",
1341
+ "<text text-anchor=\"start\" x=\"725.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
1342
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"886,-967.75 886,-989.75 903,-989.75 903,-967.75 886,-967.75\"/>\n",
1343
+ "<text text-anchor=\"start\" x=\"890.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1344
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"908,-967.75 908,-989.75 926,-989.75 926,-967.75 908,-967.75\"/>\n",
1345
+ "<text text-anchor=\"start\" x=\"912.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
1346
+ "<polygon fill=\"none\" stroke=\"#9500ff\" stroke-width=\"5\" points=\"931,-967.75 931,-989.75 962,-989.75 962,-967.75 931,-967.75\"/>\n",
1347
+ "<text text-anchor=\"start\" x=\"935.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">WQ</text>\n",
1348
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"967,-967.75 967,-989.75 986,-989.75 986,-967.75 967,-967.75\"/>\n",
1349
+ "<text text-anchor=\"start\" x=\"971.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
1350
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"991,-967.75 991,-989.75 1004,-989.75 1004,-967.75 991,-967.75\"/>\n",
1351
+ "<text text-anchor=\"start\" x=\"995.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1352
+ "</g>\n",
1353
+ "<!-- Storage_139989531996832&#45;&gt;Reservation_139989529912224 -->\n",
1354
+ "<g id=\"edge60\" class=\"edge\">\n",
1355
+ "<title>Storage_139989531996832-&gt;Reservation_139989529912224</title>\n",
1356
+ "<path fill=\"none\" stroke=\"black\" d=\"M839.8,-1011.01C841.25,-1009.2 842.74,-1007.35 844.23,-1005.48\"/>\n",
1357
+ "<polygon fill=\"black\" stroke=\"black\" points=\"847.19,-1007.4 850.72,-997.41 841.73,-1003.01 847.19,-1007.4\"/>\n",
1358
+ "</g>\n",
1359
+ "<!-- Reservation_139989531996992 -->\n",
1360
+ "<g id=\"node56\" class=\"node\">\n",
1361
+ "<title>Reservation_139989531996992</title>\n",
1362
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"960.5,-946.69 768.5,-946.69 768.5,-942.69 764.5,-942.69 764.5,-938.69 768.5,-938.69 768.5,-918.69 764.5,-918.69 764.5,-914.69 768.5,-914.69 768.5,-910.69 960.5,-910.69 960.5,-946.69\"/>\n",
1363
+ "<polyline fill=\"none\" stroke=\"black\" points=\"768.5,-942.69 772.5,-942.69 772.5,-938.69 768.5,-938.69 \"/>\n",
1364
+ "<polyline fill=\"none\" stroke=\"black\" points=\"768.5,-918.69 772.5,-918.69 772.5,-914.69 768.5,-914.69 \"/>\n",
1365
+ "<text text-anchor=\"start\" x=\"770.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
1366
+ "<polygon fill=\"none\" stroke=\"#9500ff\" stroke-width=\"5\" points=\"927,-917.19 927,-939.19 958,-939.19 958,-917.19 927,-917.19\"/>\n",
1367
+ "<text text-anchor=\"start\" x=\"931.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">WQ</text>\n",
1368
+ "</g>\n",
1369
+ "<!-- Reservation_139989529912224&#45;&gt;Reservation_139989531996992 -->\n",
1370
+ "<g id=\"edge61\" class=\"edge\">\n",
1371
+ "<title>Reservation_139989529912224-&gt;Reservation_139989531996992</title>\n",
1372
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-960.99C864.5,-959.7 864.5,-958.39 864.5,-957.06\"/>\n",
1373
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-956.89 864.5,-946.89 861,-956.89 868,-956.89\"/>\n",
1374
+ "</g>\n",
1375
+ "<!-- Temporal_139989531997312 -->\n",
1376
+ "<g id=\"node57\" class=\"node\">\n",
1377
+ "<title>Temporal_139989531997312</title>\n",
1378
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"935,-896.12 794,-896.12 794,-860.12 935,-860.12 935,-896.12\"/>\n",
1379
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
1380
+ "</g>\n",
1381
+ "<!-- Reservation_139989531996992&#45;&gt;Temporal_139989531997312 -->\n",
1382
+ "<g id=\"edge62\" class=\"edge\">\n",
1383
+ "<title>Reservation_139989531996992-&gt;Temporal_139989531997312</title>\n",
1384
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-910.43C864.5,-909.14 864.5,-907.82 864.5,-906.49\"/>\n",
1385
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-906.33 864.5,-896.33 861,-906.33 868,-906.33\"/>\n",
1386
+ "</g>\n",
1387
+ "<!-- Temporal_139989531999232 -->\n",
1388
+ "<g id=\"node58\" class=\"node\">\n",
1389
+ "<title>Temporal_139989531999232</title>\n",
1390
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"948.5,-845.56 780.5,-845.56 780.5,-809.56 948.5,-809.56 948.5,-845.56\"/>\n",
1391
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..64) stride=1024</text>\n",
1392
+ "</g>\n",
1393
+ "<!-- Temporal_139989531997312&#45;&gt;Temporal_139989531999232 -->\n",
1394
+ "<g id=\"edge63\" class=\"edge\">\n",
1395
+ "<title>Temporal_139989531997312-&gt;Temporal_139989531999232</title>\n",
1396
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-859.87C864.5,-858.58 864.5,-857.26 864.5,-855.93\"/>\n",
1397
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-855.76 864.5,-845.76 861,-855.77 868,-855.76\"/>\n",
1398
+ "</g>\n",
1399
+ "<!-- Storage_139989531999472 -->\n",
1400
+ "<g id=\"node59\" class=\"node\">\n",
1401
+ "<title>Storage_139989531999472</title>\n",
1402
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M934.5,-791.68C934.5,-793.54 903.12,-795.06 864.5,-795.06 825.88,-795.06 794.5,-793.54 794.5,-791.68 794.5,-791.68 794.5,-761.2 794.5,-761.2 794.5,-759.33 825.88,-757.81 864.5,-757.81 903.12,-757.81 934.5,-759.33 934.5,-761.2 934.5,-761.2 934.5,-791.68 934.5,-791.68\"/>\n",
1403
+ "<path fill=\"none\" stroke=\"black\" d=\"M934.5,-791.68C934.5,-789.81 903.12,-788.29 864.5,-788.29 825.88,-788.29 794.5,-789.81 794.5,-791.68\"/>\n",
1404
+ "<text text-anchor=\"start\" x=\"796.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
1405
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"919,-764.94 919,-786.94 932,-786.94 932,-764.94 919,-764.94\"/>\n",
1406
+ "<text text-anchor=\"start\" x=\"923.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1407
+ "</g>\n",
1408
+ "<!-- Temporal_139989531999232&#45;&gt;Storage_139989531999472 -->\n",
1409
+ "<g id=\"edge64\" class=\"edge\">\n",
1410
+ "<title>Temporal_139989531999232-&gt;Storage_139989531999472</title>\n",
1411
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-809.38C864.5,-808.07 864.5,-806.74 864.5,-805.38\"/>\n",
1412
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-805.03 864.5,-795.03 861,-805.03 868,-805.03\"/>\n",
1413
+ "</g>\n",
1414
+ "<!-- Reservation_139989531999712 -->\n",
1415
+ "<g id=\"node60\" class=\"node\">\n",
1416
+ "<title>Reservation_139989531999712</title>\n",
1417
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"951.5,-743.88 777.5,-743.88 777.5,-739.88 773.5,-739.88 773.5,-735.88 777.5,-735.88 777.5,-715.88 773.5,-715.88 773.5,-711.88 777.5,-711.88 777.5,-707.88 951.5,-707.88 951.5,-743.88\"/>\n",
1418
+ "<polyline fill=\"none\" stroke=\"black\" points=\"777.5,-739.88 781.5,-739.88 781.5,-735.88 777.5,-735.88 \"/>\n",
1419
+ "<polyline fill=\"none\" stroke=\"black\" points=\"777.5,-715.88 781.5,-715.88 781.5,-711.88 777.5,-711.88 \"/>\n",
1420
+ "<text text-anchor=\"start\" x=\"779.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
1421
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"936,-714.38 936,-736.38 949,-736.38 949,-714.38 936,-714.38\"/>\n",
1422
+ "<text text-anchor=\"start\" x=\"940.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1423
+ "</g>\n",
1424
+ "<!-- Storage_139989531999472&#45;&gt;Reservation_139989531999712 -->\n",
1425
+ "<g id=\"edge65\" class=\"edge\">\n",
1426
+ "<title>Storage_139989531999472-&gt;Reservation_139989531999712</title>\n",
1427
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-757.63C864.5,-756.52 864.5,-755.39 864.5,-754.25\"/>\n",
1428
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-754.03 864.5,-744.03 861,-754.03 868,-754.03\"/>\n",
1429
+ "</g>\n",
1430
+ "<!-- Temporal_139989531999792 -->\n",
1431
+ "<g id=\"node61\" class=\"node\">\n",
1432
+ "<title>Temporal_139989531999792</title>\n",
1433
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"935,-693.31 794,-693.31 794,-657.31 935,-657.31 935,-693.31\"/>\n",
1434
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for e in [0..2) stride=64</text>\n",
1435
+ "</g>\n",
1436
+ "<!-- Reservation_139989531999712&#45;&gt;Temporal_139989531999792 -->\n",
1437
+ "<g id=\"edge66\" class=\"edge\">\n",
1438
+ "<title>Reservation_139989531999712-&gt;Temporal_139989531999792</title>\n",
1439
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-707.62C864.5,-706.33 864.5,-705.01 864.5,-703.68\"/>\n",
1440
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-703.51 864.5,-693.51 861,-703.52 868,-703.51\"/>\n",
1441
+ "</g>\n",
1442
+ "<!-- Storage_139989532000032 -->\n",
1443
+ "<g id=\"node62\" class=\"node\">\n",
1444
+ "<title>Storage_139989532000032</title>\n",
1445
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M934.5,-639.43C934.5,-641.29 903.12,-642.81 864.5,-642.81 825.88,-642.81 794.5,-641.29 794.5,-639.43 794.5,-639.43 794.5,-608.95 794.5,-608.95 794.5,-607.08 825.88,-605.56 864.5,-605.56 903.12,-605.56 934.5,-607.08 934.5,-608.95 934.5,-608.95 934.5,-639.43 934.5,-639.43\"/>\n",
1446
+ "<path fill=\"none\" stroke=\"black\" d=\"M934.5,-639.43C934.5,-637.56 903.12,-636.04 864.5,-636.04 825.88,-636.04 794.5,-637.56 794.5,-639.43\"/>\n",
1447
+ "<text text-anchor=\"start\" x=\"796.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1448
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"913,-612.69 913,-634.69 932,-634.69 932,-612.69 913,-612.69\"/>\n",
1449
+ "<text text-anchor=\"start\" x=\"917.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
1450
+ "</g>\n",
1451
+ "<!-- Temporal_139989531999792&#45;&gt;Storage_139989532000032 -->\n",
1452
+ "<g id=\"edge67\" class=\"edge\">\n",
1453
+ "<title>Temporal_139989531999792-&gt;Storage_139989532000032</title>\n",
1454
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-657.13C864.5,-655.82 864.5,-654.49 864.5,-653.13\"/>\n",
1455
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-652.78 864.5,-642.78 861,-652.78 868,-652.78\"/>\n",
1456
+ "</g>\n",
1457
+ "<!-- Reservation_139989532196944 -->\n",
1458
+ "<g id=\"node63\" class=\"node\">\n",
1459
+ "<title>Reservation_139989532196944</title>\n",
1460
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"951.5,-591.62 777.5,-591.62 777.5,-587.62 773.5,-587.62 773.5,-583.62 777.5,-583.62 777.5,-563.62 773.5,-563.62 773.5,-559.62 777.5,-559.62 777.5,-555.62 951.5,-555.62 951.5,-591.62\"/>\n",
1461
+ "<polyline fill=\"none\" stroke=\"black\" points=\"777.5,-587.62 781.5,-587.62 781.5,-583.62 777.5,-583.62 \"/>\n",
1462
+ "<polyline fill=\"none\" stroke=\"black\" points=\"777.5,-563.62 781.5,-563.62 781.5,-559.62 777.5,-559.62 \"/>\n",
1463
+ "<text text-anchor=\"start\" x=\"779.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1464
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"930,-562.12 930,-584.12 949,-584.12 949,-562.12 930,-562.12\"/>\n",
1465
+ "<text text-anchor=\"start\" x=\"934.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
1466
+ "</g>\n",
1467
+ "<!-- Storage_139989532000032&#45;&gt;Reservation_139989532196944 -->\n",
1468
+ "<g id=\"edge68\" class=\"edge\">\n",
1469
+ "<title>Storage_139989532000032-&gt;Reservation_139989532196944</title>\n",
1470
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-605.38C864.5,-604.27 864.5,-603.14 864.5,-602\"/>\n",
1471
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-601.78 864.5,-591.78 861,-601.78 868,-601.78\"/>\n",
1472
+ "</g>\n",
1473
+ "<!-- Temporal_139989532197184 -->\n",
1474
+ "<g id=\"node64\" class=\"node\">\n",
1475
+ "<title>Temporal_139989532197184</title>\n",
1476
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"942.5,-541.06 786.5,-541.06 786.5,-505.06 942.5,-505.06 942.5,-541.06\"/>\n",
1477
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">for d in [0..32) stride=128</text>\n",
1478
+ "</g>\n",
1479
+ "<!-- Reservation_139989532196944&#45;&gt;Temporal_139989532197184 -->\n",
1480
+ "<g id=\"edge69\" class=\"edge\">\n",
1481
+ "<title>Reservation_139989532196944-&gt;Temporal_139989532197184</title>\n",
1482
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-555.37C864.5,-554.08 864.5,-552.76 864.5,-551.43\"/>\n",
1483
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-551.26 864.5,-541.26 861,-551.27 868,-551.26\"/>\n",
1484
+ "</g>\n",
1485
+ "<!-- Storage_139989532197584 -->\n",
1486
+ "<g id=\"node65\" class=\"node\">\n",
1487
+ "<title>Storage_139989532197584</title>\n",
1488
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M931.5,-487.18C931.5,-489.04 901.47,-490.56 864.5,-490.56 827.53,-490.56 797.5,-489.04 797.5,-487.18 797.5,-487.18 797.5,-456.7 797.5,-456.7 797.5,-454.83 827.53,-453.31 864.5,-453.31 901.47,-453.31 931.5,-454.83 931.5,-456.7 931.5,-456.7 931.5,-487.18 931.5,-487.18\"/>\n",
1489
+ "<path fill=\"none\" stroke=\"black\" d=\"M931.5,-487.18C931.5,-485.31 901.47,-483.79 864.5,-483.79 827.53,-483.79 797.5,-485.31 797.5,-487.18\"/>\n",
1490
+ "<text text-anchor=\"start\" x=\"799.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1491
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"916,-460.44 916,-482.44 929,-482.44 929,-460.44 916,-460.44\"/>\n",
1492
+ "<text text-anchor=\"start\" x=\"920.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1493
+ "</g>\n",
1494
+ "<!-- Temporal_139989532197184&#45;&gt;Storage_139989532197584 -->\n",
1495
+ "<g id=\"edge70\" class=\"edge\">\n",
1496
+ "<title>Temporal_139989532197184-&gt;Storage_139989532197584</title>\n",
1497
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-504.88C864.5,-503.57 864.5,-502.24 864.5,-500.88\"/>\n",
1498
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-500.53 864.5,-490.53 861,-500.53 868,-500.53\"/>\n",
1499
+ "</g>\n",
1500
+ "<!-- Reservation_139989532199424 -->\n",
1501
+ "<g id=\"node66\" class=\"node\">\n",
1502
+ "<title>Reservation_139989532199424</title>\n",
1503
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"948.5,-438.81 780.5,-438.81 780.5,-434.81 776.5,-434.81 776.5,-430.81 780.5,-430.81 780.5,-410.81 776.5,-410.81 776.5,-406.81 780.5,-406.81 780.5,-402.81 948.5,-402.81 948.5,-438.81\"/>\n",
1504
+ "<polyline fill=\"none\" stroke=\"black\" points=\"780.5,-434.81 784.5,-434.81 784.5,-430.81 780.5,-430.81 \"/>\n",
1505
+ "<polyline fill=\"none\" stroke=\"black\" points=\"780.5,-410.81 784.5,-410.81 784.5,-406.81 780.5,-406.81 \"/>\n",
1506
+ "<text text-anchor=\"start\" x=\"782.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1507
+ "<polygon fill=\"none\" stroke=\"#ffff00\" stroke-width=\"5\" points=\"933,-409.31 933,-431.31 946,-431.31 946,-409.31 933,-409.31\"/>\n",
1508
+ "<text text-anchor=\"start\" x=\"937.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">I</text>\n",
1509
+ "</g>\n",
1510
+ "<!-- Storage_139989532197584&#45;&gt;Reservation_139989532199424 -->\n",
1511
+ "<g id=\"edge71\" class=\"edge\">\n",
1512
+ "<title>Storage_139989532197584-&gt;Reservation_139989532199424</title>\n",
1513
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-453.2C864.5,-451.9 864.5,-450.58 864.5,-449.24\"/>\n",
1514
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-449.03 864.5,-439.03 861,-449.03 868,-449.03\"/>\n",
1515
+ "</g>\n",
1516
+ "<!-- Temporal_139989532199504 -->\n",
1517
+ "<g id=\"node67\" class=\"node\">\n",
1518
+ "<title>Temporal_139989532199504</title>\n",
1519
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"935,-388.25 794,-388.25 794,-352.25 935,-352.25 935,-388.25\"/>\n",
1520
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-367.15\" font-family=\"Arial\" font-size=\"12.00\">for e in [0..16) stride=4</text>\n",
1521
+ "</g>\n",
1522
+ "<!-- Reservation_139989532199424&#45;&gt;Temporal_139989532199504 -->\n",
1523
+ "<g id=\"edge72\" class=\"edge\">\n",
1524
+ "<title>Reservation_139989532199424-&gt;Temporal_139989532199504</title>\n",
1525
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-402.55C864.5,-401.27 864.5,-399.95 864.5,-398.62\"/>\n",
1526
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-398.45 864.5,-388.45 861,-398.45 868,-398.45\"/>\n",
1527
+ "</g>\n",
1528
+ "<!-- Spatial_139989532199744 -->\n",
1529
+ "<g id=\"node68\" class=\"node\">\n",
1530
+ "<title>Spatial_139989532199744</title>\n",
1531
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"949.5,-338.25 779.5,-338.25 779.5,-302.25 949.5,-302.25 949.5,-338.25\"/>\n",
1532
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for d in [0..128) stride=1</text>\n",
1533
+ "</g>\n",
1534
+ "<!-- Temporal_139989532199504&#45;&gt;Spatial_139989532199744 -->\n",
1535
+ "<g id=\"edge73\" class=\"edge\">\n",
1536
+ "<title>Temporal_139989532199504-&gt;Spatial_139989532199744</title>\n",
1537
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-352.19C864.5,-350.92 864.5,-349.62 864.5,-348.3\"/>\n",
1538
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-348.25 864.5,-338.25 861,-348.25 868,-348.25\"/>\n",
1539
+ "</g>\n",
1540
+ "<!-- Spatial_139991035331600 -->\n",
1541
+ "<g id=\"node69\" class=\"node\">\n",
1542
+ "<title>Spatial_139991035331600</title>\n",
1543
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"946.5,-288.25 782.5,-288.25 782.5,-252.25 946.5,-252.25 946.5,-288.25\"/>\n",
1544
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">S-X for h in [0..32) stride=1</text>\n",
1545
+ "</g>\n",
1546
+ "<!-- Spatial_139989532199744&#45;&gt;Spatial_139991035331600 -->\n",
1547
+ "<g id=\"edge74\" class=\"edge\">\n",
1548
+ "<title>Spatial_139989532199744-&gt;Spatial_139991035331600</title>\n",
1549
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-302.19C864.5,-300.92 864.5,-299.62 864.5,-298.3\"/>\n",
1550
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-298.25 864.5,-288.25 861,-298.25 868,-298.25\"/>\n",
1551
+ "</g>\n",
1552
+ "<!-- Spatial_139989532199904 -->\n",
1553
+ "<g id=\"node70\" class=\"node\">\n",
1554
+ "<title>Spatial_139989532199904</title>\n",
1555
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"943,-237.69 786,-237.69 786,-201.69 943,-201.69 943,-237.69\"/>\n",
1556
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-216.59\" font-family=\"Arial\" font-size=\"12.00\">S-X for e in [0..4) stride=1</text>\n",
1557
+ "</g>\n",
1558
+ "<!-- Spatial_139991035331600&#45;&gt;Spatial_139989532199904 -->\n",
1559
+ "<g id=\"edge75\" class=\"edge\">\n",
1560
+ "<title>Spatial_139991035331600-&gt;Spatial_139989532199904</title>\n",
1561
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-251.99C864.5,-250.7 864.5,-249.39 864.5,-248.06\"/>\n",
1562
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-247.89 864.5,-237.89 861,-247.89 868,-247.89\"/>\n",
1563
+ "</g>\n",
1564
+ "<!-- Storage_139989532515840 -->\n",
1565
+ "<g id=\"node71\" class=\"node\">\n",
1566
+ "<title>Storage_139989532515840</title>\n",
1567
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M930.5,-183.8C930.5,-185.67 900.92,-187.19 864.5,-187.19 828.08,-187.19 798.5,-185.67 798.5,-183.8 798.5,-183.8 798.5,-153.32 798.5,-153.32 798.5,-151.46 828.08,-149.94 864.5,-149.94 900.92,-149.94 930.5,-151.46 930.5,-153.32 930.5,-153.32 930.5,-183.8 930.5,-183.8\"/>\n",
1568
+ "<path fill=\"none\" stroke=\"black\" d=\"M930.5,-183.8C930.5,-181.93 900.92,-180.41 864.5,-180.41 828.08,-180.41 798.5,-181.93 798.5,-183.8\"/>\n",
1569
+ "<text text-anchor=\"start\" x=\"800.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
1570
+ "<polygon fill=\"none\" stroke=\"#9500ff\" stroke-width=\"5\" points=\"897,-157.06 897,-179.06 928,-179.06 928,-157.06 897,-157.06\"/>\n",
1571
+ "<text text-anchor=\"start\" x=\"901.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">WQ</text>\n",
1572
+ "</g>\n",
1573
+ "<!-- Spatial_139989532199904&#45;&gt;Storage_139989532515840 -->\n",
1574
+ "<g id=\"edge76\" class=\"edge\">\n",
1575
+ "<title>Spatial_139989532199904-&gt;Storage_139989532515840</title>\n",
1576
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-201.51C864.5,-200.2 864.5,-198.86 864.5,-197.51\"/>\n",
1577
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-197.15 864.5,-187.15 861,-197.15 868,-197.15\"/>\n",
1578
+ "</g>\n",
1579
+ "<!-- Reservation_139989532516720 -->\n",
1580
+ "<g id=\"node72\" class=\"node\">\n",
1581
+ "<title>Reservation_139989532516720</title>\n",
1582
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"948,-136 781,-136 781,-132 777,-132 777,-128 781,-128 781,-108 777,-108 777,-104 781,-104 781,-100 948,-100 948,-136\"/>\n",
1583
+ "<polyline fill=\"none\" stroke=\"black\" points=\"781,-132 785,-132 785,-128 781,-128 \"/>\n",
1584
+ "<polyline fill=\"none\" stroke=\"black\" points=\"781,-108 785,-108 785,-104 781,-104 \"/>\n",
1585
+ "<text text-anchor=\"start\" x=\"783.5\" y=\"-114.4\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
1586
+ "<polygon fill=\"none\" stroke=\"#9500ff\" stroke-width=\"5\" points=\"915,-106.5 915,-128.5 946,-128.5 946,-106.5 915,-106.5\"/>\n",
1587
+ "<text text-anchor=\"start\" x=\"919.5\" y=\"-114.4\" font-family=\"Arial\" font-size=\"12.00\">WQ</text>\n",
1588
+ "</g>\n",
1589
+ "<!-- Storage_139989532515840&#45;&gt;Reservation_139989532516720 -->\n",
1590
+ "<g id=\"edge77\" class=\"edge\">\n",
1591
+ "<title>Storage_139989532515840-&gt;Reservation_139989532516720</title>\n",
1592
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-149.76C864.5,-148.65 864.5,-147.52 864.5,-146.38\"/>\n",
1593
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-146.16 864.5,-136.16 861,-146.16 868,-146.16\"/>\n",
1594
+ "</g>\n",
1595
+ "<!-- Temporal_139989532516960 -->\n",
1596
+ "<g id=\"node73\" class=\"node\">\n",
1597
+ "<title>Temporal_139989532516960</title>\n",
1598
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"944.5,-86 784.5,-86 784.5,-50 944.5,-50 944.5,-86\"/>\n",
1599
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-64.9\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..1024) stride=1</text>\n",
1600
+ "</g>\n",
1601
+ "<!-- Reservation_139989532516720&#45;&gt;Temporal_139989532516960 -->\n",
1602
+ "<g id=\"edge78\" class=\"edge\">\n",
1603
+ "<title>Reservation_139989532516720-&gt;Temporal_139989532516960</title>\n",
1604
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-99.94C864.5,-98.67 864.5,-97.37 864.5,-96.05\"/>\n",
1605
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-96 864.5,-86 861,-96 868,-96\"/>\n",
1606
+ "</g>\n",
1607
+ "<!-- Compute_139989532517520 -->\n",
1608
+ "<g id=\"node74\" class=\"node\">\n",
1609
+ "<title>Compute_139989532517520</title>\n",
1610
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"864.5\" cy=\"-18\" rx=\"55.53\" ry=\"18\"/>\n",
1611
+ "<text text-anchor=\"middle\" x=\"864.5\" y=\"-14.9\" font-family=\"Arial\" font-size=\"12.00\">MAC computes Q</text>\n",
1612
+ "</g>\n",
1613
+ "<!-- Temporal_139989532516960&#45;&gt;Compute_139989532517520 -->\n",
1614
+ "<g id=\"edge79\" class=\"edge\">\n",
1615
+ "<title>Temporal_139989532516960-&gt;Compute_139989532517520</title>\n",
1616
+ "<path fill=\"none\" stroke=\"black\" d=\"M864.5,-49.94C864.5,-48.67 864.5,-47.37 864.5,-46.05\"/>\n",
1617
+ "<polygon fill=\"black\" stroke=\"black\" points=\"868,-46 864.5,-36 861,-46 868,-46\"/>\n",
1618
+ "</g>\n",
1619
+ "<!-- Temporal_139989530969584 -->\n",
1620
+ "<g id=\"node76\" class=\"node\">\n",
1621
+ "<title>Temporal_139989530969584</title>\n",
1622
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1094,-1047.81 953,-1047.81 953,-1011.81 1094,-1011.81 1094,-1047.81\"/>\n",
1623
+ "<text text-anchor=\"middle\" x=\"1023.5\" y=\"-1026.71\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
1624
+ "</g>\n",
1625
+ "<!-- Reservation_139989530259568&#45;&gt;Temporal_139989530969584 -->\n",
1626
+ "<g id=\"edge80\" class=\"edge\">\n",
1627
+ "<title>Reservation_139989530259568-&gt;Temporal_139989530969584</title>\n",
1628
+ "<path fill=\"none\" stroke=\"black\" d=\"M998.14,-1062.76C999.79,-1060.67 1001.51,-1058.51 1003.23,-1056.34\"/>\n",
1629
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1006.32,-1058.08 1009.8,-1048.07 1000.84,-1053.72 1006.32,-1058.08\"/>\n",
1630
+ "</g>\n",
1631
+ "<!-- Temporal_139989530969744 -->\n",
1632
+ "<g id=\"node77\" class=\"node\">\n",
1633
+ "<title>Temporal_139989530969744</title>\n",
1634
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1165,-997.25 1024,-997.25 1024,-961.25 1165,-961.25 1165,-997.25\"/>\n",
1635
+ "<text text-anchor=\"middle\" x=\"1094.5\" y=\"-976.15\" font-family=\"Arial\" font-size=\"12.00\">for h in [0..32) stride=1</text>\n",
1636
+ "</g>\n",
1637
+ "<!-- Temporal_139989530969584&#45;&gt;Temporal_139989530969744 -->\n",
1638
+ "<g id=\"edge81\" class=\"edge\">\n",
1639
+ "<title>Temporal_139989530969584-&gt;Temporal_139989530969744</title>\n",
1640
+ "<path fill=\"none\" stroke=\"black\" d=\"M1048.73,-1011.55C1052.71,-1008.84 1056.87,-1005.99 1061,-1003.16\"/>\n",
1641
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1063.07,-1005.99 1069.35,-997.45 1059.12,-1000.21 1063.07,-1005.99\"/>\n",
1642
+ "</g>\n",
1643
+ "<!-- Storage_139989530969984 -->\n",
1644
+ "<g id=\"node78\" class=\"node\">\n",
1645
+ "<title>Storage_139989530969984</title>\n",
1646
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1166.5,-943.93C1166.5,-945.79 1134.23,-947.31 1094.5,-947.31 1054.77,-947.31 1022.5,-945.79 1022.5,-943.93 1022.5,-943.93 1022.5,-913.45 1022.5,-913.45 1022.5,-911.58 1054.77,-910.06 1094.5,-910.06 1134.23,-910.06 1166.5,-911.58 1166.5,-913.45 1166.5,-913.45 1166.5,-943.93 1166.5,-943.93\"/>\n",
1647
+ "<path fill=\"none\" stroke=\"black\" d=\"M1166.5,-943.93C1166.5,-942.06 1134.23,-940.54 1094.5,-940.54 1054.77,-940.54 1022.5,-942.06 1022.5,-943.93\"/>\n",
1648
+ "<text text-anchor=\"start\" x=\"1024.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
1649
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"1147,-917.19 1147,-939.19 1164,-939.19 1164,-917.19 1147,-917.19\"/>\n",
1650
+ "<text text-anchor=\"start\" x=\"1151.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1651
+ "</g>\n",
1652
+ "<!-- Temporal_139989530969744&#45;&gt;Storage_139989530969984 -->\n",
1653
+ "<g id=\"edge82\" class=\"edge\">\n",
1654
+ "<title>Temporal_139989530969744-&gt;Storage_139989530969984</title>\n",
1655
+ "<path fill=\"none\" stroke=\"black\" d=\"M1094.5,-960.99C1094.5,-959.9 1094.5,-958.79 1094.5,-957.67\"/>\n",
1656
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1098,-957.55 1094.5,-947.55 1091,-957.55 1098,-957.55\"/>\n",
1657
+ "</g>\n",
1658
+ "<!-- Reservation_139989530970144 -->\n",
1659
+ "<g id=\"node79\" class=\"node\">\n",
1660
+ "<title>Reservation_139989530970144</title>\n",
1661
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1183.5,-896.12 1005.5,-896.12 1005.5,-892.12 1001.5,-892.12 1001.5,-888.12 1005.5,-888.12 1005.5,-868.12 1001.5,-868.12 1001.5,-864.12 1005.5,-864.12 1005.5,-860.12 1183.5,-860.12 1183.5,-896.12\"/>\n",
1662
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1005.5,-892.12 1009.5,-892.12 1009.5,-888.12 1005.5,-888.12 \"/>\n",
1663
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1005.5,-868.12 1009.5,-868.12 1009.5,-864.12 1005.5,-864.12 \"/>\n",
1664
+ "<text text-anchor=\"start\" x=\"1007.5\" y=\"-874.52\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
1665
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"1164,-866.62 1164,-888.62 1181,-888.62 1181,-866.62 1164,-866.62\"/>\n",
1666
+ "<text text-anchor=\"start\" x=\"1168.5\" y=\"-874.52\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1667
+ "</g>\n",
1668
+ "<!-- Storage_139989530969984&#45;&gt;Reservation_139989530970144 -->\n",
1669
+ "<g id=\"edge83\" class=\"edge\">\n",
1670
+ "<title>Storage_139989530969984-&gt;Reservation_139989530970144</title>\n",
1671
+ "<path fill=\"none\" stroke=\"black\" d=\"M1094.5,-909.88C1094.5,-908.77 1094.5,-907.64 1094.5,-906.5\"/>\n",
1672
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1098,-906.28 1094.5,-896.28 1091,-906.28 1098,-906.28\"/>\n",
1673
+ "</g>\n",
1674
+ "<!-- Temporal_139989530970384 -->\n",
1675
+ "<g id=\"node80\" class=\"node\">\n",
1676
+ "<title>Temporal_139989530970384</title>\n",
1677
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1178.5,-845.56 1010.5,-845.56 1010.5,-809.56 1178.5,-809.56 1178.5,-845.56\"/>\n",
1678
+ "<text text-anchor=\"middle\" x=\"1094.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..4) stride=16384</text>\n",
1679
+ "</g>\n",
1680
+ "<!-- Reservation_139989530970144&#45;&gt;Temporal_139989530970384 -->\n",
1681
+ "<g id=\"edge84\" class=\"edge\">\n",
1682
+ "<title>Reservation_139989530970144-&gt;Temporal_139989530970384</title>\n",
1683
+ "<path fill=\"none\" stroke=\"black\" d=\"M1094.5,-859.87C1094.5,-858.58 1094.5,-857.26 1094.5,-855.93\"/>\n",
1684
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1098,-855.76 1094.5,-845.76 1091,-855.77 1098,-855.76\"/>\n",
1685
+ "</g>\n",
1686
+ "<!-- Storage_139989530972304 -->\n",
1687
+ "<g id=\"node81\" class=\"node\">\n",
1688
+ "<title>Storage_139989530972304</title>\n",
1689
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1162.5,-791.68C1162.5,-793.54 1131.12,-795.06 1092.5,-795.06 1053.88,-795.06 1022.5,-793.54 1022.5,-791.68 1022.5,-791.68 1022.5,-761.2 1022.5,-761.2 1022.5,-759.33 1053.88,-757.81 1092.5,-757.81 1131.12,-757.81 1162.5,-759.33 1162.5,-761.2 1162.5,-761.2 1162.5,-791.68 1162.5,-791.68\"/>\n",
1690
+ "<path fill=\"none\" stroke=\"black\" d=\"M1162.5,-791.68C1162.5,-789.81 1131.12,-788.29 1092.5,-788.29 1053.88,-788.29 1022.5,-789.81 1022.5,-791.68\"/>\n",
1691
+ "<text text-anchor=\"start\" x=\"1024.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1692
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"1141,-764.94 1141,-786.94 1160,-786.94 1160,-764.94 1141,-764.94\"/>\n",
1693
+ "<text text-anchor=\"start\" x=\"1145.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
1694
+ "</g>\n",
1695
+ "<!-- Temporal_139989530970384&#45;&gt;Storage_139989530972304 -->\n",
1696
+ "<g id=\"edge85\" class=\"edge\">\n",
1697
+ "<title>Temporal_139989530970384-&gt;Storage_139989530972304</title>\n",
1698
+ "<path fill=\"none\" stroke=\"black\" d=\"M1093.8,-809.38C1093.75,-808.07 1093.69,-806.74 1093.64,-805.38\"/>\n",
1699
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1097.12,-804.87 1093.22,-795.03 1090.13,-805.16 1097.12,-804.87\"/>\n",
1700
+ "</g>\n",
1701
+ "<!-- Reservation_139989530972544 -->\n",
1702
+ "<g id=\"node82\" class=\"node\">\n",
1703
+ "<title>Reservation_139989530972544</title>\n",
1704
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1179.5,-743.88 1005.5,-743.88 1005.5,-739.88 1001.5,-739.88 1001.5,-735.88 1005.5,-735.88 1005.5,-715.88 1001.5,-715.88 1001.5,-711.88 1005.5,-711.88 1005.5,-707.88 1179.5,-707.88 1179.5,-743.88\"/>\n",
1705
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1005.5,-739.88 1009.5,-739.88 1009.5,-735.88 1005.5,-735.88 \"/>\n",
1706
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1005.5,-715.88 1009.5,-715.88 1009.5,-711.88 1005.5,-711.88 \"/>\n",
1707
+ "<text text-anchor=\"start\" x=\"1007.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1708
+ "<polygon fill=\"none\" stroke=\"#ff8000\" stroke-width=\"5\" points=\"1158,-714.38 1158,-736.38 1177,-736.38 1177,-714.38 1158,-714.38\"/>\n",
1709
+ "<text text-anchor=\"start\" x=\"1162.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">Q</text>\n",
1710
+ "</g>\n",
1711
+ "<!-- Storage_139989530972304&#45;&gt;Reservation_139989530972544 -->\n",
1712
+ "<g id=\"edge86\" class=\"edge\">\n",
1713
+ "<title>Storage_139989530972304-&gt;Reservation_139989530972544</title>\n",
1714
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-757.63C1092.5,-756.52 1092.5,-755.39 1092.5,-754.25\"/>\n",
1715
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-754.03 1092.5,-744.03 1089,-754.03 1096,-754.03\"/>\n",
1716
+ "</g>\n",
1717
+ "<!-- Temporal_139989530972864 -->\n",
1718
+ "<g id=\"node83\" class=\"node\">\n",
1719
+ "<title>Temporal_139989530972864</title>\n",
1720
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1174,-693.31 1011,-693.31 1011,-657.31 1174,-657.31 1174,-693.31\"/>\n",
1721
+ "<text text-anchor=\"middle\" x=\"1092.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for p in [0..512) stride=128</text>\n",
1722
+ "</g>\n",
1723
+ "<!-- Reservation_139989530972544&#45;&gt;Temporal_139989530972864 -->\n",
1724
+ "<g id=\"edge87\" class=\"edge\">\n",
1725
+ "<title>Reservation_139989530972544-&gt;Temporal_139989530972864</title>\n",
1726
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-707.62C1092.5,-706.33 1092.5,-705.01 1092.5,-703.68\"/>\n",
1727
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-703.51 1092.5,-693.51 1089,-703.52 1096,-703.51\"/>\n",
1728
+ "</g>\n",
1729
+ "<!-- Storage_139989530973264 -->\n",
1730
+ "<g id=\"node84\" class=\"node\">\n",
1731
+ "<title>Storage_139989530973264</title>\n",
1732
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1166.5,-639.43C1166.5,-641.29 1133.33,-642.81 1092.5,-642.81 1051.67,-642.81 1018.5,-641.29 1018.5,-639.43 1018.5,-639.43 1018.5,-608.95 1018.5,-608.95 1018.5,-607.08 1051.67,-605.56 1092.5,-605.56 1133.33,-605.56 1166.5,-607.08 1166.5,-608.95 1166.5,-608.95 1166.5,-639.43 1166.5,-639.43\"/>\n",
1733
+ "<path fill=\"none\" stroke=\"black\" d=\"M1166.5,-639.43C1166.5,-637.56 1133.33,-636.04 1092.5,-636.04 1051.67,-636.04 1018.5,-637.56 1018.5,-639.43\"/>\n",
1734
+ "<text text-anchor=\"start\" x=\"1020.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1735
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1137,-612.69 1137,-634.69 1164,-634.69 1164,-612.69 1137,-612.69\"/>\n",
1736
+ "<text text-anchor=\"start\" x=\"1141.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
1737
+ "</g>\n",
1738
+ "<!-- Temporal_139989530972864&#45;&gt;Storage_139989530973264 -->\n",
1739
+ "<g id=\"edge88\" class=\"edge\">\n",
1740
+ "<title>Temporal_139989530972864-&gt;Storage_139989530973264</title>\n",
1741
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-657.13C1092.5,-655.82 1092.5,-654.49 1092.5,-653.13\"/>\n",
1742
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-652.78 1092.5,-642.78 1089,-652.78 1096,-652.78\"/>\n",
1743
+ "</g>\n",
1744
+ "<!-- Reservation_139989530975104 -->\n",
1745
+ "<g id=\"node85\" class=\"node\">\n",
1746
+ "<title>Reservation_139989530975104</title>\n",
1747
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1183.5,-591.62 1001.5,-591.62 1001.5,-587.62 997.5,-587.62 997.5,-583.62 1001.5,-583.62 1001.5,-563.62 997.5,-563.62 997.5,-559.62 1001.5,-559.62 1001.5,-555.62 1183.5,-555.62 1183.5,-591.62\"/>\n",
1748
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1001.5,-587.62 1005.5,-587.62 1005.5,-583.62 1001.5,-583.62 \"/>\n",
1749
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1001.5,-563.62 1005.5,-563.62 1005.5,-559.62 1001.5,-559.62 \"/>\n",
1750
+ "<text text-anchor=\"start\" x=\"1003.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1751
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1154,-562.12 1154,-584.12 1181,-584.12 1181,-562.12 1154,-562.12\"/>\n",
1752
+ "<text text-anchor=\"start\" x=\"1158.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
1753
+ "</g>\n",
1754
+ "<!-- Storage_139989530973264&#45;&gt;Reservation_139989530975104 -->\n",
1755
+ "<g id=\"edge89\" class=\"edge\">\n",
1756
+ "<title>Storage_139989530973264-&gt;Reservation_139989530975104</title>\n",
1757
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-605.38C1092.5,-604.27 1092.5,-603.14 1092.5,-602\"/>\n",
1758
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-601.78 1092.5,-591.78 1089,-601.78 1096,-601.78\"/>\n",
1759
+ "</g>\n",
1760
+ "<!-- Spatial_139989530975264 -->\n",
1761
+ "<g id=\"node86\" class=\"node\">\n",
1762
+ "<title>Spatial_139989530975264</title>\n",
1763
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1177.5,-541.06 1007.5,-541.06 1007.5,-505.06 1177.5,-505.06 1177.5,-541.06\"/>\n",
1764
+ "<text text-anchor=\"middle\" x=\"1092.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">S-Y for e in [0..128) stride=1</text>\n",
1765
+ "</g>\n",
1766
+ "<!-- Reservation_139989530975104&#45;&gt;Spatial_139989530975264 -->\n",
1767
+ "<g id=\"edge90\" class=\"edge\">\n",
1768
+ "<title>Reservation_139989530975104-&gt;Spatial_139989530975264</title>\n",
1769
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-555.37C1092.5,-554.08 1092.5,-552.76 1092.5,-551.43\"/>\n",
1770
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-551.26 1092.5,-541.26 1089,-551.27 1096,-551.26\"/>\n",
1771
+ "</g>\n",
1772
+ "<!-- Spatial_139989530975344 -->\n",
1773
+ "<g id=\"node87\" class=\"node\">\n",
1774
+ "<title>Spatial_139989530975344</title>\n",
1775
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1178.5,-489.94 1006.5,-489.94 1006.5,-453.94 1178.5,-453.94 1178.5,-489.94\"/>\n",
1776
+ "<text text-anchor=\"middle\" x=\"1092.5\" y=\"-468.84\" font-family=\"Arial\" font-size=\"12.00\">S-X for p in [0..128) stride=1</text>\n",
1777
+ "</g>\n",
1778
+ "<!-- Spatial_139989530975264&#45;&gt;Spatial_139989530975344 -->\n",
1779
+ "<g id=\"edge91\" class=\"edge\">\n",
1780
+ "<title>Spatial_139989530975264-&gt;Spatial_139989530975344</title>\n",
1781
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-504.88C1092.5,-503.39 1092.5,-501.87 1092.5,-500.32\"/>\n",
1782
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-500.19 1092.5,-490.19 1089,-500.19 1096,-500.19\"/>\n",
1783
+ "</g>\n",
1784
+ "<!-- Storage_139989530975664 -->\n",
1785
+ "<g id=\"node88\" class=\"node\">\n",
1786
+ "<title>Storage_139989530975664</title>\n",
1787
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1151.5,-436.05C1151.5,-437.92 1125.06,-439.44 1092.5,-439.44 1059.94,-439.44 1033.5,-437.92 1033.5,-436.05 1033.5,-436.05 1033.5,-405.57 1033.5,-405.57 1033.5,-403.71 1059.94,-402.19 1092.5,-402.19 1125.06,-402.19 1151.5,-403.71 1151.5,-405.57 1151.5,-405.57 1151.5,-436.05 1151.5,-436.05\"/>\n",
1788
+ "<path fill=\"none\" stroke=\"black\" d=\"M1151.5,-436.05C1151.5,-434.18 1125.06,-432.66 1092.5,-432.66 1059.94,-432.66 1033.5,-434.18 1033.5,-436.05\"/>\n",
1789
+ "<text text-anchor=\"start\" x=\"1035.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
1790
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"1132,-409.31 1132,-431.31 1149,-431.31 1149,-409.31 1132,-409.31\"/>\n",
1791
+ "<text text-anchor=\"start\" x=\"1136.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1792
+ "</g>\n",
1793
+ "<!-- Spatial_139989530975344&#45;&gt;Storage_139989530975664 -->\n",
1794
+ "<g id=\"edge92\" class=\"edge\">\n",
1795
+ "<title>Spatial_139989530975344-&gt;Storage_139989530975664</title>\n",
1796
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-453.76C1092.5,-452.45 1092.5,-451.11 1092.5,-449.76\"/>\n",
1797
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-449.4 1092.5,-439.4 1089,-449.4 1096,-449.4\"/>\n",
1798
+ "</g>\n",
1799
+ "<!-- Reservation_139989531455440 -->\n",
1800
+ "<g id=\"node89\" class=\"node\">\n",
1801
+ "<title>Reservation_139989531455440</title>\n",
1802
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1169,-388.25 1016,-388.25 1016,-384.25 1012,-384.25 1012,-380.25 1016,-380.25 1016,-360.25 1012,-360.25 1012,-356.25 1016,-356.25 1016,-352.25 1169,-352.25 1169,-388.25\"/>\n",
1803
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1016,-384.25 1020,-384.25 1020,-380.25 1016,-380.25 \"/>\n",
1804
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1016,-360.25 1020,-360.25 1020,-356.25 1016,-356.25 \"/>\n",
1805
+ "<text text-anchor=\"start\" x=\"1018.5\" y=\"-366.65\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
1806
+ "<polygon fill=\"none\" stroke=\"#00ffff\" stroke-width=\"5\" points=\"1150,-358.75 1150,-380.75 1167,-380.75 1167,-358.75 1150,-358.75\"/>\n",
1807
+ "<text text-anchor=\"start\" x=\"1154.5\" y=\"-366.65\" font-family=\"Arial\" font-size=\"12.00\">K</text>\n",
1808
+ "</g>\n",
1809
+ "<!-- Storage_139989530975664&#45;&gt;Reservation_139989531455440 -->\n",
1810
+ "<g id=\"edge93\" class=\"edge\">\n",
1811
+ "<title>Storage_139989530975664-&gt;Reservation_139989531455440</title>\n",
1812
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-402.01C1092.5,-400.9 1092.5,-399.77 1092.5,-398.63\"/>\n",
1813
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-398.41 1092.5,-388.41 1089,-398.41 1096,-398.41\"/>\n",
1814
+ "</g>\n",
1815
+ "<!-- Temporal_139989531456400 -->\n",
1816
+ "<g id=\"node90\" class=\"node\">\n",
1817
+ "<title>Temporal_139989531456400</title>\n",
1818
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1176.5,-338.25 1008.5,-338.25 1008.5,-302.25 1176.5,-302.25 1176.5,-338.25\"/>\n",
1819
+ "<text text-anchor=\"middle\" x=\"1092.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..16384) stride=1</text>\n",
1820
+ "</g>\n",
1821
+ "<!-- Reservation_139989531455440&#45;&gt;Temporal_139989531456400 -->\n",
1822
+ "<g id=\"edge94\" class=\"edge\">\n",
1823
+ "<title>Reservation_139989531455440-&gt;Temporal_139989531456400</title>\n",
1824
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-352.19C1092.5,-350.92 1092.5,-349.62 1092.5,-348.3\"/>\n",
1825
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-348.25 1092.5,-338.25 1089,-348.25 1096,-348.25\"/>\n",
1826
+ "</g>\n",
1827
+ "<!-- Compute_139989531456640 -->\n",
1828
+ "<g id=\"node91\" class=\"node\">\n",
1829
+ "<title>Compute_139989531456640</title>\n",
1830
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"1092.5\" cy=\"-270.25\" rx=\"60.1\" ry=\"18\"/>\n",
1831
+ "<text text-anchor=\"middle\" x=\"1092.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">MAC computes QK</text>\n",
1832
+ "</g>\n",
1833
+ "<!-- Temporal_139989531456400&#45;&gt;Compute_139989531456640 -->\n",
1834
+ "<g id=\"edge95\" class=\"edge\">\n",
1835
+ "<title>Temporal_139989531456400-&gt;Compute_139989531456640</title>\n",
1836
+ "<path fill=\"none\" stroke=\"black\" d=\"M1092.5,-302.19C1092.5,-300.92 1092.5,-299.62 1092.5,-298.3\"/>\n",
1837
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1096,-298.25 1092.5,-288.25 1089,-298.25 1096,-298.25\"/>\n",
1838
+ "</g>\n",
1839
+ "<!-- Temporal_139989529908704 -->\n",
1840
+ "<g id=\"node93\" class=\"node\">\n",
1841
+ "<title>Temporal_139989529908704</title>\n",
1842
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1356,-1047.81 1215,-1047.81 1215,-1011.81 1356,-1011.81 1356,-1047.81\"/>\n",
1843
+ "<text text-anchor=\"middle\" x=\"1285.5\" y=\"-1026.71\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
1844
+ "</g>\n",
1845
+ "<!-- Reservation_139989530543200&#45;&gt;Temporal_139989529908704 -->\n",
1846
+ "<g id=\"edge96\" class=\"edge\">\n",
1847
+ "<title>Reservation_139989530543200-&gt;Temporal_139989529908704</title>\n",
1848
+ "<path fill=\"none\" stroke=\"black\" d=\"M1284.2,-1062.76C1284.26,-1061.27 1284.32,-1059.74 1284.38,-1058.2\"/>\n",
1849
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1287.89,-1058.2 1284.8,-1048.07 1280.89,-1057.92 1287.89,-1058.2\"/>\n",
1850
+ "</g>\n",
1851
+ "<!-- Temporal_139989529908864 -->\n",
1852
+ "<g id=\"node94\" class=\"node\">\n",
1853
+ "<title>Temporal_139989529908864</title>\n",
1854
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1371,-997.25 1230,-997.25 1230,-961.25 1371,-961.25 1371,-997.25\"/>\n",
1855
+ "<text text-anchor=\"middle\" x=\"1300.5\" y=\"-976.15\" font-family=\"Arial\" font-size=\"12.00\">for h in [0..32) stride=1</text>\n",
1856
+ "</g>\n",
1857
+ "<!-- Temporal_139989529908704&#45;&gt;Temporal_139989529908864 -->\n",
1858
+ "<g id=\"edge97\" class=\"edge\">\n",
1859
+ "<title>Temporal_139989529908704-&gt;Temporal_139989529908864</title>\n",
1860
+ "<path fill=\"none\" stroke=\"black\" d=\"M1290.83,-1011.55C1291.27,-1010.12 1291.73,-1008.66 1292.18,-1007.18\"/>\n",
1861
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1295.58,-1008.04 1295.19,-997.45 1288.89,-1005.97 1295.58,-1008.04\"/>\n",
1862
+ "</g>\n",
1863
+ "<!-- Temporal_139989529909104 -->\n",
1864
+ "<g id=\"node95\" class=\"node\">\n",
1865
+ "<title>Temporal_139989529909104</title>\n",
1866
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1387.5,-946.69 1219.5,-946.69 1219.5,-910.69 1387.5,-910.69 1387.5,-946.69\"/>\n",
1867
+ "<text text-anchor=\"middle\" x=\"1303.5\" y=\"-925.59\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..65536) stride=1</text>\n",
1868
+ "</g>\n",
1869
+ "<!-- Temporal_139989529908864&#45;&gt;Temporal_139989529909104 -->\n",
1870
+ "<g id=\"edge98\" class=\"edge\">\n",
1871
+ "<title>Temporal_139989529908864-&gt;Temporal_139989529909104</title>\n",
1872
+ "<path fill=\"none\" stroke=\"black\" d=\"M1301.57,-960.99C1301.65,-959.7 1301.73,-958.39 1301.81,-957.06\"/>\n",
1873
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1305.31,-957.09 1302.44,-946.89 1298.33,-956.66 1305.31,-957.09\"/>\n",
1874
+ "</g>\n",
1875
+ "<!-- Temporal_139989529909264 -->\n",
1876
+ "<g id=\"node96\" class=\"node\">\n",
1877
+ "<title>Temporal_139989529909264</title>\n",
1878
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1387,-896.12 1224,-896.12 1224,-860.12 1387,-860.12 1387,-896.12\"/>\n",
1879
+ "<text text-anchor=\"middle\" x=\"1305.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for p in [0..65536) stride=1</text>\n",
1880
+ "</g>\n",
1881
+ "<!-- Temporal_139989529909104&#45;&gt;Temporal_139989529909264 -->\n",
1882
+ "<g id=\"edge99\" class=\"edge\">\n",
1883
+ "<title>Temporal_139989529909104-&gt;Temporal_139989529909264</title>\n",
1884
+ "<path fill=\"none\" stroke=\"black\" d=\"M1304.21,-910.43C1304.26,-909.14 1304.32,-907.82 1304.37,-906.49\"/>\n",
1885
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1307.88,-906.46 1304.79,-896.33 1300.88,-906.17 1307.88,-906.46\"/>\n",
1886
+ "</g>\n",
1887
+ "<!-- Storage_139989529909424 -->\n",
1888
+ "<g id=\"node97\" class=\"node\">\n",
1889
+ "<title>Storage_139989529909424</title>\n",
1890
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1430.5,-842.8C1430.5,-844.67 1378.06,-846.19 1313.5,-846.19 1248.94,-846.19 1196.5,-844.67 1196.5,-842.8 1196.5,-842.8 1196.5,-812.32 1196.5,-812.32 1196.5,-810.46 1248.94,-808.94 1313.5,-808.94 1378.06,-808.94 1430.5,-810.46 1430.5,-812.32 1430.5,-812.32 1430.5,-842.8 1430.5,-842.8\"/>\n",
1891
+ "<path fill=\"none\" stroke=\"black\" d=\"M1430.5,-842.8C1430.5,-840.93 1378.06,-839.41 1313.5,-839.41 1248.94,-839.41 1196.5,-840.93 1196.5,-842.8\"/>\n",
1892
+ "<text text-anchor=\"start\" x=\"1198.5\" y=\"-823.96\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
1893
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1315,-816.06 1315,-838.06 1342,-838.06 1342,-816.06 1315,-816.06\"/>\n",
1894
+ "<text text-anchor=\"start\" x=\"1319.5\" y=\"-823.96\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
1895
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1347,-816.06 1347,-838.06 1428,-838.06 1428,-816.06 1347,-816.06\"/>\n",
1896
+ "<text text-anchor=\"start\" x=\"1351.5\" y=\"-823.96\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
1897
+ "</g>\n",
1898
+ "<!-- Temporal_139989529909264&#45;&gt;Storage_139989529909424 -->\n",
1899
+ "<g id=\"edge100\" class=\"edge\">\n",
1900
+ "<title>Temporal_139989529909264-&gt;Storage_139989529909424</title>\n",
1901
+ "<path fill=\"none\" stroke=\"black\" d=\"M1308.34,-859.87C1308.52,-858.78 1308.71,-857.67 1308.89,-856.54\"/>\n",
1902
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1312.39,-856.86 1310.56,-846.42 1305.48,-855.72 1312.39,-856.86\"/>\n",
1903
+ "</g>\n",
1904
+ "<!-- Reservation_139989529909824 -->\n",
1905
+ "<g id=\"node98\" class=\"node\">\n",
1906
+ "<title>Reservation_139989529909824</title>\n",
1907
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1448.5,-794.44 1180.5,-794.44 1180.5,-790.44 1176.5,-790.44 1176.5,-786.44 1180.5,-786.44 1180.5,-766.44 1176.5,-766.44 1176.5,-762.44 1180.5,-762.44 1180.5,-758.44 1448.5,-758.44 1448.5,-794.44\"/>\n",
1908
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1180.5,-790.44 1184.5,-790.44 1184.5,-786.44 1180.5,-786.44 \"/>\n",
1909
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1180.5,-766.44 1184.5,-766.44 1184.5,-762.44 1180.5,-762.44 \"/>\n",
1910
+ "<text text-anchor=\"start\" x=\"1182.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
1911
+ "<polygon fill=\"none\" stroke=\"#8000ff\" stroke-width=\"5\" points=\"1333,-764.94 1333,-786.94 1360,-786.94 1360,-764.94 1333,-764.94\"/>\n",
1912
+ "<text text-anchor=\"start\" x=\"1337.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">QK</text>\n",
1913
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1365,-764.94 1365,-786.94 1446,-786.94 1446,-764.94 1365,-764.94\"/>\n",
1914
+ "<text text-anchor=\"start\" x=\"1369.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
1915
+ "</g>\n",
1916
+ "<!-- Storage_139989529909424&#45;&gt;Reservation_139989529909824 -->\n",
1917
+ "<g id=\"edge101\" class=\"edge\">\n",
1918
+ "<title>Storage_139989529909424-&gt;Reservation_139989529909824</title>\n",
1919
+ "<path fill=\"none\" stroke=\"black\" d=\"M1313.86,-808.83C1313.89,-807.53 1313.91,-806.2 1313.94,-804.86\"/>\n",
1920
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1317.45,-804.72 1314.15,-794.65 1310.45,-804.58 1317.45,-804.72\"/>\n",
1921
+ "</g>\n",
1922
+ "<!-- Compute_139989529911984 -->\n",
1923
+ "<g id=\"node99\" class=\"node\">\n",
1924
+ "<title>Compute_139989529911984</title>\n",
1925
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"1314.5\" cy=\"-725.88\" rx=\"108.69\" ry=\"18\"/>\n",
1926
+ "<text text-anchor=\"middle\" x=\"1314.5\" y=\"-722.77\" font-family=\"Arial\" font-size=\"12.00\">scalar_unit computes QK_softmax</text>\n",
1927
+ "</g>\n",
1928
+ "<!-- Reservation_139989529909824&#45;&gt;Compute_139989529911984 -->\n",
1929
+ "<g id=\"edge102\" class=\"edge\">\n",
1930
+ "<title>Reservation_139989529909824-&gt;Compute_139989529911984</title>\n",
1931
+ "<path fill=\"none\" stroke=\"black\" d=\"M1314.5,-758.18C1314.5,-756.89 1314.5,-755.57 1314.5,-754.24\"/>\n",
1932
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1318,-754.08 1314.5,-744.08 1311,-754.08 1318,-754.08\"/>\n",
1933
+ "</g>\n",
1934
+ "<!-- Temporal_139989530543440 -->\n",
1935
+ "<g id=\"node101\" class=\"node\">\n",
1936
+ "<title>Temporal_139989530543440</title>\n",
1937
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1638,-1047.81 1497,-1047.81 1497,-1011.81 1638,-1011.81 1638,-1047.81\"/>\n",
1938
+ "<text text-anchor=\"middle\" x=\"1567.5\" y=\"-1026.71\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
1939
+ "</g>\n",
1940
+ "<!-- Reservation_139989529912704&#45;&gt;Temporal_139989530543440 -->\n",
1941
+ "<g id=\"edge103\" class=\"edge\">\n",
1942
+ "<title>Reservation_139989529912704-&gt;Temporal_139989530543440</title>\n",
1943
+ "<path fill=\"none\" stroke=\"black\" d=\"M1589.61,-1062.76C1588.17,-1060.67 1586.67,-1058.51 1585.17,-1056.34\"/>\n",
1944
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1588.01,-1054.3 1579.44,-1048.07 1582.26,-1058.28 1588.01,-1054.3\"/>\n",
1945
+ "</g>\n",
1946
+ "<!-- Temporal_139989530543600 -->\n",
1947
+ "<g id=\"node102\" class=\"node\">\n",
1948
+ "<title>Temporal_139989530543600</title>\n",
1949
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1615,-997.25 1474,-997.25 1474,-961.25 1615,-961.25 1615,-997.25\"/>\n",
1950
+ "<text text-anchor=\"middle\" x=\"1544.5\" y=\"-976.15\" font-family=\"Arial\" font-size=\"12.00\">for h in [0..32) stride=1</text>\n",
1951
+ "</g>\n",
1952
+ "<!-- Temporal_139989530543440&#45;&gt;Temporal_139989530543600 -->\n",
1953
+ "<g id=\"edge104\" class=\"edge\">\n",
1954
+ "<title>Temporal_139989530543440-&gt;Temporal_139989530543600</title>\n",
1955
+ "<path fill=\"none\" stroke=\"black\" d=\"M1559.33,-1011.55C1558.58,-1009.98 1557.81,-1008.36 1557.04,-1006.73\"/>\n",
1956
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1560.09,-1004.99 1552.65,-997.45 1553.76,-1007.99 1560.09,-1004.99\"/>\n",
1957
+ "</g>\n",
1958
+ "<!-- Storage_139989530543840 -->\n",
1959
+ "<g id=\"node103\" class=\"node\">\n",
1960
+ "<title>Storage_139989530543840</title>\n",
1961
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1614,-943.93C1614,-945.79 1581.5,-947.31 1541.5,-947.31 1501.5,-947.31 1469,-945.79 1469,-943.93 1469,-943.93 1469,-913.45 1469,-913.45 1469,-911.58 1501.5,-910.06 1541.5,-910.06 1581.5,-910.06 1614,-911.58 1614,-913.45 1614,-913.45 1614,-943.93 1614,-943.93\"/>\n",
1962
+ "<path fill=\"none\" stroke=\"black\" d=\"M1614,-943.93C1614,-942.06 1581.5,-940.54 1541.5,-940.54 1501.5,-940.54 1469,-942.06 1469,-943.93\"/>\n",
1963
+ "<text text-anchor=\"start\" x=\"1471.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
1964
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1594,-917.19 1594,-939.19 1612,-939.19 1612,-917.19 1594,-917.19\"/>\n",
1965
+ "<text text-anchor=\"start\" x=\"1598.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
1966
+ "</g>\n",
1967
+ "<!-- Temporal_139989530543600&#45;&gt;Storage_139989530543840 -->\n",
1968
+ "<g id=\"edge105\" class=\"edge\">\n",
1969
+ "<title>Temporal_139989530543600-&gt;Storage_139989530543840</title>\n",
1970
+ "<path fill=\"none\" stroke=\"black\" d=\"M1543.43,-960.99C1543.37,-959.9 1543.3,-958.79 1543.23,-957.67\"/>\n",
1971
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1546.71,-957.31 1542.6,-947.55 1539.73,-957.74 1546.71,-957.31\"/>\n",
1972
+ "</g>\n",
1973
+ "<!-- Reservation_139989530544000 -->\n",
1974
+ "<g id=\"node104\" class=\"node\">\n",
1975
+ "<title>Reservation_139989530544000</title>\n",
1976
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1631,-896.12 1452,-896.12 1452,-892.12 1448,-892.12 1448,-888.12 1452,-888.12 1452,-868.12 1448,-868.12 1448,-864.12 1452,-864.12 1452,-860.12 1631,-860.12 1631,-896.12\"/>\n",
1977
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1452,-892.12 1456,-892.12 1456,-888.12 1452,-888.12 \"/>\n",
1978
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1452,-868.12 1456,-868.12 1456,-864.12 1452,-864.12 \"/>\n",
1979
+ "<text text-anchor=\"start\" x=\"1454.5\" y=\"-874.52\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
1980
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1611,-866.62 1611,-888.62 1629,-888.62 1629,-866.62 1611,-866.62\"/>\n",
1981
+ "<text text-anchor=\"start\" x=\"1615.5\" y=\"-874.52\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
1982
+ "</g>\n",
1983
+ "<!-- Storage_139989530543840&#45;&gt;Reservation_139989530544000 -->\n",
1984
+ "<g id=\"edge106\" class=\"edge\">\n",
1985
+ "<title>Storage_139989530543840-&gt;Reservation_139989530544000</title>\n",
1986
+ "<path fill=\"none\" stroke=\"black\" d=\"M1541.5,-909.88C1541.5,-908.77 1541.5,-907.64 1541.5,-906.5\"/>\n",
1987
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1545,-906.28 1541.5,-896.28 1538,-906.28 1545,-906.28\"/>\n",
1988
+ "</g>\n",
1989
+ "<!-- Temporal_139989530544240 -->\n",
1990
+ "<g id=\"node105\" class=\"node\">\n",
1991
+ "<title>Temporal_139989530544240</title>\n",
1992
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1625.5,-845.56 1457.5,-845.56 1457.5,-809.56 1625.5,-809.56 1625.5,-845.56\"/>\n",
1993
+ "<text text-anchor=\"middle\" x=\"1541.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..4) stride=16384</text>\n",
1994
+ "</g>\n",
1995
+ "<!-- Reservation_139989530544000&#45;&gt;Temporal_139989530544240 -->\n",
1996
+ "<g id=\"edge107\" class=\"edge\">\n",
1997
+ "<title>Reservation_139989530544000-&gt;Temporal_139989530544240</title>\n",
1998
+ "<path fill=\"none\" stroke=\"black\" d=\"M1541.5,-859.87C1541.5,-858.58 1541.5,-857.26 1541.5,-855.93\"/>\n",
1999
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1545,-855.76 1541.5,-845.76 1538,-855.77 1545,-855.76\"/>\n",
2000
+ "</g>\n",
2001
+ "<!-- Storage_139989530546160 -->\n",
2002
+ "<g id=\"node106\" class=\"node\">\n",
2003
+ "<title>Storage_139989530546160</title>\n",
2004
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1613.5,-791.68C1613.5,-793.54 1580.78,-795.06 1540.5,-795.06 1500.22,-795.06 1467.5,-793.54 1467.5,-791.68 1467.5,-791.68 1467.5,-761.2 1467.5,-761.2 1467.5,-759.33 1500.22,-757.81 1540.5,-757.81 1580.78,-757.81 1613.5,-759.33 1613.5,-761.2 1613.5,-761.2 1613.5,-791.68 1613.5,-791.68\"/>\n",
2005
+ "<path fill=\"none\" stroke=\"black\" d=\"M1613.5,-791.68C1613.5,-789.81 1580.78,-788.29 1540.5,-788.29 1500.22,-788.29 1467.5,-789.81 1467.5,-791.68\"/>\n",
2006
+ "<text text-anchor=\"start\" x=\"1469.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2007
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1586,-764.94 1586,-786.94 1611,-786.94 1611,-764.94 1586,-764.94\"/>\n",
2008
+ "<text text-anchor=\"start\" x=\"1590.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2009
+ "</g>\n",
2010
+ "<!-- Temporal_139989530544240&#45;&gt;Storage_139989530546160 -->\n",
2011
+ "<g id=\"edge108\" class=\"edge\">\n",
2012
+ "<title>Temporal_139989530544240-&gt;Storage_139989530546160</title>\n",
2013
+ "<path fill=\"none\" stroke=\"black\" d=\"M1541.15,-809.38C1541.12,-808.07 1541.1,-806.74 1541.07,-805.38\"/>\n",
2014
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1544.56,-804.95 1540.86,-795.03 1537.56,-805.09 1544.56,-804.95\"/>\n",
2015
+ "</g>\n",
2016
+ "<!-- Reservation_139989530546400 -->\n",
2017
+ "<g id=\"node107\" class=\"node\">\n",
2018
+ "<title>Reservation_139989530546400</title>\n",
2019
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1629.5,-743.88 1449.5,-743.88 1449.5,-739.88 1445.5,-739.88 1445.5,-735.88 1449.5,-735.88 1449.5,-715.88 1445.5,-715.88 1445.5,-711.88 1449.5,-711.88 1449.5,-707.88 1629.5,-707.88 1629.5,-743.88\"/>\n",
2020
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1449.5,-739.88 1453.5,-739.88 1453.5,-735.88 1449.5,-735.88 \"/>\n",
2021
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1449.5,-715.88 1453.5,-715.88 1453.5,-711.88 1449.5,-711.88 \"/>\n",
2022
+ "<text text-anchor=\"start\" x=\"1451.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2023
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1602,-714.38 1602,-736.38 1627,-736.38 1627,-714.38 1602,-714.38\"/>\n",
2024
+ "<text text-anchor=\"start\" x=\"1606.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2025
+ "</g>\n",
2026
+ "<!-- Storage_139989530546160&#45;&gt;Reservation_139989530546400 -->\n",
2027
+ "<g id=\"edge109\" class=\"edge\">\n",
2028
+ "<title>Storage_139989530546160-&gt;Reservation_139989530546400</title>\n",
2029
+ "<path fill=\"none\" stroke=\"black\" d=\"M1540.13,-757.63C1540.11,-756.52 1540.09,-755.39 1540.06,-754.25\"/>\n",
2030
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1543.56,-753.96 1539.85,-744.03 1536.56,-754.1 1543.56,-753.96\"/>\n",
2031
+ "</g>\n",
2032
+ "<!-- Temporal_139989530546720 -->\n",
2033
+ "<g id=\"node108\" class=\"node\">\n",
2034
+ "<title>Temporal_139989530546720</title>\n",
2035
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1620,-693.31 1457,-693.31 1457,-657.31 1620,-657.31 1620,-693.31\"/>\n",
2036
+ "<text text-anchor=\"middle\" x=\"1538.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for p in [0..512) stride=128</text>\n",
2037
+ "</g>\n",
2038
+ "<!-- Reservation_139989530546400&#45;&gt;Temporal_139989530546720 -->\n",
2039
+ "<g id=\"edge110\" class=\"edge\">\n",
2040
+ "<title>Reservation_139989530546400-&gt;Temporal_139989530546720</title>\n",
2041
+ "<path fill=\"none\" stroke=\"black\" d=\"M1539.14,-707.62C1539.12,-706.33 1539.09,-705.01 1539.06,-703.68\"/>\n",
2042
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1542.56,-703.44 1538.85,-693.51 1535.56,-703.58 1542.56,-703.44\"/>\n",
2043
+ "</g>\n",
2044
+ "<!-- Storage_139989530547120 -->\n",
2045
+ "<g id=\"node109\" class=\"node\">\n",
2046
+ "<title>Storage_139989530547120</title>\n",
2047
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1638.5,-639.43C1638.5,-641.29 1593.23,-642.81 1537.5,-642.81 1481.77,-642.81 1436.5,-641.29 1436.5,-639.43 1436.5,-639.43 1436.5,-608.95 1436.5,-608.95 1436.5,-607.08 1481.77,-605.56 1537.5,-605.56 1593.23,-605.56 1638.5,-607.08 1638.5,-608.95 1638.5,-608.95 1638.5,-639.43 1638.5,-639.43\"/>\n",
2048
+ "<path fill=\"none\" stroke=\"black\" d=\"M1638.5,-639.43C1638.5,-637.56 1593.23,-636.04 1537.5,-636.04 1481.77,-636.04 1436.5,-637.56 1436.5,-639.43\"/>\n",
2049
+ "<text text-anchor=\"start\" x=\"1438.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2050
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1555,-612.69 1555,-634.69 1636,-634.69 1636,-612.69 1555,-612.69\"/>\n",
2051
+ "<text text-anchor=\"start\" x=\"1559.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
2052
+ "</g>\n",
2053
+ "<!-- Temporal_139989530546720&#45;&gt;Storage_139989530547120 -->\n",
2054
+ "<g id=\"edge111\" class=\"edge\">\n",
2055
+ "<title>Temporal_139989530546720-&gt;Storage_139989530547120</title>\n",
2056
+ "<path fill=\"none\" stroke=\"black\" d=\"M1538.15,-657.13C1538.12,-655.82 1538.1,-654.49 1538.07,-653.13\"/>\n",
2057
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541.56,-652.7 1537.86,-642.78 1534.56,-652.84 1541.56,-652.7\"/>\n",
2058
+ "</g>\n",
2059
+ "<!-- Reservation_139989530548960 -->\n",
2060
+ "<g id=\"node110\" class=\"node\">\n",
2061
+ "<title>Reservation_139989530548960</title>\n",
2062
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1655.5,-591.62 1419.5,-591.62 1419.5,-587.62 1415.5,-587.62 1415.5,-583.62 1419.5,-583.62 1419.5,-563.62 1415.5,-563.62 1415.5,-559.62 1419.5,-559.62 1419.5,-555.62 1655.5,-555.62 1655.5,-591.62\"/>\n",
2063
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1419.5,-587.62 1423.5,-587.62 1423.5,-583.62 1419.5,-583.62 \"/>\n",
2064
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1419.5,-563.62 1423.5,-563.62 1423.5,-559.62 1419.5,-559.62 \"/>\n",
2065
+ "<text text-anchor=\"start\" x=\"1421.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2066
+ "<polygon fill=\"none\" stroke=\"#008000\" stroke-width=\"5\" points=\"1572,-562.12 1572,-584.12 1653,-584.12 1653,-562.12 1572,-562.12\"/>\n",
2067
+ "<text text-anchor=\"start\" x=\"1576.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">QK_softmax</text>\n",
2068
+ "</g>\n",
2069
+ "<!-- Storage_139989530547120&#45;&gt;Reservation_139989530548960 -->\n",
2070
+ "<g id=\"edge112\" class=\"edge\">\n",
2071
+ "<title>Storage_139989530547120-&gt;Reservation_139989530548960</title>\n",
2072
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-605.38C1537.5,-604.27 1537.5,-603.14 1537.5,-602\"/>\n",
2073
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-601.78 1537.5,-591.78 1534,-601.78 1541,-601.78\"/>\n",
2074
+ "</g>\n",
2075
+ "<!-- Spatial_139989530549120 -->\n",
2076
+ "<g id=\"node111\" class=\"node\">\n",
2077
+ "<title>Spatial_139989530549120</title>\n",
2078
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1622.5,-541.06 1452.5,-541.06 1452.5,-505.06 1622.5,-505.06 1622.5,-541.06\"/>\n",
2079
+ "<text text-anchor=\"middle\" x=\"1537.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">S-Y for p in [0..128) stride=1</text>\n",
2080
+ "</g>\n",
2081
+ "<!-- Reservation_139989530548960&#45;&gt;Spatial_139989530549120 -->\n",
2082
+ "<g id=\"edge113\" class=\"edge\">\n",
2083
+ "<title>Reservation_139989530548960-&gt;Spatial_139989530549120</title>\n",
2084
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-555.37C1537.5,-554.08 1537.5,-552.76 1537.5,-551.43\"/>\n",
2085
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-551.26 1537.5,-541.26 1534,-551.27 1541,-551.26\"/>\n",
2086
+ "</g>\n",
2087
+ "<!-- Spatial_139989530549200 -->\n",
2088
+ "<g id=\"node112\" class=\"node\">\n",
2089
+ "<title>Spatial_139989530549200</title>\n",
2090
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1622,-489.94 1453,-489.94 1453,-453.94 1622,-453.94 1622,-489.94\"/>\n",
2091
+ "<text text-anchor=\"middle\" x=\"1537.5\" y=\"-468.84\" font-family=\"Arial\" font-size=\"12.00\">S-X for f in [0..128) stride=1</text>\n",
2092
+ "</g>\n",
2093
+ "<!-- Spatial_139989530549120&#45;&gt;Spatial_139989530549200 -->\n",
2094
+ "<g id=\"edge114\" class=\"edge\">\n",
2095
+ "<title>Spatial_139989530549120-&gt;Spatial_139989530549200</title>\n",
2096
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-504.88C1537.5,-503.39 1537.5,-501.87 1537.5,-500.32\"/>\n",
2097
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-500.19 1537.5,-490.19 1534,-500.19 1541,-500.19\"/>\n",
2098
+ "</g>\n",
2099
+ "<!-- Storage_139989530549520 -->\n",
2100
+ "<g id=\"node113\" class=\"node\">\n",
2101
+ "<title>Storage_139989530549520</title>\n",
2102
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1597,-436.05C1597,-437.92 1570.33,-439.44 1537.5,-439.44 1504.67,-439.44 1478,-437.92 1478,-436.05 1478,-436.05 1478,-405.57 1478,-405.57 1478,-403.71 1504.67,-402.19 1537.5,-402.19 1570.33,-402.19 1597,-403.71 1597,-405.57 1597,-405.57 1597,-436.05 1597,-436.05\"/>\n",
2103
+ "<path fill=\"none\" stroke=\"black\" d=\"M1597,-436.05C1597,-434.18 1570.33,-432.66 1537.5,-432.66 1504.67,-432.66 1478,-434.18 1478,-436.05\"/>\n",
2104
+ "<text text-anchor=\"start\" x=\"1480.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
2105
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1577,-409.31 1577,-431.31 1595,-431.31 1595,-409.31 1577,-409.31\"/>\n",
2106
+ "<text text-anchor=\"start\" x=\"1581.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
2107
+ "</g>\n",
2108
+ "<!-- Spatial_139989530549200&#45;&gt;Storage_139989530549520 -->\n",
2109
+ "<g id=\"edge115\" class=\"edge\">\n",
2110
+ "<title>Spatial_139989530549200-&gt;Storage_139989530549520</title>\n",
2111
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-453.76C1537.5,-452.45 1537.5,-451.11 1537.5,-449.76\"/>\n",
2112
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-449.4 1537.5,-439.4 1534,-449.4 1541,-449.4\"/>\n",
2113
+ "</g>\n",
2114
+ "<!-- Reservation_139989528932144 -->\n",
2115
+ "<g id=\"node114\" class=\"node\">\n",
2116
+ "<title>Reservation_139989528932144</title>\n",
2117
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1614.5,-388.25 1460.5,-388.25 1460.5,-384.25 1456.5,-384.25 1456.5,-380.25 1460.5,-380.25 1460.5,-360.25 1456.5,-360.25 1456.5,-356.25 1460.5,-356.25 1460.5,-352.25 1614.5,-352.25 1614.5,-388.25\"/>\n",
2118
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1460.5,-384.25 1464.5,-384.25 1464.5,-380.25 1460.5,-380.25 \"/>\n",
2119
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1460.5,-360.25 1464.5,-360.25 1464.5,-356.25 1460.5,-356.25 \"/>\n",
2120
+ "<text text-anchor=\"start\" x=\"1462.5\" y=\"-366.65\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
2121
+ "<polygon fill=\"none\" stroke=\"#800000\" stroke-width=\"5\" points=\"1594,-358.75 1594,-380.75 1612,-380.75 1612,-358.75 1594,-358.75\"/>\n",
2122
+ "<text text-anchor=\"start\" x=\"1598.5\" y=\"-366.65\" font-family=\"Arial\" font-size=\"12.00\">V</text>\n",
2123
+ "</g>\n",
2124
+ "<!-- Storage_139989530549520&#45;&gt;Reservation_139989528932144 -->\n",
2125
+ "<g id=\"edge116\" class=\"edge\">\n",
2126
+ "<title>Storage_139989530549520-&gt;Reservation_139989528932144</title>\n",
2127
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-402.01C1537.5,-400.9 1537.5,-399.77 1537.5,-398.63\"/>\n",
2128
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-398.41 1537.5,-388.41 1534,-398.41 1541,-398.41\"/>\n",
2129
+ "</g>\n",
2130
+ "<!-- Temporal_139989528933104 -->\n",
2131
+ "<g id=\"node115\" class=\"node\">\n",
2132
+ "<title>Temporal_139989528933104</title>\n",
2133
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1621.5,-338.25 1453.5,-338.25 1453.5,-302.25 1621.5,-302.25 1621.5,-338.25\"/>\n",
2134
+ "<text text-anchor=\"middle\" x=\"1537.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..16384) stride=1</text>\n",
2135
+ "</g>\n",
2136
+ "<!-- Reservation_139989528932144&#45;&gt;Temporal_139989528933104 -->\n",
2137
+ "<g id=\"edge117\" class=\"edge\">\n",
2138
+ "<title>Reservation_139989528932144-&gt;Temporal_139989528933104</title>\n",
2139
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-352.19C1537.5,-350.92 1537.5,-349.62 1537.5,-348.3\"/>\n",
2140
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-348.25 1537.5,-338.25 1534,-348.25 1541,-348.25\"/>\n",
2141
+ "</g>\n",
2142
+ "<!-- Compute_139989528933664 -->\n",
2143
+ "<g id=\"node116\" class=\"node\">\n",
2144
+ "<title>Compute_139989528933664</title>\n",
2145
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"1537.5\" cy=\"-270.25\" rx=\"58.96\" ry=\"18\"/>\n",
2146
+ "<text text-anchor=\"middle\" x=\"1537.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">MAC computes AV</text>\n",
2147
+ "</g>\n",
2148
+ "<!-- Temporal_139989528933104&#45;&gt;Compute_139989528933664 -->\n",
2149
+ "<g id=\"edge118\" class=\"edge\">\n",
2150
+ "<title>Temporal_139989528933104-&gt;Compute_139989528933664</title>\n",
2151
+ "<path fill=\"none\" stroke=\"black\" d=\"M1537.5,-302.19C1537.5,-300.92 1537.5,-299.62 1537.5,-298.3\"/>\n",
2152
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1541,-298.25 1537.5,-288.25 1534,-298.25 1541,-298.25\"/>\n",
2153
+ "</g>\n",
2154
+ "<!-- Storage_139989529466416 -->\n",
2155
+ "<g id=\"node118\" class=\"node\">\n",
2156
+ "<title>Storage_139989529466416</title>\n",
2157
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1882,-1045.05C1882,-1046.92 1846.82,-1048.44 1803.5,-1048.44 1760.18,-1048.44 1725,-1046.92 1725,-1045.05 1725,-1045.05 1725,-1014.57 1725,-1014.57 1725,-1012.71 1760.18,-1011.19 1803.5,-1011.19 1846.82,-1011.19 1882,-1012.71 1882,-1014.57 1882,-1014.57 1882,-1045.05 1882,-1045.05\"/>\n",
2158
+ "<path fill=\"none\" stroke=\"black\" d=\"M1882,-1045.05C1882,-1043.18 1846.82,-1041.66 1803.5,-1041.66 1760.18,-1041.66 1725,-1043.18 1725,-1045.05\"/>\n",
2159
+ "<text text-anchor=\"start\" x=\"1727.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
2160
+ "<polygon fill=\"none\" stroke=\"#ff00b4\" stroke-width=\"5\" points=\"1850,-1018.31 1850,-1040.31 1880,-1040.31 1880,-1018.31 1850,-1018.31\"/>\n",
2161
+ "<text text-anchor=\"start\" x=\"1854.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">WZ</text>\n",
2162
+ "</g>\n",
2163
+ "<!-- Storage_139989529182928&#45;&gt;Storage_139989529466416 -->\n",
2164
+ "<g id=\"edge119\" class=\"edge\">\n",
2165
+ "<title>Storage_139989529182928-&gt;Storage_139989529466416</title>\n",
2166
+ "<path fill=\"none\" stroke=\"black\" d=\"M1832.89,-1062.2C1831.09,-1060.28 1829.23,-1058.29 1827.37,-1056.3\"/>\n",
2167
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1829.63,-1053.59 1820.24,-1048.69 1824.52,-1058.38 1829.63,-1053.59\"/>\n",
2168
+ "</g>\n",
2169
+ "<!-- Reservation_139989528936144 -->\n",
2170
+ "<g id=\"node119\" class=\"node\">\n",
2171
+ "<title>Reservation_139989528936144</title>\n",
2172
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1882.5,-997.25 1634.5,-997.25 1634.5,-993.25 1630.5,-993.25 1630.5,-989.25 1634.5,-989.25 1634.5,-969.25 1630.5,-969.25 1630.5,-965.25 1634.5,-965.25 1634.5,-961.25 1882.5,-961.25 1882.5,-997.25\"/>\n",
2173
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1634.5,-993.25 1638.5,-993.25 1638.5,-989.25 1634.5,-989.25 \"/>\n",
2174
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1634.5,-969.25 1638.5,-969.25 1638.5,-965.25 1634.5,-965.25 \"/>\n",
2175
+ "<text text-anchor=\"start\" x=\"1636.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
2176
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"1797,-967.75 1797,-989.75 1815,-989.75 1815,-967.75 1797,-967.75\"/>\n",
2177
+ "<text text-anchor=\"start\" x=\"1801.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2178
+ "<polygon fill=\"none\" stroke=\"#ff00b4\" stroke-width=\"5\" points=\"1820,-967.75 1820,-989.75 1850,-989.75 1850,-967.75 1820,-967.75\"/>\n",
2179
+ "<text text-anchor=\"start\" x=\"1824.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">WZ</text>\n",
2180
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1855,-967.75 1855,-989.75 1880,-989.75 1880,-967.75 1855,-967.75\"/>\n",
2181
+ "<text text-anchor=\"start\" x=\"1859.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2182
+ "</g>\n",
2183
+ "<!-- Storage_139989529466416&#45;&gt;Reservation_139989528936144 -->\n",
2184
+ "<g id=\"edge120\" class=\"edge\">\n",
2185
+ "<title>Storage_139989529466416-&gt;Reservation_139989528936144</title>\n",
2186
+ "<path fill=\"none\" stroke=\"black\" d=\"M1787,-1011.01C1785.2,-1009.06 1783.34,-1007.06 1781.48,-1005.05\"/>\n",
2187
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1783.76,-1002.36 1774.4,-997.41 1778.63,-1007.12 1783.76,-1002.36\"/>\n",
2188
+ "</g>\n",
2189
+ "<!-- Reservation_139989529466576 -->\n",
2190
+ "<g id=\"node120\" class=\"node\">\n",
2191
+ "<title>Reservation_139989529466576</title>\n",
2192
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1854,-946.69 1663,-946.69 1663,-942.69 1659,-942.69 1659,-938.69 1663,-938.69 1663,-918.69 1659,-918.69 1659,-914.69 1663,-914.69 1663,-910.69 1854,-910.69 1854,-946.69\"/>\n",
2193
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1663,-942.69 1667,-942.69 1667,-938.69 1663,-938.69 \"/>\n",
2194
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1663,-918.69 1667,-918.69 1667,-914.69 1663,-914.69 \"/>\n",
2195
+ "<text text-anchor=\"start\" x=\"1665.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
2196
+ "<polygon fill=\"none\" stroke=\"#ff00b4\" stroke-width=\"5\" points=\"1822,-917.19 1822,-939.19 1852,-939.19 1852,-917.19 1822,-917.19\"/>\n",
2197
+ "<text text-anchor=\"start\" x=\"1826.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">WZ</text>\n",
2198
+ "</g>\n",
2199
+ "<!-- Reservation_139989528936144&#45;&gt;Reservation_139989529466576 -->\n",
2200
+ "<g id=\"edge121\" class=\"edge\">\n",
2201
+ "<title>Reservation_139989528936144-&gt;Reservation_139989529466576</title>\n",
2202
+ "<path fill=\"none\" stroke=\"black\" d=\"M1758.5,-960.99C1758.5,-959.7 1758.5,-958.39 1758.5,-957.06\"/>\n",
2203
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1762,-956.89 1758.5,-946.89 1755,-956.89 1762,-956.89\"/>\n",
2204
+ "</g>\n",
2205
+ "<!-- Temporal_139989529466896 -->\n",
2206
+ "<g id=\"node121\" class=\"node\">\n",
2207
+ "<title>Temporal_139989529466896</title>\n",
2208
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1829,-896.12 1688,-896.12 1688,-860.12 1829,-860.12 1829,-896.12\"/>\n",
2209
+ "<text text-anchor=\"middle\" x=\"1758.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
2210
+ "</g>\n",
2211
+ "<!-- Reservation_139989529466576&#45;&gt;Temporal_139989529466896 -->\n",
2212
+ "<g id=\"edge122\" class=\"edge\">\n",
2213
+ "<title>Reservation_139989529466576-&gt;Temporal_139989529466896</title>\n",
2214
+ "<path fill=\"none\" stroke=\"black\" d=\"M1758.5,-910.43C1758.5,-909.14 1758.5,-907.82 1758.5,-906.49\"/>\n",
2215
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1762,-906.33 1758.5,-896.33 1755,-906.33 1762,-906.33\"/>\n",
2216
+ "</g>\n",
2217
+ "<!-- Temporal_139989529468816 -->\n",
2218
+ "<g id=\"node122\" class=\"node\">\n",
2219
+ "<title>Temporal_139989529468816</title>\n",
2220
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1842.5,-845.56 1674.5,-845.56 1674.5,-809.56 1842.5,-809.56 1842.5,-845.56\"/>\n",
2221
+ "<text text-anchor=\"middle\" x=\"1758.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..64) stride=1024</text>\n",
2222
+ "</g>\n",
2223
+ "<!-- Temporal_139989529466896&#45;&gt;Temporal_139989529468816 -->\n",
2224
+ "<g id=\"edge123\" class=\"edge\">\n",
2225
+ "<title>Temporal_139989529466896-&gt;Temporal_139989529468816</title>\n",
2226
+ "<path fill=\"none\" stroke=\"black\" d=\"M1758.5,-859.87C1758.5,-858.58 1758.5,-857.26 1758.5,-855.93\"/>\n",
2227
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1762,-855.76 1758.5,-845.76 1755,-855.77 1762,-855.76\"/>\n",
2228
+ "</g>\n",
2229
+ "<!-- Storage_139989529469136 -->\n",
2230
+ "<g id=\"node123\" class=\"node\">\n",
2231
+ "<title>Storage_139989529469136</title>\n",
2232
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1834.5,-791.68C1834.5,-793.54 1800.44,-795.06 1758.5,-795.06 1716.56,-795.06 1682.5,-793.54 1682.5,-791.68 1682.5,-791.68 1682.5,-761.2 1682.5,-761.2 1682.5,-759.33 1716.56,-757.81 1758.5,-757.81 1800.44,-757.81 1834.5,-759.33 1834.5,-761.2 1834.5,-761.2 1834.5,-791.68 1834.5,-791.68\"/>\n",
2233
+ "<path fill=\"none\" stroke=\"black\" d=\"M1834.5,-791.68C1834.5,-789.81 1800.44,-788.29 1758.5,-788.29 1716.56,-788.29 1682.5,-789.81 1682.5,-791.68\"/>\n",
2234
+ "<text text-anchor=\"start\" x=\"1684.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
2235
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1807,-764.94 1807,-786.94 1832,-786.94 1832,-764.94 1807,-764.94\"/>\n",
2236
+ "<text text-anchor=\"start\" x=\"1811.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2237
+ "</g>\n",
2238
+ "<!-- Temporal_139989529468816&#45;&gt;Storage_139989529469136 -->\n",
2239
+ "<g id=\"edge124\" class=\"edge\">\n",
2240
+ "<title>Temporal_139989529468816-&gt;Storage_139989529469136</title>\n",
2241
+ "<path fill=\"none\" stroke=\"black\" d=\"M1758.5,-809.38C1758.5,-808.07 1758.5,-806.74 1758.5,-805.38\"/>\n",
2242
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1762,-805.03 1758.5,-795.03 1755,-805.03 1762,-805.03\"/>\n",
2243
+ "</g>\n",
2244
+ "<!-- Reservation_139989529469376 -->\n",
2245
+ "<g id=\"node124\" class=\"node\">\n",
2246
+ "<title>Reservation_139989529469376</title>\n",
2247
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1853.5,-743.88 1667.5,-743.88 1667.5,-739.88 1663.5,-739.88 1663.5,-735.88 1667.5,-735.88 1667.5,-715.88 1663.5,-715.88 1663.5,-711.88 1667.5,-711.88 1667.5,-707.88 1853.5,-707.88 1853.5,-743.88\"/>\n",
2248
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1667.5,-739.88 1671.5,-739.88 1671.5,-735.88 1667.5,-735.88 \"/>\n",
2249
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1667.5,-715.88 1671.5,-715.88 1671.5,-711.88 1667.5,-711.88 \"/>\n",
2250
+ "<text text-anchor=\"start\" x=\"1669.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
2251
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1826,-714.38 1826,-736.38 1851,-736.38 1851,-714.38 1826,-714.38\"/>\n",
2252
+ "<text text-anchor=\"start\" x=\"1830.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2253
+ "</g>\n",
2254
+ "<!-- Storage_139989529469136&#45;&gt;Reservation_139989529469376 -->\n",
2255
+ "<g id=\"edge125\" class=\"edge\">\n",
2256
+ "<title>Storage_139989529469136-&gt;Reservation_139989529469376</title>\n",
2257
+ "<path fill=\"none\" stroke=\"black\" d=\"M1759.23,-757.63C1759.28,-756.52 1759.33,-755.39 1759.37,-754.25\"/>\n",
2258
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1762.88,-754.17 1759.79,-744.03 1755.88,-753.88 1762.88,-754.17\"/>\n",
2259
+ "</g>\n",
2260
+ "<!-- Temporal_139989529469296 -->\n",
2261
+ "<g id=\"node125\" class=\"node\">\n",
2262
+ "<title>Temporal_139989529469296</title>\n",
2263
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1838.5,-693.31 1682.5,-693.31 1682.5,-657.31 1838.5,-657.31 1838.5,-693.31\"/>\n",
2264
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for g in [0..2) stride=2048</text>\n",
2265
+ "</g>\n",
2266
+ "<!-- Reservation_139989529469376&#45;&gt;Temporal_139989529469296 -->\n",
2267
+ "<g id=\"edge126\" class=\"edge\">\n",
2268
+ "<title>Reservation_139989529469376-&gt;Temporal_139989529469296</title>\n",
2269
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-707.62C1760.5,-706.33 1760.5,-705.01 1760.5,-703.68\"/>\n",
2270
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-703.51 1760.5,-693.51 1757,-703.52 1764,-703.51\"/>\n",
2271
+ "</g>\n",
2272
+ "<!-- Storage_139989529469616 -->\n",
2273
+ "<g id=\"node126\" class=\"node\">\n",
2274
+ "<title>Storage_139989529469616</title>\n",
2275
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1830,-639.43C1830,-641.29 1798.85,-642.81 1760.5,-642.81 1722.15,-642.81 1691,-641.29 1691,-639.43 1691,-639.43 1691,-608.95 1691,-608.95 1691,-607.08 1722.15,-605.56 1760.5,-605.56 1798.85,-605.56 1830,-607.08 1830,-608.95 1830,-608.95 1830,-639.43 1830,-639.43\"/>\n",
2276
+ "<path fill=\"none\" stroke=\"black\" d=\"M1830,-639.43C1830,-637.56 1798.85,-636.04 1760.5,-636.04 1722.15,-636.04 1691,-637.56 1691,-639.43\"/>\n",
2277
+ "<text text-anchor=\"start\" x=\"1693.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2278
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"1810,-612.69 1810,-634.69 1828,-634.69 1828,-612.69 1810,-612.69\"/>\n",
2279
+ "<text text-anchor=\"start\" x=\"1814.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2280
+ "</g>\n",
2281
+ "<!-- Temporal_139989529469296&#45;&gt;Storage_139989529469616 -->\n",
2282
+ "<g id=\"edge127\" class=\"edge\">\n",
2283
+ "<title>Temporal_139989529469296-&gt;Storage_139989529469616</title>\n",
2284
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-657.13C1760.5,-655.82 1760.5,-654.49 1760.5,-653.13\"/>\n",
2285
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-652.78 1760.5,-642.78 1757,-652.78 1764,-652.78\"/>\n",
2286
+ "</g>\n",
2287
+ "<!-- Reservation_139989529469856 -->\n",
2288
+ "<g id=\"node127\" class=\"node\">\n",
2289
+ "<title>Reservation_139989529469856</title>\n",
2290
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1847,-591.62 1674,-591.62 1674,-587.62 1670,-587.62 1670,-583.62 1674,-583.62 1674,-563.62 1670,-563.62 1670,-559.62 1674,-559.62 1674,-555.62 1847,-555.62 1847,-591.62\"/>\n",
2291
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1674,-587.62 1678,-587.62 1678,-583.62 1674,-583.62 \"/>\n",
2292
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1674,-563.62 1678,-563.62 1678,-559.62 1674,-559.62 \"/>\n",
2293
+ "<text text-anchor=\"start\" x=\"1676.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2294
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"1827,-562.12 1827,-584.12 1845,-584.12 1845,-562.12 1827,-562.12\"/>\n",
2295
+ "<text text-anchor=\"start\" x=\"1831.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2296
+ "</g>\n",
2297
+ "<!-- Storage_139989529469616&#45;&gt;Reservation_139989529469856 -->\n",
2298
+ "<g id=\"edge128\" class=\"edge\">\n",
2299
+ "<title>Storage_139989529469616-&gt;Reservation_139989529469856</title>\n",
2300
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-605.38C1760.5,-604.27 1760.5,-603.14 1760.5,-602\"/>\n",
2301
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-601.78 1760.5,-591.78 1757,-601.78 1764,-601.78\"/>\n",
2302
+ "</g>\n",
2303
+ "<!-- Temporal_139989529470096 -->\n",
2304
+ "<g id=\"node128\" class=\"node\">\n",
2305
+ "<title>Temporal_139989529470096</title>\n",
2306
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1829.5,-541.06 1691.5,-541.06 1691.5,-505.06 1829.5,-505.06 1829.5,-541.06\"/>\n",
2307
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">for f in [0..32) stride=4</text>\n",
2308
+ "</g>\n",
2309
+ "<!-- Reservation_139989529469856&#45;&gt;Temporal_139989529470096 -->\n",
2310
+ "<g id=\"edge129\" class=\"edge\">\n",
2311
+ "<title>Reservation_139989529469856-&gt;Temporal_139989529470096</title>\n",
2312
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-555.37C1760.5,-554.08 1760.5,-552.76 1760.5,-551.43\"/>\n",
2313
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-551.26 1760.5,-541.26 1757,-551.27 1764,-551.26\"/>\n",
2314
+ "</g>\n",
2315
+ "<!-- Storage_139989529470496 -->\n",
2316
+ "<g id=\"node129\" class=\"node\">\n",
2317
+ "<title>Storage_139989529470496</title>\n",
2318
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1833.5,-487.18C1833.5,-489.04 1800.78,-490.56 1760.5,-490.56 1720.22,-490.56 1687.5,-489.04 1687.5,-487.18 1687.5,-487.18 1687.5,-456.7 1687.5,-456.7 1687.5,-454.83 1720.22,-453.31 1760.5,-453.31 1800.78,-453.31 1833.5,-454.83 1833.5,-456.7 1833.5,-456.7 1833.5,-487.18 1833.5,-487.18\"/>\n",
2319
+ "<path fill=\"none\" stroke=\"black\" d=\"M1833.5,-487.18C1833.5,-485.31 1800.78,-483.79 1760.5,-483.79 1720.22,-483.79 1687.5,-485.31 1687.5,-487.18\"/>\n",
2320
+ "<text text-anchor=\"start\" x=\"1689.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2321
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1806,-460.44 1806,-482.44 1831,-482.44 1831,-460.44 1806,-460.44\"/>\n",
2322
+ "<text text-anchor=\"start\" x=\"1810.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2323
+ "</g>\n",
2324
+ "<!-- Temporal_139989529470096&#45;&gt;Storage_139989529470496 -->\n",
2325
+ "<g id=\"edge130\" class=\"edge\">\n",
2326
+ "<title>Temporal_139989529470096-&gt;Storage_139989529470496</title>\n",
2327
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-504.88C1760.5,-503.57 1760.5,-502.24 1760.5,-500.88\"/>\n",
2328
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-500.53 1760.5,-490.53 1757,-500.53 1764,-500.53\"/>\n",
2329
+ "</g>\n",
2330
+ "<!-- Reservation_139989529472336 -->\n",
2331
+ "<g id=\"node130\" class=\"node\">\n",
2332
+ "<title>Reservation_139989529472336</title>\n",
2333
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1850.5,-438.81 1670.5,-438.81 1670.5,-434.81 1666.5,-434.81 1666.5,-430.81 1670.5,-430.81 1670.5,-410.81 1666.5,-410.81 1666.5,-406.81 1670.5,-406.81 1670.5,-402.81 1850.5,-402.81 1850.5,-438.81\"/>\n",
2334
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1670.5,-434.81 1674.5,-434.81 1674.5,-430.81 1670.5,-430.81 \"/>\n",
2335
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1670.5,-410.81 1674.5,-410.81 1674.5,-406.81 1670.5,-406.81 \"/>\n",
2336
+ "<text text-anchor=\"start\" x=\"1672.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2337
+ "<polygon fill=\"none\" stroke=\"#ff0000\" stroke-width=\"5\" points=\"1823,-409.31 1823,-431.31 1848,-431.31 1848,-409.31 1823,-409.31\"/>\n",
2338
+ "<text text-anchor=\"start\" x=\"1827.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">AV</text>\n",
2339
+ "</g>\n",
2340
+ "<!-- Storage_139989529470496&#45;&gt;Reservation_139989529472336 -->\n",
2341
+ "<g id=\"edge131\" class=\"edge\">\n",
2342
+ "<title>Storage_139989529470496-&gt;Reservation_139989529472336</title>\n",
2343
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-453.2C1760.5,-451.9 1760.5,-450.58 1760.5,-449.24\"/>\n",
2344
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-449.03 1760.5,-439.03 1757,-449.03 1764,-449.03\"/>\n",
2345
+ "</g>\n",
2346
+ "<!-- Temporal_139989529472416 -->\n",
2347
+ "<g id=\"node131\" class=\"node\">\n",
2348
+ "<title>Temporal_139989529472416</title>\n",
2349
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1838.5,-388.25 1682.5,-388.25 1682.5,-352.25 1838.5,-352.25 1838.5,-388.25\"/>\n",
2350
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-367.15\" font-family=\"Arial\" font-size=\"12.00\">for g in [0..16) stride=128</text>\n",
2351
+ "</g>\n",
2352
+ "<!-- Reservation_139989529472336&#45;&gt;Temporal_139989529472416 -->\n",
2353
+ "<g id=\"edge132\" class=\"edge\">\n",
2354
+ "<title>Reservation_139989529472336-&gt;Temporal_139989529472416</title>\n",
2355
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-402.55C1760.5,-401.27 1760.5,-399.95 1760.5,-398.62\"/>\n",
2356
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-398.45 1760.5,-388.45 1757,-398.45 1764,-398.45\"/>\n",
2357
+ "</g>\n",
2358
+ "<!-- Spatial_139989529472576 -->\n",
2359
+ "<g id=\"node132\" class=\"node\">\n",
2360
+ "<title>Spatial_139989529472576</title>\n",
2361
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1842,-338.25 1679,-338.25 1679,-302.25 1842,-302.25 1842,-338.25\"/>\n",
2362
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for h in [0..32) stride=1</text>\n",
2363
+ "</g>\n",
2364
+ "<!-- Temporal_139989529472416&#45;&gt;Spatial_139989529472576 -->\n",
2365
+ "<g id=\"edge133\" class=\"edge\">\n",
2366
+ "<title>Temporal_139989529472416-&gt;Spatial_139989529472576</title>\n",
2367
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-352.19C1760.5,-350.92 1760.5,-349.62 1760.5,-348.3\"/>\n",
2368
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-348.25 1760.5,-338.25 1757,-348.25 1764,-348.25\"/>\n",
2369
+ "</g>\n",
2370
+ "<!-- Spatial_139989529472816 -->\n",
2371
+ "<g id=\"node133\" class=\"node\">\n",
2372
+ "<title>Spatial_139989529472816</title>\n",
2373
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1836.5,-288.25 1684.5,-288.25 1684.5,-252.25 1836.5,-252.25 1836.5,-288.25\"/>\n",
2374
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for f in [0..4) stride=1</text>\n",
2375
+ "</g>\n",
2376
+ "<!-- Spatial_139989529472576&#45;&gt;Spatial_139989529472816 -->\n",
2377
+ "<g id=\"edge134\" class=\"edge\">\n",
2378
+ "<title>Spatial_139989529472576-&gt;Spatial_139989529472816</title>\n",
2379
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-302.19C1760.5,-300.92 1760.5,-299.62 1760.5,-298.3\"/>\n",
2380
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-298.25 1760.5,-288.25 1757,-298.25 1764,-298.25\"/>\n",
2381
+ "</g>\n",
2382
+ "<!-- Spatial_139989529473056 -->\n",
2383
+ "<g id=\"node134\" class=\"node\">\n",
2384
+ "<title>Spatial_139989529473056</title>\n",
2385
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1846.5,-237.69 1674.5,-237.69 1674.5,-201.69 1846.5,-201.69 1846.5,-237.69\"/>\n",
2386
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-216.59\" font-family=\"Arial\" font-size=\"12.00\">S-X for g in [0..128) stride=1</text>\n",
2387
+ "</g>\n",
2388
+ "<!-- Spatial_139989529472816&#45;&gt;Spatial_139989529473056 -->\n",
2389
+ "<g id=\"edge135\" class=\"edge\">\n",
2390
+ "<title>Spatial_139989529472816-&gt;Spatial_139989529473056</title>\n",
2391
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-251.99C1760.5,-250.7 1760.5,-249.39 1760.5,-248.06\"/>\n",
2392
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-247.89 1760.5,-237.89 1757,-247.89 1764,-247.89\"/>\n",
2393
+ "</g>\n",
2394
+ "<!-- Storage_139989527904896 -->\n",
2395
+ "<g id=\"node135\" class=\"node\">\n",
2396
+ "<title>Storage_139989527904896</title>\n",
2397
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M1826,-183.8C1826,-185.67 1796.64,-187.19 1760.5,-187.19 1724.36,-187.19 1695,-185.67 1695,-183.8 1695,-183.8 1695,-153.32 1695,-153.32 1695,-151.46 1724.36,-149.94 1760.5,-149.94 1796.64,-149.94 1826,-151.46 1826,-153.32 1826,-153.32 1826,-183.8 1826,-183.8\"/>\n",
2398
+ "<path fill=\"none\" stroke=\"black\" d=\"M1826,-183.8C1826,-181.93 1796.64,-180.41 1760.5,-180.41 1724.36,-180.41 1695,-181.93 1695,-183.8\"/>\n",
2399
+ "<text text-anchor=\"start\" x=\"1697.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
2400
+ "<polygon fill=\"none\" stroke=\"#ff00b4\" stroke-width=\"5\" points=\"1794,-157.06 1794,-179.06 1824,-179.06 1824,-157.06 1794,-157.06\"/>\n",
2401
+ "<text text-anchor=\"start\" x=\"1798.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">WZ</text>\n",
2402
+ "</g>\n",
2403
+ "<!-- Spatial_139989529473056&#45;&gt;Storage_139989527904896 -->\n",
2404
+ "<g id=\"edge136\" class=\"edge\">\n",
2405
+ "<title>Spatial_139989529473056-&gt;Storage_139989527904896</title>\n",
2406
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-201.51C1760.5,-200.2 1760.5,-198.86 1760.5,-197.51\"/>\n",
2407
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-197.15 1760.5,-187.15 1757,-197.15 1764,-197.15\"/>\n",
2408
+ "</g>\n",
2409
+ "<!-- Reservation_139989527905776 -->\n",
2410
+ "<g id=\"node136\" class=\"node\">\n",
2411
+ "<title>Reservation_139989527905776</title>\n",
2412
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"1843.5,-136 1677.5,-136 1677.5,-132 1673.5,-132 1673.5,-128 1677.5,-128 1677.5,-108 1673.5,-108 1673.5,-104 1677.5,-104 1677.5,-100 1843.5,-100 1843.5,-136\"/>\n",
2413
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1677.5,-132 1681.5,-132 1681.5,-128 1677.5,-128 \"/>\n",
2414
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1677.5,-108 1681.5,-108 1681.5,-104 1677.5,-104 \"/>\n",
2415
+ "<text text-anchor=\"start\" x=\"1679.5\" y=\"-114.4\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
2416
+ "<polygon fill=\"none\" stroke=\"#ff00b4\" stroke-width=\"5\" points=\"1811,-106.5 1811,-128.5 1841,-128.5 1841,-106.5 1811,-106.5\"/>\n",
2417
+ "<text text-anchor=\"start\" x=\"1815.5\" y=\"-114.4\" font-family=\"Arial\" font-size=\"12.00\">WZ</text>\n",
2418
+ "</g>\n",
2419
+ "<!-- Storage_139989527904896&#45;&gt;Reservation_139989527905776 -->\n",
2420
+ "<g id=\"edge137\" class=\"edge\">\n",
2421
+ "<title>Storage_139989527904896-&gt;Reservation_139989527905776</title>\n",
2422
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-149.76C1760.5,-148.65 1760.5,-147.52 1760.5,-146.38\"/>\n",
2423
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-146.16 1760.5,-136.16 1757,-146.16 1764,-146.16\"/>\n",
2424
+ "</g>\n",
2425
+ "<!-- Temporal_139989527906016 -->\n",
2426
+ "<g id=\"node137\" class=\"node\">\n",
2427
+ "<title>Temporal_139989527906016</title>\n",
2428
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"1840.5,-86 1680.5,-86 1680.5,-50 1840.5,-50 1840.5,-86\"/>\n",
2429
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-64.9\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..1024) stride=1</text>\n",
2430
+ "</g>\n",
2431
+ "<!-- Reservation_139989527905776&#45;&gt;Temporal_139989527906016 -->\n",
2432
+ "<g id=\"edge138\" class=\"edge\">\n",
2433
+ "<title>Reservation_139989527905776-&gt;Temporal_139989527906016</title>\n",
2434
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-99.94C1760.5,-98.67 1760.5,-97.37 1760.5,-96.05\"/>\n",
2435
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-96 1760.5,-86 1757,-96 1764,-96\"/>\n",
2436
+ "</g>\n",
2437
+ "<!-- Compute_139989527906576 -->\n",
2438
+ "<g id=\"node138\" class=\"node\">\n",
2439
+ "<title>Compute_139989527906576</title>\n",
2440
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"1760.5\" cy=\"-18\" rx=\"55.45\" ry=\"18\"/>\n",
2441
+ "<text text-anchor=\"middle\" x=\"1760.5\" y=\"-14.9\" font-family=\"Arial\" font-size=\"12.00\">MAC computes Z</text>\n",
2442
+ "</g>\n",
2443
+ "<!-- Temporal_139989527906016&#45;&gt;Compute_139989527906576 -->\n",
2444
+ "<g id=\"edge139\" class=\"edge\">\n",
2445
+ "<title>Temporal_139989527906016-&gt;Compute_139989527906576</title>\n",
2446
+ "<path fill=\"none\" stroke=\"black\" d=\"M1760.5,-49.94C1760.5,-48.67 1760.5,-47.37 1760.5,-46.05\"/>\n",
2447
+ "<polygon fill=\"black\" stroke=\"black\" points=\"1764,-46 1760.5,-36 1757,-46 1764,-46\"/>\n",
2448
+ "</g>\n",
2449
+ "<!-- Storage_139989528374208 -->\n",
2450
+ "<g id=\"node140\" class=\"node\">\n",
2451
+ "<title>Storage_139989528374208</title>\n",
2452
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2119.5,-1045.05C2119.5,-1046.92 2081.4,-1048.44 2034.5,-1048.44 1987.6,-1048.44 1949.5,-1046.92 1949.5,-1045.05 1949.5,-1045.05 1949.5,-1014.57 1949.5,-1014.57 1949.5,-1012.71 1987.6,-1011.19 2034.5,-1011.19 2081.4,-1011.19 2119.5,-1012.71 2119.5,-1014.57 2119.5,-1014.57 2119.5,-1045.05 2119.5,-1045.05\"/>\n",
2453
+ "<path fill=\"none\" stroke=\"black\" d=\"M2119.5,-1045.05C2119.5,-1043.18 2081.4,-1041.66 2034.5,-1041.66 1987.6,-1041.66 1949.5,-1043.18 1949.5,-1045.05\"/>\n",
2454
+ "<text text-anchor=\"start\" x=\"1951.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
2455
+ "<polygon fill=\"none\" stroke=\"#000080\" stroke-width=\"5\" points=\"2074,-1018.31 2074,-1040.31 2117,-1040.31 2117,-1018.31 2074,-1018.31\"/>\n",
2456
+ "<text text-anchor=\"start\" x=\"2078.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">WFFA</text>\n",
2457
+ "</g>\n",
2458
+ "<!-- Storage_139989527910416&#45;&gt;Storage_139989528374208 -->\n",
2459
+ "<g id=\"edge140\" class=\"edge\">\n",
2460
+ "<title>Storage_139989527910416-&gt;Storage_139989528374208</title>\n",
2461
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-1062.2C2034.5,-1061.1 2034.5,-1059.98 2034.5,-1058.85\"/>\n",
2462
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-1058.69 2034.5,-1048.69 2031,-1058.69 2038,-1058.69\"/>\n",
2463
+ "</g>\n",
2464
+ "<!-- Reservation_139989527909456 -->\n",
2465
+ "<g id=\"node141\" class=\"node\">\n",
2466
+ "<title>Reservation_139989527909456</title>\n",
2467
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2168,-997.25 1901,-997.25 1901,-993.25 1897,-993.25 1897,-989.25 1901,-989.25 1901,-969.25 1897,-969.25 1897,-965.25 1901,-965.25 1901,-961.25 2168,-961.25 2168,-997.25\"/>\n",
2468
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1901,-993.25 1905,-993.25 1905,-989.25 1901,-989.25 \"/>\n",
2469
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1901,-969.25 1905,-969.25 1905,-965.25 1901,-965.25 \"/>\n",
2470
+ "<text text-anchor=\"start\" x=\"1903.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
2471
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"2064,-967.75 2064,-989.75 2082,-989.75 2082,-967.75 2064,-967.75\"/>\n",
2472
+ "<text text-anchor=\"start\" x=\"2068.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2473
+ "<polygon fill=\"none\" stroke=\"#000080\" stroke-width=\"5\" points=\"2087,-967.75 2087,-989.75 2130,-989.75 2130,-967.75 2087,-967.75\"/>\n",
2474
+ "<text text-anchor=\"start\" x=\"2091.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">WFFA</text>\n",
2475
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2135,-967.75 2135,-989.75 2166,-989.75 2166,-967.75 2135,-967.75\"/>\n",
2476
+ "<text text-anchor=\"start\" x=\"2139.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2477
+ "</g>\n",
2478
+ "<!-- Storage_139989528374208&#45;&gt;Reservation_139989527909456 -->\n",
2479
+ "<g id=\"edge141\" class=\"edge\">\n",
2480
+ "<title>Storage_139989528374208-&gt;Reservation_139989527909456</title>\n",
2481
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-1011.01C2034.5,-1009.9 2034.5,-1008.77 2034.5,-1007.63\"/>\n",
2482
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-1007.41 2034.5,-997.41 2031,-1007.41 2038,-1007.41\"/>\n",
2483
+ "</g>\n",
2484
+ "<!-- Reservation_139989528374288 -->\n",
2485
+ "<g id=\"node142\" class=\"node\">\n",
2486
+ "<title>Reservation_139989528374288</title>\n",
2487
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2136.5,-946.69 1932.5,-946.69 1932.5,-942.69 1928.5,-942.69 1928.5,-938.69 1932.5,-938.69 1932.5,-918.69 1928.5,-918.69 1928.5,-914.69 1932.5,-914.69 1932.5,-910.69 2136.5,-910.69 2136.5,-946.69\"/>\n",
2488
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1932.5,-942.69 1936.5,-942.69 1936.5,-938.69 1932.5,-938.69 \"/>\n",
2489
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1932.5,-918.69 1936.5,-918.69 1936.5,-914.69 1932.5,-914.69 \"/>\n",
2490
+ "<text text-anchor=\"start\" x=\"1934.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
2491
+ "<polygon fill=\"none\" stroke=\"#000080\" stroke-width=\"5\" points=\"2091,-917.19 2091,-939.19 2134,-939.19 2134,-917.19 2091,-917.19\"/>\n",
2492
+ "<text text-anchor=\"start\" x=\"2095.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">WFFA</text>\n",
2493
+ "</g>\n",
2494
+ "<!-- Reservation_139989527909456&#45;&gt;Reservation_139989528374288 -->\n",
2495
+ "<g id=\"edge142\" class=\"edge\">\n",
2496
+ "<title>Reservation_139989527909456-&gt;Reservation_139989528374288</title>\n",
2497
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-960.99C2034.5,-959.7 2034.5,-958.39 2034.5,-957.06\"/>\n",
2498
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-956.89 2034.5,-946.89 2031,-956.89 2038,-956.89\"/>\n",
2499
+ "</g>\n",
2500
+ "<!-- Temporal_139989528374608 -->\n",
2501
+ "<g id=\"node143\" class=\"node\">\n",
2502
+ "<title>Temporal_139989528374608</title>\n",
2503
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2105,-896.12 1964,-896.12 1964,-860.12 2105,-860.12 2105,-896.12\"/>\n",
2504
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
2505
+ "</g>\n",
2506
+ "<!-- Reservation_139989528374288&#45;&gt;Temporal_139989528374608 -->\n",
2507
+ "<g id=\"edge143\" class=\"edge\">\n",
2508
+ "<title>Reservation_139989528374288-&gt;Temporal_139989528374608</title>\n",
2509
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-910.43C2034.5,-909.14 2034.5,-907.82 2034.5,-906.49\"/>\n",
2510
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-906.33 2034.5,-896.33 2031,-906.33 2038,-906.33\"/>\n",
2511
+ "</g>\n",
2512
+ "<!-- Temporal_139989528376368 -->\n",
2513
+ "<g id=\"node144\" class=\"node\">\n",
2514
+ "<title>Temporal_139989528376368</title>\n",
2515
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2118.5,-845.56 1950.5,-845.56 1950.5,-809.56 2118.5,-809.56 2118.5,-845.56\"/>\n",
2516
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..64) stride=1024</text>\n",
2517
+ "</g>\n",
2518
+ "<!-- Temporal_139989528374608&#45;&gt;Temporal_139989528376368 -->\n",
2519
+ "<g id=\"edge144\" class=\"edge\">\n",
2520
+ "<title>Temporal_139989528374608-&gt;Temporal_139989528376368</title>\n",
2521
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-859.87C2034.5,-858.58 2034.5,-857.26 2034.5,-855.93\"/>\n",
2522
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-855.76 2034.5,-845.76 2031,-855.77 2038,-855.76\"/>\n",
2523
+ "</g>\n",
2524
+ "<!-- Storage_139989528376688 -->\n",
2525
+ "<g id=\"node145\" class=\"node\">\n",
2526
+ "<title>Storage_139989528376688</title>\n",
2527
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2107,-791.68C2107,-793.54 2074.5,-795.06 2034.5,-795.06 1994.5,-795.06 1962,-793.54 1962,-791.68 1962,-791.68 1962,-761.2 1962,-761.2 1962,-759.33 1994.5,-757.81 2034.5,-757.81 2074.5,-757.81 2107,-759.33 2107,-761.2 2107,-761.2 2107,-791.68 2107,-791.68\"/>\n",
2528
+ "<path fill=\"none\" stroke=\"black\" d=\"M2107,-791.68C2107,-789.81 2074.5,-788.29 2034.5,-788.29 1994.5,-788.29 1962,-789.81 1962,-791.68\"/>\n",
2529
+ "<text text-anchor=\"start\" x=\"1964.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
2530
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"2087,-764.94 2087,-786.94 2105,-786.94 2105,-764.94 2087,-764.94\"/>\n",
2531
+ "<text text-anchor=\"start\" x=\"2091.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2532
+ "</g>\n",
2533
+ "<!-- Temporal_139989528376368&#45;&gt;Storage_139989528376688 -->\n",
2534
+ "<g id=\"edge145\" class=\"edge\">\n",
2535
+ "<title>Temporal_139989528376368-&gt;Storage_139989528376688</title>\n",
2536
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-809.38C2034.5,-808.07 2034.5,-806.74 2034.5,-805.38\"/>\n",
2537
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-805.03 2034.5,-795.03 2031,-805.03 2038,-805.03\"/>\n",
2538
+ "</g>\n",
2539
+ "<!-- Reservation_139989528376848 -->\n",
2540
+ "<g id=\"node146\" class=\"node\">\n",
2541
+ "<title>Reservation_139989528376848</title>\n",
2542
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2124,-743.88 1945,-743.88 1945,-739.88 1941,-739.88 1941,-735.88 1945,-735.88 1945,-715.88 1941,-715.88 1941,-711.88 1945,-711.88 1945,-707.88 2124,-707.88 2124,-743.88\"/>\n",
2543
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1945,-739.88 1949,-739.88 1949,-735.88 1945,-735.88 \"/>\n",
2544
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1945,-715.88 1949,-715.88 1949,-711.88 1945,-711.88 \"/>\n",
2545
+ "<text text-anchor=\"start\" x=\"1947.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
2546
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"2104,-714.38 2104,-736.38 2122,-736.38 2122,-714.38 2104,-714.38\"/>\n",
2547
+ "<text text-anchor=\"start\" x=\"2108.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2548
+ "</g>\n",
2549
+ "<!-- Storage_139989528376688&#45;&gt;Reservation_139989528376848 -->\n",
2550
+ "<g id=\"edge146\" class=\"edge\">\n",
2551
+ "<title>Storage_139989528376688-&gt;Reservation_139989528376848</title>\n",
2552
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-757.63C2034.5,-756.52 2034.5,-755.39 2034.5,-754.25\"/>\n",
2553
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-754.03 2034.5,-744.03 2031,-754.03 2038,-754.03\"/>\n",
2554
+ "</g>\n",
2555
+ "<!-- Temporal_139989528376928 -->\n",
2556
+ "<g id=\"node147\" class=\"node\">\n",
2557
+ "<title>Temporal_139989528376928</title>\n",
2558
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2112,-693.31 1957,-693.31 1957,-657.31 2112,-657.31 2112,-693.31\"/>\n",
2559
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for c in [0..8) stride=2048</text>\n",
2560
+ "</g>\n",
2561
+ "<!-- Reservation_139989528376848&#45;&gt;Temporal_139989528376928 -->\n",
2562
+ "<g id=\"edge147\" class=\"edge\">\n",
2563
+ "<title>Reservation_139989528376848-&gt;Temporal_139989528376928</title>\n",
2564
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-707.62C2034.5,-706.33 2034.5,-705.01 2034.5,-703.68\"/>\n",
2565
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-703.51 2034.5,-693.51 2031,-703.52 2038,-703.51\"/>\n",
2566
+ "</g>\n",
2567
+ "<!-- Storage_139989528377248 -->\n",
2568
+ "<g id=\"node148\" class=\"node\">\n",
2569
+ "<title>Storage_139989528377248</title>\n",
2570
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2110.5,-639.43C2110.5,-641.29 2076.44,-642.81 2034.5,-642.81 1992.56,-642.81 1958.5,-641.29 1958.5,-639.43 1958.5,-639.43 1958.5,-608.95 1958.5,-608.95 1958.5,-607.08 1992.56,-605.56 2034.5,-605.56 2076.44,-605.56 2110.5,-607.08 2110.5,-608.95 2110.5,-608.95 2110.5,-639.43 2110.5,-639.43\"/>\n",
2571
+ "<path fill=\"none\" stroke=\"black\" d=\"M2110.5,-639.43C2110.5,-637.56 2076.44,-636.04 2034.5,-636.04 1992.56,-636.04 1958.5,-637.56 1958.5,-639.43\"/>\n",
2572
+ "<text text-anchor=\"start\" x=\"1960.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2573
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2077,-612.69 2077,-634.69 2108,-634.69 2108,-612.69 2077,-612.69\"/>\n",
2574
+ "<text text-anchor=\"start\" x=\"2081.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2575
+ "</g>\n",
2576
+ "<!-- Temporal_139989528376928&#45;&gt;Storage_139989528377248 -->\n",
2577
+ "<g id=\"edge148\" class=\"edge\">\n",
2578
+ "<title>Temporal_139989528376928-&gt;Storage_139989528377248</title>\n",
2579
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-657.13C2034.5,-655.82 2034.5,-654.49 2034.5,-653.13\"/>\n",
2580
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-652.78 2034.5,-642.78 2031,-652.78 2038,-652.78\"/>\n",
2581
+ "</g>\n",
2582
+ "<!-- Reservation_139989528377488 -->\n",
2583
+ "<g id=\"node149\" class=\"node\">\n",
2584
+ "<title>Reservation_139989528377488</title>\n",
2585
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2127.5,-591.62 1941.5,-591.62 1941.5,-587.62 1937.5,-587.62 1937.5,-583.62 1941.5,-583.62 1941.5,-563.62 1937.5,-563.62 1937.5,-559.62 1941.5,-559.62 1941.5,-555.62 2127.5,-555.62 2127.5,-591.62\"/>\n",
2586
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1941.5,-587.62 1945.5,-587.62 1945.5,-583.62 1941.5,-583.62 \"/>\n",
2587
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1941.5,-563.62 1945.5,-563.62 1945.5,-559.62 1941.5,-559.62 \"/>\n",
2588
+ "<text text-anchor=\"start\" x=\"1943.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2589
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2094,-562.12 2094,-584.12 2125,-584.12 2125,-562.12 2094,-562.12\"/>\n",
2590
+ "<text text-anchor=\"start\" x=\"2098.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2591
+ "</g>\n",
2592
+ "<!-- Storage_139989528377248&#45;&gt;Reservation_139989528377488 -->\n",
2593
+ "<g id=\"edge149\" class=\"edge\">\n",
2594
+ "<title>Storage_139989528377248-&gt;Reservation_139989528377488</title>\n",
2595
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-605.38C2034.5,-604.27 2034.5,-603.14 2034.5,-602\"/>\n",
2596
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-601.78 2034.5,-591.78 2031,-601.78 2038,-601.78\"/>\n",
2597
+ "</g>\n",
2598
+ "<!-- Temporal_139989528377728 -->\n",
2599
+ "<g id=\"node150\" class=\"node\">\n",
2600
+ "<title>Temporal_139989528377728</title>\n",
2601
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2112.5,-541.06 1956.5,-541.06 1956.5,-505.06 2112.5,-505.06 2112.5,-541.06\"/>\n",
2602
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">for g in [0..32) stride=128</text>\n",
2603
+ "</g>\n",
2604
+ "<!-- Reservation_139989528377488&#45;&gt;Temporal_139989528377728 -->\n",
2605
+ "<g id=\"edge150\" class=\"edge\">\n",
2606
+ "<title>Reservation_139989528377488-&gt;Temporal_139989528377728</title>\n",
2607
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-555.37C2034.5,-554.08 2034.5,-552.76 2034.5,-551.43\"/>\n",
2608
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-551.26 2034.5,-541.26 2031,-551.27 2038,-551.26\"/>\n",
2609
+ "</g>\n",
2610
+ "<!-- Storage_139989528378128 -->\n",
2611
+ "<g id=\"node151\" class=\"node\">\n",
2612
+ "<title>Storage_139989528378128</title>\n",
2613
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2104,-487.18C2104,-489.04 2072.85,-490.56 2034.5,-490.56 1996.15,-490.56 1965,-489.04 1965,-487.18 1965,-487.18 1965,-456.7 1965,-456.7 1965,-454.83 1996.15,-453.31 2034.5,-453.31 2072.85,-453.31 2104,-454.83 2104,-456.7 2104,-456.7 2104,-487.18 2104,-487.18\"/>\n",
2614
+ "<path fill=\"none\" stroke=\"black\" d=\"M2104,-487.18C2104,-485.31 2072.85,-483.79 2034.5,-483.79 1996.15,-483.79 1965,-485.31 1965,-487.18\"/>\n",
2615
+ "<text text-anchor=\"start\" x=\"1967.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2616
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"2084,-460.44 2084,-482.44 2102,-482.44 2102,-460.44 2084,-460.44\"/>\n",
2617
+ "<text text-anchor=\"start\" x=\"2088.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2618
+ "</g>\n",
2619
+ "<!-- Temporal_139989528377728&#45;&gt;Storage_139989528378128 -->\n",
2620
+ "<g id=\"edge151\" class=\"edge\">\n",
2621
+ "<title>Temporal_139989528377728-&gt;Storage_139989528378128</title>\n",
2622
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-504.88C2034.5,-503.57 2034.5,-502.24 2034.5,-500.88\"/>\n",
2623
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-500.53 2034.5,-490.53 2031,-500.53 2038,-500.53\"/>\n",
2624
+ "</g>\n",
2625
+ "<!-- Reservation_139989526561408 -->\n",
2626
+ "<g id=\"node152\" class=\"node\">\n",
2627
+ "<title>Reservation_139989526561408</title>\n",
2628
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2121,-438.81 1948,-438.81 1948,-434.81 1944,-434.81 1944,-430.81 1948,-430.81 1948,-410.81 1944,-410.81 1944,-406.81 1948,-406.81 1948,-402.81 2121,-402.81 2121,-438.81\"/>\n",
2629
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1948,-434.81 1952,-434.81 1952,-430.81 1948,-430.81 \"/>\n",
2630
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1948,-410.81 1952,-410.81 1952,-406.81 1948,-406.81 \"/>\n",
2631
+ "<text text-anchor=\"start\" x=\"1950.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2632
+ "<polygon fill=\"none\" stroke=\"#ff005a\" stroke-width=\"5\" points=\"2101,-409.31 2101,-431.31 2119,-431.31 2119,-409.31 2101,-409.31\"/>\n",
2633
+ "<text text-anchor=\"start\" x=\"2105.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">Z</text>\n",
2634
+ "</g>\n",
2635
+ "<!-- Storage_139989528378128&#45;&gt;Reservation_139989526561408 -->\n",
2636
+ "<g id=\"edge152\" class=\"edge\">\n",
2637
+ "<title>Storage_139989528378128-&gt;Reservation_139989526561408</title>\n",
2638
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-453.2C2034.5,-451.9 2034.5,-450.58 2034.5,-449.24\"/>\n",
2639
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-449.03 2034.5,-439.03 2031,-449.03 2038,-449.03\"/>\n",
2640
+ "</g>\n",
2641
+ "<!-- Temporal_139989526561488 -->\n",
2642
+ "<g id=\"node153\" class=\"node\">\n",
2643
+ "<title>Temporal_139989526561488</title>\n",
2644
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2112,-388.25 1957,-388.25 1957,-352.25 2112,-352.25 2112,-388.25\"/>\n",
2645
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-367.15\" font-family=\"Arial\" font-size=\"12.00\">for c in [0..16) stride=128</text>\n",
2646
+ "</g>\n",
2647
+ "<!-- Reservation_139989526561408&#45;&gt;Temporal_139989526561488 -->\n",
2648
+ "<g id=\"edge153\" class=\"edge\">\n",
2649
+ "<title>Reservation_139989526561408-&gt;Temporal_139989526561488</title>\n",
2650
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-402.55C2034.5,-401.27 2034.5,-399.95 2034.5,-398.62\"/>\n",
2651
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-398.45 2034.5,-388.45 2031,-398.45 2038,-398.45\"/>\n",
2652
+ "</g>\n",
2653
+ "<!-- Spatial_139989526561648 -->\n",
2654
+ "<g id=\"node154\" class=\"node\">\n",
2655
+ "<title>Spatial_139989526561648</title>\n",
2656
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2119.5,-338.25 1949.5,-338.25 1949.5,-302.25 2119.5,-302.25 2119.5,-338.25\"/>\n",
2657
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for g in [0..128) stride=1</text>\n",
2658
+ "</g>\n",
2659
+ "<!-- Temporal_139989526561488&#45;&gt;Spatial_139989526561648 -->\n",
2660
+ "<g id=\"edge154\" class=\"edge\">\n",
2661
+ "<title>Temporal_139989526561488-&gt;Spatial_139989526561648</title>\n",
2662
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-352.19C2034.5,-350.92 2034.5,-349.62 2034.5,-348.3\"/>\n",
2663
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-348.25 2034.5,-338.25 2031,-348.25 2038,-348.25\"/>\n",
2664
+ "</g>\n",
2665
+ "<!-- Spatial_139989526561888 -->\n",
2666
+ "<g id=\"node155\" class=\"node\">\n",
2667
+ "<title>Spatial_139989526561888</title>\n",
2668
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2120,-288.25 1949,-288.25 1949,-252.25 2120,-252.25 2120,-288.25\"/>\n",
2669
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">S-X for c in [0..128) stride=1</text>\n",
2670
+ "</g>\n",
2671
+ "<!-- Spatial_139989526561648&#45;&gt;Spatial_139989526561888 -->\n",
2672
+ "<g id=\"edge155\" class=\"edge\">\n",
2673
+ "<title>Spatial_139989526561648-&gt;Spatial_139989526561888</title>\n",
2674
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-302.19C2034.5,-300.92 2034.5,-299.62 2034.5,-298.3\"/>\n",
2675
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-298.25 2034.5,-288.25 2031,-298.25 2038,-298.25\"/>\n",
2676
+ "</g>\n",
2677
+ "<!-- Storage_139989526562128 -->\n",
2678
+ "<g id=\"node156\" class=\"node\">\n",
2679
+ "<title>Storage_139989526562128</title>\n",
2680
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2106.5,-234.93C2106.5,-236.79 2074.23,-238.31 2034.5,-238.31 1994.77,-238.31 1962.5,-236.79 1962.5,-234.93 1962.5,-234.93 1962.5,-204.45 1962.5,-204.45 1962.5,-202.58 1994.77,-201.06 2034.5,-201.06 2074.23,-201.06 2106.5,-202.58 2106.5,-204.45 2106.5,-204.45 2106.5,-234.93 2106.5,-234.93\"/>\n",
2681
+ "<path fill=\"none\" stroke=\"black\" d=\"M2106.5,-234.93C2106.5,-233.06 2074.23,-231.54 2034.5,-231.54 1994.77,-231.54 1962.5,-233.06 1962.5,-234.93\"/>\n",
2682
+ "<text text-anchor=\"start\" x=\"1964.5\" y=\"-216.09\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
2683
+ "<polygon fill=\"none\" stroke=\"#000080\" stroke-width=\"5\" points=\"2061,-208.19 2061,-230.19 2104,-230.19 2104,-208.19 2061,-208.19\"/>\n",
2684
+ "<text text-anchor=\"start\" x=\"2065.5\" y=\"-216.09\" font-family=\"Arial\" font-size=\"12.00\">WFFA</text>\n",
2685
+ "</g>\n",
2686
+ "<!-- Spatial_139989526561888&#45;&gt;Storage_139989526562128 -->\n",
2687
+ "<g id=\"edge156\" class=\"edge\">\n",
2688
+ "<title>Spatial_139989526561888-&gt;Storage_139989526562128</title>\n",
2689
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-251.99C2034.5,-250.9 2034.5,-249.79 2034.5,-248.67\"/>\n",
2690
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-248.55 2034.5,-238.55 2031,-248.55 2038,-248.55\"/>\n",
2691
+ "</g>\n",
2692
+ "<!-- Reservation_139989526812528 -->\n",
2693
+ "<g id=\"node157\" class=\"node\">\n",
2694
+ "<title>Reservation_139989526812528</title>\n",
2695
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2124,-186.56 1945,-186.56 1945,-182.56 1941,-182.56 1941,-178.56 1945,-178.56 1945,-158.56 1941,-158.56 1941,-154.56 1945,-154.56 1945,-150.56 2124,-150.56 2124,-186.56\"/>\n",
2696
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1945,-182.56 1949,-182.56 1949,-178.56 1945,-178.56 \"/>\n",
2697
+ "<polyline fill=\"none\" stroke=\"black\" points=\"1945,-158.56 1949,-158.56 1949,-154.56 1945,-154.56 \"/>\n",
2698
+ "<text text-anchor=\"start\" x=\"1947.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
2699
+ "<polygon fill=\"none\" stroke=\"#000080\" stroke-width=\"5\" points=\"2079,-157.06 2079,-179.06 2122,-179.06 2122,-157.06 2079,-157.06\"/>\n",
2700
+ "<text text-anchor=\"start\" x=\"2083.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">WFFA</text>\n",
2701
+ "</g>\n",
2702
+ "<!-- Storage_139989526562128&#45;&gt;Reservation_139989526812528 -->\n",
2703
+ "<g id=\"edge157\" class=\"edge\">\n",
2704
+ "<title>Storage_139989526562128-&gt;Reservation_139989526812528</title>\n",
2705
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-200.95C2034.5,-199.65 2034.5,-198.33 2034.5,-196.99\"/>\n",
2706
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-196.78 2034.5,-186.78 2031,-196.78 2038,-196.78\"/>\n",
2707
+ "</g>\n",
2708
+ "<!-- Temporal_139989526813488 -->\n",
2709
+ "<g id=\"node158\" class=\"node\">\n",
2710
+ "<title>Temporal_139989526813488</title>\n",
2711
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2114.5,-136 1954.5,-136 1954.5,-100 2114.5,-100 2114.5,-136\"/>\n",
2712
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-114.9\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..1024) stride=1</text>\n",
2713
+ "</g>\n",
2714
+ "<!-- Reservation_139989526812528&#45;&gt;Temporal_139989526813488 -->\n",
2715
+ "<g id=\"edge158\" class=\"edge\">\n",
2716
+ "<title>Reservation_139989526812528-&gt;Temporal_139989526813488</title>\n",
2717
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-150.3C2034.5,-149.02 2034.5,-147.7 2034.5,-146.37\"/>\n",
2718
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-146.2 2034.5,-136.2 2031,-146.2 2038,-146.2\"/>\n",
2719
+ "</g>\n",
2720
+ "<!-- Compute_139989526814048 -->\n",
2721
+ "<g id=\"node159\" class=\"node\">\n",
2722
+ "<title>Compute_139989526814048</title>\n",
2723
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"2034.5\" cy=\"-68\" rx=\"61.82\" ry=\"18\"/>\n",
2724
+ "<text text-anchor=\"middle\" x=\"2034.5\" y=\"-64.9\" font-family=\"Arial\" font-size=\"12.00\">MAC computes FFA</text>\n",
2725
+ "</g>\n",
2726
+ "<!-- Temporal_139989526813488&#45;&gt;Compute_139989526814048 -->\n",
2727
+ "<g id=\"edge159\" class=\"edge\">\n",
2728
+ "<title>Temporal_139989526813488-&gt;Compute_139989526814048</title>\n",
2729
+ "<path fill=\"none\" stroke=\"black\" d=\"M2034.5,-99.94C2034.5,-98.67 2034.5,-97.37 2034.5,-96.05\"/>\n",
2730
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2038,-96 2034.5,-86 2031,-96 2038,-96\"/>\n",
2731
+ "</g>\n",
2732
+ "<!-- Storage_139989527297984 -->\n",
2733
+ "<g id=\"node161\" class=\"node\">\n",
2734
+ "<title>Storage_139989527297984</title>\n",
2735
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2390.5,-1045.05C2390.5,-1046.92 2352.4,-1048.44 2305.5,-1048.44 2258.6,-1048.44 2220.5,-1046.92 2220.5,-1045.05 2220.5,-1045.05 2220.5,-1014.57 2220.5,-1014.57 2220.5,-1012.71 2258.6,-1011.19 2305.5,-1011.19 2352.4,-1011.19 2390.5,-1012.71 2390.5,-1014.57 2390.5,-1014.57 2390.5,-1045.05 2390.5,-1045.05\"/>\n",
2736
+ "<path fill=\"none\" stroke=\"black\" d=\"M2390.5,-1045.05C2390.5,-1043.18 2352.4,-1041.66 2305.5,-1041.66 2258.6,-1041.66 2220.5,-1043.18 2220.5,-1045.05\"/>\n",
2737
+ "<text text-anchor=\"start\" x=\"2222.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
2738
+ "<polygon fill=\"none\" stroke=\"#808000\" stroke-width=\"5\" points=\"2345,-1018.31 2345,-1040.31 2388,-1040.31 2388,-1018.31 2345,-1018.31\"/>\n",
2739
+ "<text text-anchor=\"start\" x=\"2349.5\" y=\"-1026.21\" font-family=\"Arial\" font-size=\"12.00\">WFFB</text>\n",
2740
+ "</g>\n",
2741
+ "<!-- Storage_139989526816608&#45;&gt;Storage_139989527297984 -->\n",
2742
+ "<g id=\"edge160\" class=\"edge\">\n",
2743
+ "<title>Storage_139989526816608-&gt;Storage_139989527297984</title>\n",
2744
+ "<path fill=\"none\" stroke=\"black\" d=\"M2292.08,-1062.2C2292.67,-1060.83 2293.27,-1059.42 2293.88,-1058.01\"/>\n",
2745
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2297.15,-1059.26 2297.86,-1048.69 2290.71,-1056.51 2297.15,-1059.26\"/>\n",
2746
+ "</g>\n",
2747
+ "<!-- Reservation_139989526816928 -->\n",
2748
+ "<g id=\"node162\" class=\"node\">\n",
2749
+ "<title>Reservation_139989526816928</title>\n",
2750
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2466.5,-997.25 2186.5,-997.25 2186.5,-993.25 2182.5,-993.25 2182.5,-989.25 2186.5,-989.25 2186.5,-969.25 2182.5,-969.25 2182.5,-965.25 2186.5,-965.25 2186.5,-961.25 2466.5,-961.25 2466.5,-997.25\"/>\n",
2751
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2186.5,-993.25 2190.5,-993.25 2190.5,-989.25 2186.5,-989.25 \"/>\n",
2752
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2186.5,-969.25 2190.5,-969.25 2190.5,-965.25 2186.5,-965.25 \"/>\n",
2753
+ "<text text-anchor=\"start\" x=\"2188.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">MainMemory reserved for</text>\n",
2754
+ "<polygon fill=\"none\" stroke=\"#808000\" stroke-width=\"5\" points=\"2349,-967.75 2349,-989.75 2392,-989.75 2392,-967.75 2349,-967.75\"/>\n",
2755
+ "<text text-anchor=\"start\" x=\"2353.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">WFFB</text>\n",
2756
+ "<polygon fill=\"none\" stroke=\"#0000ff\" stroke-width=\"5\" points=\"2397,-967.75 2397,-989.75 2428,-989.75 2428,-967.75 2397,-967.75\"/>\n",
2757
+ "<text text-anchor=\"start\" x=\"2401.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">FFB</text>\n",
2758
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2433,-967.75 2433,-989.75 2464,-989.75 2464,-967.75 2433,-967.75\"/>\n",
2759
+ "<text text-anchor=\"start\" x=\"2437.5\" y=\"-975.65\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2760
+ "</g>\n",
2761
+ "<!-- Storage_139989527297984&#45;&gt;Reservation_139989526816928 -->\n",
2762
+ "<g id=\"edge161\" class=\"edge\">\n",
2763
+ "<title>Storage_139989527297984-&gt;Reservation_139989526816928</title>\n",
2764
+ "<path fill=\"none\" stroke=\"black\" d=\"M2313.2,-1011.01C2313.8,-1009.62 2314.41,-1008.2 2315.03,-1006.77\"/>\n",
2765
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2318.32,-1007.98 2319.08,-997.41 2311.9,-1005.2 2318.32,-1007.98\"/>\n",
2766
+ "</g>\n",
2767
+ "<!-- Reservation_139989527396512 -->\n",
2768
+ "<g id=\"node163\" class=\"node\">\n",
2769
+ "<title>Reservation_139989527396512</title>\n",
2770
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2428.5,-946.69 2224.5,-946.69 2224.5,-942.69 2220.5,-942.69 2220.5,-938.69 2224.5,-938.69 2224.5,-918.69 2220.5,-918.69 2220.5,-914.69 2224.5,-914.69 2224.5,-910.69 2428.5,-910.69 2428.5,-946.69\"/>\n",
2771
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2224.5,-942.69 2228.5,-942.69 2228.5,-938.69 2224.5,-938.69 \"/>\n",
2772
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2224.5,-918.69 2228.5,-918.69 2228.5,-914.69 2224.5,-914.69 \"/>\n",
2773
+ "<text text-anchor=\"start\" x=\"2226.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
2774
+ "<polygon fill=\"none\" stroke=\"#808000\" stroke-width=\"5\" points=\"2383,-917.19 2383,-939.19 2426,-939.19 2426,-917.19 2383,-917.19\"/>\n",
2775
+ "<text text-anchor=\"start\" x=\"2387.5\" y=\"-925.09\" font-family=\"Arial\" font-size=\"12.00\">WFFB</text>\n",
2776
+ "</g>\n",
2777
+ "<!-- Reservation_139989526816928&#45;&gt;Reservation_139989527396512 -->\n",
2778
+ "<g id=\"edge162\" class=\"edge\">\n",
2779
+ "<title>Reservation_139989526816928-&gt;Reservation_139989527396512</title>\n",
2780
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-960.99C2326.5,-959.7 2326.5,-958.39 2326.5,-957.06\"/>\n",
2781
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-956.89 2326.5,-946.89 2323,-956.89 2330,-956.89\"/>\n",
2782
+ "</g>\n",
2783
+ "<!-- Temporal_139989527396832 -->\n",
2784
+ "<g id=\"node164\" class=\"node\">\n",
2785
+ "<title>Temporal_139989527396832</title>\n",
2786
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2397,-896.12 2256,-896.12 2256,-860.12 2397,-860.12 2397,-896.12\"/>\n",
2787
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-875.02\" font-family=\"Arial\" font-size=\"12.00\">for b in [0..64) stride=1</text>\n",
2788
+ "</g>\n",
2789
+ "<!-- Reservation_139989527396512&#45;&gt;Temporal_139989527396832 -->\n",
2790
+ "<g id=\"edge163\" class=\"edge\">\n",
2791
+ "<title>Reservation_139989527396512-&gt;Temporal_139989527396832</title>\n",
2792
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-910.43C2326.5,-909.14 2326.5,-907.82 2326.5,-906.49\"/>\n",
2793
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-906.33 2326.5,-896.33 2323,-906.33 2330,-906.33\"/>\n",
2794
+ "</g>\n",
2795
+ "<!-- Temporal_139989527398752 -->\n",
2796
+ "<g id=\"node165\" class=\"node\">\n",
2797
+ "<title>Temporal_139989527398752</title>\n",
2798
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2410.5,-845.56 2242.5,-845.56 2242.5,-809.56 2410.5,-809.56 2410.5,-845.56\"/>\n",
2799
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-824.46\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..64) stride=1024</text>\n",
2800
+ "</g>\n",
2801
+ "<!-- Temporal_139989527396832&#45;&gt;Temporal_139989527398752 -->\n",
2802
+ "<g id=\"edge164\" class=\"edge\">\n",
2803
+ "<title>Temporal_139989527396832-&gt;Temporal_139989527398752</title>\n",
2804
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-859.87C2326.5,-858.58 2326.5,-857.26 2326.5,-855.93\"/>\n",
2805
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-855.76 2326.5,-845.76 2323,-855.77 2330,-855.76\"/>\n",
2806
+ "</g>\n",
2807
+ "<!-- Storage_139989527399072 -->\n",
2808
+ "<g id=\"node166\" class=\"node\">\n",
2809
+ "<title>Storage_139989527399072</title>\n",
2810
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2405.5,-791.68C2405.5,-793.54 2370.09,-795.06 2326.5,-795.06 2282.91,-795.06 2247.5,-793.54 2247.5,-791.68 2247.5,-791.68 2247.5,-761.2 2247.5,-761.2 2247.5,-759.33 2282.91,-757.81 2326.5,-757.81 2370.09,-757.81 2405.5,-759.33 2405.5,-761.2 2405.5,-761.2 2405.5,-791.68 2405.5,-791.68\"/>\n",
2811
+ "<path fill=\"none\" stroke=\"black\" d=\"M2405.5,-791.68C2405.5,-789.81 2370.09,-788.29 2326.5,-788.29 2282.91,-788.29 2247.5,-789.81 2247.5,-791.68\"/>\n",
2812
+ "<text text-anchor=\"start\" x=\"2249.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reuses</text>\n",
2813
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2372,-764.94 2372,-786.94 2403,-786.94 2403,-764.94 2372,-764.94\"/>\n",
2814
+ "<text text-anchor=\"start\" x=\"2376.5\" y=\"-772.84\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2815
+ "</g>\n",
2816
+ "<!-- Temporal_139989527398752&#45;&gt;Storage_139989527399072 -->\n",
2817
+ "<g id=\"edge165\" class=\"edge\">\n",
2818
+ "<title>Temporal_139989527398752-&gt;Storage_139989527399072</title>\n",
2819
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-809.38C2326.5,-808.07 2326.5,-806.74 2326.5,-805.38\"/>\n",
2820
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-805.03 2326.5,-795.03 2323,-805.03 2330,-805.03\"/>\n",
2821
+ "</g>\n",
2822
+ "<!-- Reservation_139989527399232 -->\n",
2823
+ "<g id=\"node167\" class=\"node\">\n",
2824
+ "<title>Reservation_139989527399232</title>\n",
2825
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2422.5,-743.88 2230.5,-743.88 2230.5,-739.88 2226.5,-739.88 2226.5,-735.88 2230.5,-735.88 2230.5,-715.88 2226.5,-715.88 2226.5,-711.88 2230.5,-711.88 2230.5,-707.88 2422.5,-707.88 2422.5,-743.88\"/>\n",
2826
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2230.5,-739.88 2234.5,-739.88 2234.5,-735.88 2230.5,-735.88 \"/>\n",
2827
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2230.5,-715.88 2234.5,-715.88 2234.5,-711.88 2230.5,-711.88 \"/>\n",
2828
+ "<text text-anchor=\"start\" x=\"2232.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">GlobalBuffer reserved for</text>\n",
2829
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2389,-714.38 2389,-736.38 2420,-736.38 2420,-714.38 2389,-714.38\"/>\n",
2830
+ "<text text-anchor=\"start\" x=\"2393.5\" y=\"-722.27\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2831
+ "</g>\n",
2832
+ "<!-- Storage_139989527399072&#45;&gt;Reservation_139989527399232 -->\n",
2833
+ "<g id=\"edge166\" class=\"edge\">\n",
2834
+ "<title>Storage_139989527399072-&gt;Reservation_139989527399232</title>\n",
2835
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-757.63C2326.5,-756.52 2326.5,-755.39 2326.5,-754.25\"/>\n",
2836
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-754.03 2326.5,-744.03 2323,-754.03 2330,-754.03\"/>\n",
2837
+ "</g>\n",
2838
+ "<!-- Temporal_139989527399312 -->\n",
2839
+ "<g id=\"node168\" class=\"node\">\n",
2840
+ "<title>Temporal_139989527399312</title>\n",
2841
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2402,-693.31 2251,-693.31 2251,-657.31 2402,-657.31 2402,-693.31\"/>\n",
2842
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-672.21\" font-family=\"Arial\" font-size=\"12.00\">for j in [0..2) stride=2048</text>\n",
2843
+ "</g>\n",
2844
+ "<!-- Reservation_139989527399232&#45;&gt;Temporal_139989527399312 -->\n",
2845
+ "<g id=\"edge167\" class=\"edge\">\n",
2846
+ "<title>Reservation_139989527399232-&gt;Temporal_139989527399312</title>\n",
2847
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-707.62C2326.5,-706.33 2326.5,-705.01 2326.5,-703.68\"/>\n",
2848
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-703.51 2326.5,-693.51 2323,-703.52 2330,-703.51\"/>\n",
2849
+ "</g>\n",
2850
+ "<!-- Storage_139989527399552 -->\n",
2851
+ "<g id=\"node169\" class=\"node\">\n",
2852
+ "<title>Storage_139989527399552</title>\n",
2853
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2402.5,-639.43C2402.5,-641.29 2368.44,-642.81 2326.5,-642.81 2284.56,-642.81 2250.5,-641.29 2250.5,-639.43 2250.5,-639.43 2250.5,-608.95 2250.5,-608.95 2250.5,-607.08 2284.56,-605.56 2326.5,-605.56 2368.44,-605.56 2402.5,-607.08 2402.5,-608.95 2402.5,-608.95 2402.5,-639.43 2402.5,-639.43\"/>\n",
2854
+ "<path fill=\"none\" stroke=\"black\" d=\"M2402.5,-639.43C2402.5,-637.56 2368.44,-636.04 2326.5,-636.04 2284.56,-636.04 2250.5,-637.56 2250.5,-639.43\"/>\n",
2855
+ "<text text-anchor=\"start\" x=\"2252.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2856
+ "<polygon fill=\"none\" stroke=\"#0000ff\" stroke-width=\"5\" points=\"2369,-612.69 2369,-634.69 2400,-634.69 2400,-612.69 2369,-612.69\"/>\n",
2857
+ "<text text-anchor=\"start\" x=\"2373.5\" y=\"-620.59\" font-family=\"Arial\" font-size=\"12.00\">FFB</text>\n",
2858
+ "</g>\n",
2859
+ "<!-- Temporal_139989527399312&#45;&gt;Storage_139989527399552 -->\n",
2860
+ "<g id=\"edge168\" class=\"edge\">\n",
2861
+ "<title>Temporal_139989527399312-&gt;Storage_139989527399552</title>\n",
2862
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-657.13C2326.5,-655.82 2326.5,-654.49 2326.5,-653.13\"/>\n",
2863
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-652.78 2326.5,-642.78 2323,-652.78 2330,-652.78\"/>\n",
2864
+ "</g>\n",
2865
+ "<!-- Reservation_139989527399792 -->\n",
2866
+ "<g id=\"node170\" class=\"node\">\n",
2867
+ "<title>Reservation_139989527399792</title>\n",
2868
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2419.5,-591.62 2233.5,-591.62 2233.5,-587.62 2229.5,-587.62 2229.5,-583.62 2233.5,-583.62 2233.5,-563.62 2229.5,-563.62 2229.5,-559.62 2233.5,-559.62 2233.5,-555.62 2419.5,-555.62 2419.5,-591.62\"/>\n",
2869
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2233.5,-587.62 2237.5,-587.62 2237.5,-583.62 2233.5,-583.62 \"/>\n",
2870
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2233.5,-563.62 2237.5,-563.62 2237.5,-559.62 2233.5,-559.62 \"/>\n",
2871
+ "<text text-anchor=\"start\" x=\"2235.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2872
+ "<polygon fill=\"none\" stroke=\"#0000ff\" stroke-width=\"5\" points=\"2386,-562.12 2386,-584.12 2417,-584.12 2417,-562.12 2386,-562.12\"/>\n",
2873
+ "<text text-anchor=\"start\" x=\"2390.5\" y=\"-570.02\" font-family=\"Arial\" font-size=\"12.00\">FFB</text>\n",
2874
+ "</g>\n",
2875
+ "<!-- Storage_139989527399552&#45;&gt;Reservation_139989527399792 -->\n",
2876
+ "<g id=\"edge169\" class=\"edge\">\n",
2877
+ "<title>Storage_139989527399552-&gt;Reservation_139989527399792</title>\n",
2878
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-605.38C2326.5,-604.27 2326.5,-603.14 2326.5,-602\"/>\n",
2879
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-601.78 2326.5,-591.78 2323,-601.78 2330,-601.78\"/>\n",
2880
+ "</g>\n",
2881
+ "<!-- Temporal_139989527400032 -->\n",
2882
+ "<g id=\"node171\" class=\"node\">\n",
2883
+ "<title>Temporal_139989527400032</title>\n",
2884
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2408,-541.06 2245,-541.06 2245,-505.06 2408,-505.06 2408,-541.06\"/>\n",
2885
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-519.96\" font-family=\"Arial\" font-size=\"12.00\">for c in [0..128) stride=128</text>\n",
2886
+ "</g>\n",
2887
+ "<!-- Reservation_139989527399792&#45;&gt;Temporal_139989527400032 -->\n",
2888
+ "<g id=\"edge170\" class=\"edge\">\n",
2889
+ "<title>Reservation_139989527399792-&gt;Temporal_139989527400032</title>\n",
2890
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-555.37C2326.5,-554.08 2326.5,-552.76 2326.5,-551.43\"/>\n",
2891
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-551.26 2326.5,-541.26 2323,-551.27 2330,-551.26\"/>\n",
2892
+ "</g>\n",
2893
+ "<!-- Storage_139989527400432 -->\n",
2894
+ "<g id=\"node172\" class=\"node\">\n",
2895
+ "<title>Storage_139989527400432</title>\n",
2896
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2402.5,-487.18C2402.5,-489.04 2368.44,-490.56 2326.5,-490.56 2284.56,-490.56 2250.5,-489.04 2250.5,-487.18 2250.5,-487.18 2250.5,-456.7 2250.5,-456.7 2250.5,-454.83 2284.56,-453.31 2326.5,-453.31 2368.44,-453.31 2402.5,-454.83 2402.5,-456.7 2402.5,-456.7 2402.5,-487.18 2402.5,-487.18\"/>\n",
2897
+ "<path fill=\"none\" stroke=\"black\" d=\"M2402.5,-487.18C2402.5,-485.31 2368.44,-483.79 2326.5,-483.79 2284.56,-483.79 2250.5,-485.31 2250.5,-487.18\"/>\n",
2898
+ "<text text-anchor=\"start\" x=\"2252.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reuses</text>\n",
2899
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2369,-460.44 2369,-482.44 2400,-482.44 2400,-460.44 2369,-460.44\"/>\n",
2900
+ "<text text-anchor=\"start\" x=\"2373.5\" y=\"-468.34\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2901
+ "</g>\n",
2902
+ "<!-- Temporal_139989527400032&#45;&gt;Storage_139989527400432 -->\n",
2903
+ "<g id=\"edge171\" class=\"edge\">\n",
2904
+ "<title>Temporal_139989527400032-&gt;Storage_139989527400432</title>\n",
2905
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-504.88C2326.5,-503.57 2326.5,-502.24 2326.5,-500.88\"/>\n",
2906
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-500.53 2326.5,-490.53 2323,-500.53 2330,-500.53\"/>\n",
2907
+ "</g>\n",
2908
+ "<!-- Reservation_139989527402272 -->\n",
2909
+ "<g id=\"node173\" class=\"node\">\n",
2910
+ "<title>Reservation_139989527402272</title>\n",
2911
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2419.5,-438.81 2233.5,-438.81 2233.5,-434.81 2229.5,-434.81 2229.5,-430.81 2233.5,-430.81 2233.5,-410.81 2229.5,-410.81 2229.5,-406.81 2233.5,-406.81 2233.5,-402.81 2419.5,-402.81 2419.5,-438.81\"/>\n",
2912
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2233.5,-434.81 2237.5,-434.81 2237.5,-430.81 2233.5,-430.81 \"/>\n",
2913
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2233.5,-410.81 2237.5,-410.81 2237.5,-406.81 2233.5,-406.81 \"/>\n",
2914
+ "<text text-anchor=\"start\" x=\"2235.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">LocalBuffer reserved for</text>\n",
2915
+ "<polygon fill=\"none\" stroke=\"#00ff00\" stroke-width=\"5\" points=\"2386,-409.31 2386,-431.31 2417,-431.31 2417,-409.31 2386,-409.31\"/>\n",
2916
+ "<text text-anchor=\"start\" x=\"2390.5\" y=\"-417.21\" font-family=\"Arial\" font-size=\"12.00\">FFA</text>\n",
2917
+ "</g>\n",
2918
+ "<!-- Storage_139989527400432&#45;&gt;Reservation_139989527402272 -->\n",
2919
+ "<g id=\"edge172\" class=\"edge\">\n",
2920
+ "<title>Storage_139989527400432-&gt;Reservation_139989527402272</title>\n",
2921
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-453.2C2326.5,-451.9 2326.5,-450.58 2326.5,-449.24\"/>\n",
2922
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-449.03 2326.5,-439.03 2323,-449.03 2330,-449.03\"/>\n",
2923
+ "</g>\n",
2924
+ "<!-- Temporal_139989527402352 -->\n",
2925
+ "<g id=\"node174\" class=\"node\">\n",
2926
+ "<title>Temporal_139989527402352</title>\n",
2927
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2402,-388.25 2251,-388.25 2251,-352.25 2402,-352.25 2402,-388.25\"/>\n",
2928
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-367.15\" font-family=\"Arial\" font-size=\"12.00\">for j in [0..16) stride=128</text>\n",
2929
+ "</g>\n",
2930
+ "<!-- Reservation_139989527402272&#45;&gt;Temporal_139989527402352 -->\n",
2931
+ "<g id=\"edge173\" class=\"edge\">\n",
2932
+ "<title>Reservation_139989527402272-&gt;Temporal_139989527402352</title>\n",
2933
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-402.55C2326.5,-401.27 2326.5,-399.95 2326.5,-398.62\"/>\n",
2934
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-398.45 2326.5,-388.45 2323,-398.45 2330,-398.45\"/>\n",
2935
+ "</g>\n",
2936
+ "<!-- Spatial_139989527402512 -->\n",
2937
+ "<g id=\"node175\" class=\"node\">\n",
2938
+ "<title>Spatial_139989527402512</title>\n",
2939
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2411,-338.25 2242,-338.25 2242,-302.25 2411,-302.25 2411,-338.25\"/>\n",
2940
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-317.15\" font-family=\"Arial\" font-size=\"12.00\">S-Y for c in [0..128) stride=1</text>\n",
2941
+ "</g>\n",
2942
+ "<!-- Temporal_139989527402352&#45;&gt;Spatial_139989527402512 -->\n",
2943
+ "<g id=\"edge174\" class=\"edge\">\n",
2944
+ "<title>Temporal_139989527402352-&gt;Spatial_139989527402512</title>\n",
2945
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-352.19C2326.5,-350.92 2326.5,-349.62 2326.5,-348.3\"/>\n",
2946
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-348.25 2326.5,-338.25 2323,-348.25 2330,-348.25\"/>\n",
2947
+ "</g>\n",
2948
+ "<!-- Spatial_139989527402752 -->\n",
2949
+ "<g id=\"node176\" class=\"node\">\n",
2950
+ "<title>Spatial_139989527402752</title>\n",
2951
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2410,-288.25 2243,-288.25 2243,-252.25 2410,-252.25 2410,-288.25\"/>\n",
2952
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-267.15\" font-family=\"Arial\" font-size=\"12.00\">S-X for j in [0..128) stride=1</text>\n",
2953
+ "</g>\n",
2954
+ "<!-- Spatial_139989527402512&#45;&gt;Spatial_139989527402752 -->\n",
2955
+ "<g id=\"edge175\" class=\"edge\">\n",
2956
+ "<title>Spatial_139989527402512-&gt;Spatial_139989527402752</title>\n",
2957
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-302.19C2326.5,-300.92 2326.5,-299.62 2326.5,-298.3\"/>\n",
2958
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-298.25 2326.5,-288.25 2323,-298.25 2330,-298.25\"/>\n",
2959
+ "</g>\n",
2960
+ "<!-- Storage_139989527402992 -->\n",
2961
+ "<g id=\"node177\" class=\"node\">\n",
2962
+ "<title>Storage_139989527402992</title>\n",
2963
+ "<path fill=\"#d7fcd7\" stroke=\"black\" d=\"M2398.5,-234.93C2398.5,-236.79 2366.23,-238.31 2326.5,-238.31 2286.77,-238.31 2254.5,-236.79 2254.5,-234.93 2254.5,-234.93 2254.5,-204.45 2254.5,-204.45 2254.5,-202.58 2286.77,-201.06 2326.5,-201.06 2366.23,-201.06 2398.5,-202.58 2398.5,-204.45 2398.5,-204.45 2398.5,-234.93 2398.5,-234.93\"/>\n",
2964
+ "<path fill=\"none\" stroke=\"black\" d=\"M2398.5,-234.93C2398.5,-233.06 2366.23,-231.54 2326.5,-231.54 2286.77,-231.54 2254.5,-233.06 2254.5,-234.93\"/>\n",
2965
+ "<text text-anchor=\"start\" x=\"2256.5\" y=\"-216.09\" font-family=\"Arial\" font-size=\"12.00\">Register reuses</text>\n",
2966
+ "<polygon fill=\"none\" stroke=\"#808000\" stroke-width=\"5\" points=\"2353,-208.19 2353,-230.19 2396,-230.19 2396,-208.19 2353,-208.19\"/>\n",
2967
+ "<text text-anchor=\"start\" x=\"2357.5\" y=\"-216.09\" font-family=\"Arial\" font-size=\"12.00\">WFFB</text>\n",
2968
+ "</g>\n",
2969
+ "<!-- Spatial_139989527402752&#45;&gt;Storage_139989527402992 -->\n",
2970
+ "<g id=\"edge176\" class=\"edge\">\n",
2971
+ "<title>Spatial_139989527402752-&gt;Storage_139989527402992</title>\n",
2972
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-251.99C2326.5,-250.9 2326.5,-249.79 2326.5,-248.67\"/>\n",
2973
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-248.55 2326.5,-238.55 2323,-248.55 2330,-248.55\"/>\n",
2974
+ "</g>\n",
2975
+ "<!-- Reservation_139989525785616 -->\n",
2976
+ "<g id=\"node178\" class=\"node\">\n",
2977
+ "<title>Reservation_139989525785616</title>\n",
2978
+ "<polygon fill=\"#e8e8e8\" stroke=\"black\" points=\"2416,-186.56 2237,-186.56 2237,-182.56 2233,-182.56 2233,-178.56 2237,-178.56 2237,-158.56 2233,-158.56 2233,-154.56 2237,-154.56 2237,-150.56 2416,-150.56 2416,-186.56\"/>\n",
2979
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2237,-182.56 2241,-182.56 2241,-178.56 2237,-178.56 \"/>\n",
2980
+ "<polyline fill=\"none\" stroke=\"black\" points=\"2237,-158.56 2241,-158.56 2241,-154.56 2237,-154.56 \"/>\n",
2981
+ "<text text-anchor=\"start\" x=\"2239.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">Register reserved for</text>\n",
2982
+ "<polygon fill=\"none\" stroke=\"#808000\" stroke-width=\"5\" points=\"2371,-157.06 2371,-179.06 2414,-179.06 2414,-157.06 2371,-157.06\"/>\n",
2983
+ "<text text-anchor=\"start\" x=\"2375.5\" y=\"-164.96\" font-family=\"Arial\" font-size=\"12.00\">WFFB</text>\n",
2984
+ "</g>\n",
2985
+ "<!-- Storage_139989527402992&#45;&gt;Reservation_139989525785616 -->\n",
2986
+ "<g id=\"edge177\" class=\"edge\">\n",
2987
+ "<title>Storage_139989527402992-&gt;Reservation_139989525785616</title>\n",
2988
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-200.95C2326.5,-199.65 2326.5,-198.33 2326.5,-196.99\"/>\n",
2989
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-196.78 2326.5,-186.78 2323,-196.78 2330,-196.78\"/>\n",
2990
+ "</g>\n",
2991
+ "<!-- Temporal_139989525786576 -->\n",
2992
+ "<g id=\"node179\" class=\"node\">\n",
2993
+ "<title>Temporal_139989525786576</title>\n",
2994
+ "<polygon fill=\"#fcc2fc\" stroke=\"black\" points=\"2406.5,-136 2246.5,-136 2246.5,-100 2406.5,-100 2406.5,-136\"/>\n",
2995
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-114.9\" font-family=\"Arial\" font-size=\"12.00\">for m in [0..1024) stride=1</text>\n",
2996
+ "</g>\n",
2997
+ "<!-- Reservation_139989525785616&#45;&gt;Temporal_139989525786576 -->\n",
2998
+ "<g id=\"edge178\" class=\"edge\">\n",
2999
+ "<title>Reservation_139989525785616-&gt;Temporal_139989525786576</title>\n",
3000
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-150.3C2326.5,-149.02 2326.5,-147.7 2326.5,-146.37\"/>\n",
3001
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-146.2 2326.5,-136.2 2323,-146.2 2330,-146.2\"/>\n",
3002
+ "</g>\n",
3003
+ "<!-- Compute_139989525787136 -->\n",
3004
+ "<g id=\"node180\" class=\"node\">\n",
3005
+ "<title>Compute_139989525787136</title>\n",
3006
+ "<ellipse fill=\"#e0eeff\" stroke=\"black\" cx=\"2326.5\" cy=\"-68\" rx=\"62.39\" ry=\"18\"/>\n",
3007
+ "<text text-anchor=\"middle\" x=\"2326.5\" y=\"-64.9\" font-family=\"Arial\" font-size=\"12.00\">MAC computes FFB</text>\n",
3008
+ "</g>\n",
3009
+ "<!-- Temporal_139989525786576&#45;&gt;Compute_139989525787136 -->\n",
3010
+ "<g id=\"edge179\" class=\"edge\">\n",
3011
+ "<title>Temporal_139989525786576-&gt;Compute_139989525787136</title>\n",
3012
+ "<path fill=\"none\" stroke=\"black\" d=\"M2326.5,-99.94C2326.5,-98.67 2326.5,-97.37 2326.5,-96.05\"/>\n",
3013
+ "<polygon fill=\"black\" stroke=\"black\" points=\"2330,-96 2326.5,-86 2323,-96 2330,-96\"/>\n",
3014
+ "</g>\n",
3015
+ "</g>\n",
3016
+ "</svg>"
3017
+ ],
3018
+ "text/plain": [
3019
+ "<IPython.core.display.SVG object>"
3020
+ ]
3021
+ },
3022
+ "metadata": {},
3023
+ "output_type": "display_data"
3024
+ },
3025
+ {
3026
+ "name": "stdout",
3027
+ "output_type": "stream",
3028
+ "text": [
3029
+ "Totals:\n",
3030
+ "\tenergy: 2535.336242627733\n",
3031
+ "\tmapping: <fastfusion.mapper.FFM._interface.main.MappingFromRow object at 0x7f51db035c40>\n"
3032
+ ]
3033
+ },
3034
+ {
3035
+ "ename": "KeyError",
3036
+ "evalue": "'No element with name \"type=None name=\\'I\\' tensor_accesses=[TensorAccess(type=None, name=\\'I_in\\', projection={\\'B\\': \\'b\\', \\'M\\': \\'m\\', \\'D\\': \\'d\\'}, output=False, persistent=False, backing_storage_size_scale=1.0), TensorAccess(type=None, name=\\'I\\', projection={\\'B\\': \\'b\\', \\'M\\': \\'m\\', \\'D\\': \\'d\\'}, output=True, persistent=False, backing_storage_size_scale=1.0)] shape=[] is_copy_operation=True renames=[Rename(type=None, name=\\'weight\\', source=\\'Nothing()\\', expected_count=None), Rename(type=None, name=\\'input\\', source=\\'Inputs()\\', expected_count=None), Rename(type=None, name=\\'output\\', source=\\'Outputs()\\', expected_count=None)] n_instances=1\" found.'",
3037
+ "output_type": "error",
3038
+ "traceback": [
3039
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
3040
+ "\u001b[31mKeyError\u001b[39m Traceback (most recent call last)",
3041
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[6]\u001b[39m\u001b[32m, line 15\u001b[39m\n\u001b[32m 12\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;130;01m\\t\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mk\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mv\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m 14\u001b[39m accessor = \u001b[33m\"\u001b[39m\u001b[33mlatency\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m spec.mapper.ffm.metrics == ff.mapper.FFM.Metrics.LATENCY \u001b[38;5;28;01melse\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33menergy\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m---> \u001b[39m\u001b[32m15\u001b[39m per_compute = \u001b[43mmappings\u001b[49m\u001b[43m.\u001b[49m\u001b[43maccess\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mTotal\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m.\u001b[49m\u001b[43mper_compute\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m.to_dict()[accessor]\n\u001b[32m 16\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m'\u001b[39m\u001b[33mPer-compute \u001b[39m\u001b[38;5;132;01m{\u001b[39;00maccessor\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mper_compute\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m'\u001b[39m)\n\u001b[32m 18\u001b[39m \u001b[38;5;28mprint\u001b[39m(\u001b[33mf\u001b[39m\u001b[33m'\u001b[39m\u001b[33mContributors to \u001b[39m\u001b[38;5;132;01m{\u001b[39;00maccessor\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m:\u001b[39m\u001b[33m'\u001b[39m)\n",
3042
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/mapper/FFM/_interface/mappings.py:183\u001b[39m, in \u001b[36mMappings.per_compute\u001b[39m\u001b[34m(self, per_einsum)\u001b[39m\n\u001b[32m 181\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mper_compute\u001b[39m(\u001b[38;5;28mself\u001b[39m, per_einsum: \u001b[38;5;28mbool\u001b[39m = \u001b[38;5;28;01mFalse\u001b[39;00m) -> \u001b[33m\"\u001b[39m\u001b[33mMappings\u001b[39m\u001b[33m\"\u001b[39m:\n\u001b[32m 182\u001b[39m new_df = \u001b[38;5;28mself\u001b[39m.data.copy()\n\u001b[32m--> \u001b[39m\u001b[32m183\u001b[39m total_computes = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mnum_computes\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 184\u001b[39m \u001b[38;5;28;01mfor\u001b[39;00m col \u001b[38;5;129;01min\u001b[39;00m new_df.columns:\n\u001b[32m 185\u001b[39m n_computes = total_computes\n",
3043
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/mapper/FFM/_interface/mappings.py:29\u001b[39m, in \u001b[36mMappings.num_computes\u001b[39m\u001b[34m(self, einsum_name)\u001b[39m\n\u001b[32m 27\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mnum_computes\u001b[39m(\u001b[38;5;28mself\u001b[39m, einsum_name: EinsumName | \u001b[38;5;28;01mNone\u001b[39;00m = \u001b[38;5;28;01mNone\u001b[39;00m) -> \u001b[38;5;28mint\u001b[39m:\n\u001b[32m 28\u001b[39m \u001b[38;5;66;03m# TODO: this is not correct if there are recomputation.\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m29\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mget_num_computes\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mspec\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43meinsum_name\u001b[49m\u001b[43m)\u001b[49m\n",
3044
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/mapper/FFM/_make_pmappings/mapper_multi_einsum.py:61\u001b[39m, in \u001b[36mget_num_computes\u001b[39m\u001b[34m(spec, einsum_name)\u001b[39m\n\u001b[32m 59\u001b[39m einsums = spec.workload.einsums\n\u001b[32m 60\u001b[39m einsums = [einsums[einsum_name]] \u001b[38;5;28;01mif\u001b[39;00m einsum_name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m einsums\n\u001b[32m---> \u001b[39m\u001b[32m61\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msum\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mget_operation_space_size\u001b[49m\u001b[43m(\u001b[49m\u001b[43mspec\u001b[49m\u001b[43m.\u001b[49m\u001b[43mworkload\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43me\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43me\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43meinsums\u001b[49m\u001b[43m)\u001b[49m\n",
3045
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/mapper/FFM/_make_pmappings/mapper_multi_einsum.py:61\u001b[39m, in \u001b[36m<genexpr>\u001b[39m\u001b[34m(.0)\u001b[39m\n\u001b[32m 59\u001b[39m einsums = spec.workload.einsums\n\u001b[32m 60\u001b[39m einsums = [einsums[einsum_name]] \u001b[38;5;28;01mif\u001b[39;00m einsum_name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m einsums\n\u001b[32m---> \u001b[39m\u001b[32m61\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msum\u001b[39m(\u001b[43mget_operation_space_size\u001b[49m\u001b[43m(\u001b[49m\u001b[43mspec\u001b[49m\u001b[43m.\u001b[49m\u001b[43mworkload\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43me\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m e \u001b[38;5;129;01min\u001b[39;00m einsums)\n",
3046
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/frontend/workload/_isl.py:135\u001b[39m, in \u001b[36mget_operation_space_size\u001b[39m\u001b[34m(workload, einsum_name)\u001b[39m\n\u001b[32m 134\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mget_operation_space_size\u001b[39m(workload: Workload, einsum_name: \u001b[38;5;28mstr\u001b[39m):\n\u001b[32m--> \u001b[39m\u001b[32m135\u001b[39m operation_space = \u001b[43mget_einsum_operation_space\u001b[49m\u001b[43m(\u001b[49m\u001b[43mworkload\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43meinsum_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 136\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m operation_space.is_box():\n\u001b[32m 137\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m _card_box(operation_space)\n",
3047
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/frontend/workload/_isl.py:9\u001b[39m, in \u001b[36mget_einsum_operation_space\u001b[39m\u001b[34m(workload, einsum_name)\u001b[39m\n\u001b[32m 7\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mget_einsum_operation_space\u001b[39m(workload: Workload, einsum_name: \u001b[38;5;28mstr\u001b[39m) -> isl.Set:\n\u001b[32m 8\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"Return isl.Set of all operations in an einsum.\"\"\"\u001b[39;00m\n\u001b[32m----> \u001b[39m\u001b[32m9\u001b[39m einsum_shape = \u001b[43mworkload\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_shape_isl_string\u001b[49m\u001b[43m(\u001b[49m\u001b[43meinsum_name\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 10\u001b[39m rank_variable_names = \u001b[33m\"\u001b[39m\u001b[33m,\u001b[39m\u001b[33m\"\u001b[39m.join(\n\u001b[32m 11\u001b[39m \u001b[38;5;28mmap\u001b[39m(\u001b[38;5;28mstr\u001b[39m, workload.einsums[einsum_name].rank_variables)\n\u001b[32m 12\u001b[39m )\n\u001b[32m 13\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n",
3048
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/frontend/workload/workload.py:381\u001b[39m, in \u001b[36mWorkload.get_shape_isl_string\u001b[39m\u001b[34m(self, einsum_name)\u001b[39m\n\u001b[32m 380\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mget_shape_isl_string\u001b[39m(\u001b[38;5;28mself\u001b[39m, einsum_name: \u001b[38;5;28mstr\u001b[39m) -> \u001b[38;5;28mstr\u001b[39m:\n\u001b[32m--> \u001b[39m\u001b[32m381\u001b[39m einsum = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43meinsums\u001b[49m\u001b[43m[\u001b[49m\u001b[43meinsum_name\u001b[49m\u001b[43m]\u001b[49m\n\u001b[32m 382\u001b[39m einsum_shape = einsum.shape\n\u001b[32m 383\u001b[39m global_shape = [\u001b[38;5;28mself\u001b[39m.shape[r] \u001b[38;5;28;01mfor\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m einsum.rank_variables \u001b[38;5;28;01mif\u001b[39;00m r \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m.shape]\n",
3049
+ "\u001b[36mFile \u001b[39m\u001b[32m/home/workspace/fastfusion/util/basetypes.py:711\u001b[39m, in \u001b[36mParsableList.__getitem__\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 709\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m found \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[32m 710\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m found\n\u001b[32m--> \u001b[39m\u001b[32m711\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m'\u001b[39m\u001b[33mNo element with name \u001b[39m\u001b[33m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mkey\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m\u001b[33m found.\u001b[39m\u001b[33m'\u001b[39m)\n",
3050
+ "\u001b[31mKeyError\u001b[39m: 'No element with name \"type=None name=\\'I\\' tensor_accesses=[TensorAccess(type=None, name=\\'I_in\\', projection={\\'B\\': \\'b\\', \\'M\\': \\'m\\', \\'D\\': \\'d\\'}, output=False, persistent=False, backing_storage_size_scale=1.0), TensorAccess(type=None, name=\\'I\\', projection={\\'B\\': \\'b\\', \\'M\\': \\'m\\', \\'D\\': \\'d\\'}, output=True, persistent=False, backing_storage_size_scale=1.0)] shape=[] is_copy_operation=True renames=[Rename(type=None, name=\\'weight\\', source=\\'Nothing()\\', expected_count=None), Rename(type=None, name=\\'input\\', source=\\'Inputs()\\', expected_count=None), Rename(type=None, name=\\'output\\', source=\\'Outputs()\\', expected_count=None)] n_instances=1\" found.'"
3051
+ ]
3052
+ }
3053
+ ],
3054
+ "source": [
3055
+ "# The joined pmappings object contains a DataFrame of all Pareto-optimal pmappings for\n",
3056
+ "# the given optimization metrics. Since we're only interested in one metric, this should\n",
3057
+ "# have exaclty one row, but we'll grab index 0 to be sure.\n",
3058
+ "mappings = mappings[0]\n",
3059
+ "\n",
3060
+ "# Show the mapping.\n",
3061
+ "display(SVG(mappings.render()))\n",
3062
+ "\n",
3063
+ "# All units are SI units-- seconds, joules, meters, etc.\n",
3064
+ "print(f\"Totals:\")\n",
3065
+ "for k, v in mappings.access(\"Total\").to_dict().items():\n",
3066
+ " print(f\"\\t{k}: {v}\")\n",
3067
+ "\n",
3068
+ "accessor = \"latency\" if spec.mapper.ffm.metrics == ff.mapper.FFM.Metrics.LATENCY else \"energy\"\n",
3069
+ "per_compute = mappings.access(\"Total\").per_compute().to_dict()[accessor]\n",
3070
+ "print(f'Per-compute {accessor}: {per_compute}')\n",
3071
+ "\n",
3072
+ "print(f'Contributors to {accessor}:')\n",
3073
+ "for k, v in mappings.access(accessor).to_dict().items():\n",
3074
+ " print(f\"\\t{k}: {v}\")"
3075
+ ]
3076
+ },
3077
+ {
3078
+ "cell_type": "code",
3079
+ "execution_count": null,
3080
+ "metadata": {},
3081
+ "outputs": [],
3082
+ "source": [
3083
+ "# Print the other stats\n",
3084
+ "for k, v in mappings.to_dict().items():\n",
3085
+ " print(f\"{k}: {v}\")"
3086
+ ]
3087
+ }
3088
+ ],
3089
+ "metadata": {
3090
+ "kernelspec": {
3091
+ "display_name": "Python 3 (ipykernel)",
3092
+ "language": "python",
3093
+ "name": "python3"
3094
+ },
3095
+ "language_info": {
3096
+ "codemirror_mode": {
3097
+ "name": "ipython",
3098
+ "version": 3
3099
+ },
3100
+ "file_extension": ".py",
3101
+ "mimetype": "text/x-python",
3102
+ "name": "python",
3103
+ "nbconvert_exporter": "python",
3104
+ "pygments_lexer": "ipython3",
3105
+ "version": "3.12.3"
3106
+ }
3107
+ },
3108
+ "nbformat": 4,
3109
+ "nbformat_minor": 4
3110
+ }