diff --git a/Images/figures/3_instructions_retired.png b/Images/figures/3_instructions_retired.png new file mode 100644 index 0000000..6b288eb Binary files /dev/null and b/Images/figures/3_instructions_retired.png differ diff --git a/Images/figures/3_llc_miss_counts.png b/Images/figures/3_llc_miss_counts.png new file mode 100644 index 0000000..13bcbea Binary files /dev/null and b/Images/figures/3_llc_miss_counts.png differ diff --git a/Images/figures/3_measurement_data.png b/Images/figures/3_measurement_data.png new file mode 100644 index 0000000..bafdfee Binary files /dev/null and b/Images/figures/3_measurement_data.png differ diff --git a/Images/figures/6_instructions_retired.png b/Images/figures/6_instructions_retired.png new file mode 100644 index 0000000..eedf4f1 Binary files /dev/null and b/Images/figures/6_instructions_retired.png differ diff --git a/Images/figures/6_llc_miss_counts.png b/Images/figures/6_llc_miss_counts.png new file mode 100644 index 0000000..de42e1b Binary files /dev/null and b/Images/figures/6_llc_miss_counts.png differ diff --git a/Images/figures/6_measurement_data.png b/Images/figures/6_measurement_data.png new file mode 100644 index 0000000..236d25c Binary files /dev/null and b/Images/figures/6_measurement_data.png differ diff --git a/Images/figures/8_instructions_retired.png b/Images/figures/8_instructions_retired.png new file mode 100644 index 0000000..bfcbecd Binary files /dev/null and b/Images/figures/8_instructions_retired.png differ diff --git a/Images/figures/8_llc_miss_counts.png b/Images/figures/8_llc_miss_counts.png new file mode 100644 index 0000000..b9cb075 Binary files /dev/null and b/Images/figures/8_llc_miss_counts.png differ diff --git a/Images/figures/8_measurement_data.png b/Images/figures/8_measurement_data.png new file mode 100644 index 0000000..761a8d6 Binary files /dev/null and b/Images/figures/8_measurement_data.png differ diff --git a/Images/figures/MICROARCHITECTURE_3.png b/Images/figures/MICROARCHITECTURE_3.png new file mode 100644 index 0000000..8dc919f Binary files /dev/null and b/Images/figures/MICROARCHITECTURE_3.png differ diff --git a/Images/figures/MICROARCHITECTURE_6.png b/Images/figures/MICROARCHITECTURE_6.png new file mode 100644 index 0000000..eae364a Binary files /dev/null and b/Images/figures/MICROARCHITECTURE_6.png differ diff --git a/Images/figures/MICROARCHITECTURE_8.png b/Images/figures/MICROARCHITECTURE_8.png new file mode 100644 index 0000000..4c2a6bf Binary files /dev/null and b/Images/figures/MICROARCHITECTURE_8.png differ diff --git a/Images/figures/MICROARCHITECTURE_Map.png b/Images/figures/MICROARCHITECTURE_Map.png new file mode 100644 index 0000000..f77c83c Binary files /dev/null and b/Images/figures/MICROARCHITECTURE_Map.png differ diff --git a/Images/figures/Map_instructions_retired.png b/Images/figures/Map_instructions_retired.png new file mode 100644 index 0000000..6107715 Binary files /dev/null and b/Images/figures/Map_instructions_retired.png differ diff --git a/Images/figures/Map_llc_miss_counts.png b/Images/figures/Map_llc_miss_counts.png new file mode 100644 index 0000000..70254c8 Binary files /dev/null and b/Images/figures/Map_llc_miss_counts.png differ diff --git a/Images/figures/Map_measurement_data.png b/Images/figures/Map_measurement_data.png new file mode 100644 index 0000000..df05c20 Binary files /dev/null and b/Images/figures/Map_measurement_data.png differ diff --git a/Images/final_figures/8_llc_miss_counts.png b/Images/final_figures/8_llc_miss_counts.png new file mode 100644 index 0000000..b9cb075 Binary files /dev/null and b/Images/final_figures/8_llc_miss_counts.png differ diff --git a/Images/CPU_time.png b/Images/final_figures/CPU_time.png similarity index 100% rename from Images/CPU_time.png rename to Images/final_figures/CPU_time.png diff --git a/Images/base_vs_improved.png b/Images/final_figures/base_vs_improved.png similarity index 100% rename from Images/base_vs_improved.png rename to Images/final_figures/base_vs_improved.png diff --git a/Images/invariance.png b/Images/final_figures/invariance.png similarity index 100% rename from Images/invariance.png rename to Images/final_figures/invariance.png diff --git a/Images/stationary.png b/Images/final_figures/stationary.png similarity index 100% rename from Images/stationary.png rename to Images/final_figures/stationary.png diff --git a/Images/title_image.png b/Images/final_figures/title_image.png similarity index 100% rename from Images/title_image.png rename to Images/final_figures/title_image.png diff --git a/notebooks/Milestone3.ipynb b/notebooks/Milestone3.ipynb new file mode 100644 index 0000000..c2af4e4 --- /dev/null +++ b/notebooks/Milestone3.ipynb @@ -0,0 +1,594 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "5761041b-d15e-42ea-ab99-2327e6dae0ad", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "15f9da56-98e0-41b5-925c-b9777abe53b6", + "metadata": {}, + "outputs": [], + "source": [ + "functions = {\n", + " \"Pop_Heap_Hole\": {\n", + " \"3\": {},\n", + " \"6\": {},\n", + " \"8\": {},\n", + " \"Map\": {}\n", + " },\n", + " \"NearestNeighbor\": {\n", + " \"3\": {},\n", + " \"6\": {},\n", + " \"8\": {},\n", + " \"Map\": {}\n", + " },\n", + " \"isStateValid\": {\n", + " \"3\": {},\n", + " \"6\": {},\n", + " \"8\": {},\n", + " \"Map\": {}\n", + " },\n", + " \"Distance\": {\n", + " \"3\": {},\n", + " \"6\": {},\n", + " \"8\": {},\n", + " \"Map\": {}\n", + " },\n", + " \"isCostBetterThan\": {\n", + " \"3\": {},\n", + " \"6\": {},\n", + " \"8\": {},\n", + " \"Map\": {}\n", + " },\n", + " \"less_operation\": {\n", + " \"3\": {},\n", + " \"6\": {},\n", + " \"8\": {},\n", + " \"Map\": {}\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5265f6c1-f6a9-445a-8422-facbe1996b7c", + "metadata": {}, + "outputs": [], + "source": [ + "# Total CPU Time\n", + "\n", + "# Instructions Retired\n", + "# IPC\n", + "\n", + "# L1 Bound\n", + "# L2 Bound\n", + "# L3 Bound\n", + "# DRAM Bound\n", + "\n", + "# Stores\n", + "# LLC Miss Count\n", + "\n", + "# --Per Function--\n", + "# Total CPU Time\n", + "# Total CPU-Self Time\n", + "\n", + "# LLC Miss Count\n", + " \n", + "# Instructions Retired\n", + "# Number of Cycles" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c1ef513b-3f91-4ee7-a5b5-90dd0fa2c658", + "metadata": {}, + "outputs": [], + "source": [ + "### Map\n", + "\n", + "# Total CPU Time: 1.208s\n", + "\n", + "# Instructions Retired: 8,595,720,000 (instructions that are correct and executed)\n", + "# Instructions Retired Per Cycle (IPC): 1.277 (IPC > 1 typical for instruction bound code)\n", + "\n", + "# Percentage of Clockticks that are L1 Bound: 11.5%\n", + "# Percentage of Clockticks that are L2 Bound: 1.6%\n", + "# Percentage of Clockticks that are L3 Bound: 1.5%\n", + "# Percentage of Clockticks that are DRAM Bound: 4.2%\n", + "\n", + "# Stores: 367,700,000\n", + "# LLC Miss Count: 515,206\n", + "\n", + "# Total CPU Time (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"Map\"][\"Total CPU Time\"] = \"224.044\"\n", + "functions[\"NearestNeighbor\"][\"Map\"][\"Total CPU Time\"] = \"146.433\"\n", + "functions[\"isStateValid\"][\"Map\"][\"Total CPU Time\"] = \"106.179\"\n", + "functions[\"Distance\"][\"Map\"][\"Total CPU Time\"] = \"105.180\"\n", + "functions[\"isCostBetterThan\"][\"Map\"][\"Total CPU Time\"] = \"54.737\"\n", + "functions[\"less_operation\"][\"Map\"][\"Total CPU Time\"] = \"99.087\"\n", + "\n", + "# Total CPU-Self Time (just this function alone) (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"Map\"][\"Total CPU-Self Time\"] = \"50.842\"\n", + "functions[\"NearestNeighbor\"][\"Map\"][\"Total CPU-Self Time\"] = \"46.347\"\n", + "functions[\"isStateValid\"][\"Map\"][\"Total CPU-Self Time\"] = \"102.083\"\n", + "functions[\"Distance\"][\"Map\"][\"Total CPU-Self Time\"] = \"105.180\"\n", + "functions[\"isCostBetterThan\"][\"Map\"][\"Total CPU-Self Time\"] = \"54.737\"\n", + "functions[\"less_operation\"][\"Map\"][\"Total CPU-Self Time\"] = \"99.087\"\n", + "\n", + "# LLC Miss Count\n", + "functions[\"Pop_Heap_Hole\"][\"Map\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"NearestNeighbor\"][\"Map\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"isStateValid\"][\"Map\"][\"LLC Miss Count\"] = \"320.128\"\n", + "functions[\"Distance\"][\"Map\"][\"LLC Miss Count\"] = \"10.004\"\n", + "functions[\"isCostBetterThan\"][\"Map\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"less_operation\"][\"Map\"][\"LLC Miss Count\"] = \"0\"\n", + "\n", + "# Instructions Retired\n", + "functions[\"Pop_Heap_Hole\"][\"Map\"][\"Instructions Retired\"] = \"6,353,480,000\"\n", + "functions[\"NearestNeighbor\"][\"Map\"][\"Instructions Retired\"] = \"4,525,920,000\"\n", + "functions[\"isStateValid\"][\"Map\"][\"Instructions Retired\"] = \"727,160,000\"\n", + "functions[\"Distance\"][\"Map\"][\"Instructions Retired\"] = \"3,255,280,000\"\n", + "functions[\"isCostBetterThan\"][\"Map\"][\"Instructions Retired\"] = \"2,000,320,000\"\n", + "functions[\"less_operation\"][\"Map\"][\"Instructions Retired\"] = \"2,321,480,000\"\n", + "\n", + "# CPU_CLK_UNHALTED.THREAD (Number of actual cycles)\n", + "functions[\"Pop_Heap_Hole\"][\"Map\"][\"Number of Cycles\"] = \"5,446,000,000\"\n", + "functions[\"NearestNeighbor\"][\"Map\"][\"Number of Cycles\"] = \"3,538,920,000\"\n", + "functions[\"isStateValid\"][\"Map\"][\"Number of Cycles\"] = \"2,283,400,000\"\n", + "functions[\"Distance\"][\"Map\"][\"Number of Cycles\"] = \"2,667,560,000\"\n", + "functions[\"isCostBetterThan\"][\"Map\"][\"Number of Cycles\"] = \"1,282,400,000\"\n", + "functions[\"less_operation\"][\"Map\"][\"Number of Cycles\"] = \"2,426,200,000\"" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6960233c-78ac-43a5-92d7-355d833f542b", + "metadata": {}, + "outputs": [], + "source": [ + "### Img3\n", + "\n", + "# Total CPU Time: 1.144s\n", + "\n", + "# Instructions Retired: 7,116,200,000 (instructions that are correct and executed)\n", + "# Instructions Retired Per Cycle (IPC): 1.276 (IPC > 1 typical for instruction bound code)\n", + "\n", + "# Percentage of Clockticks that are L1 Bound: 6.5%\n", + "# Percentage of Clockticks that are L2 Bound: 1.7%\n", + "# Percentage of Clockticks that are L3 Bound: 1.8%\n", + "# Percentage of Clockticks that are DRAM Bound: 4.3%\n", + "\n", + "# Stores: 339,800,000\n", + "# LLC Miss Count: 490,196\n", + "\n", + "# Total CPU Time (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"3\"][\"Total CPU Time\"] = \"267.095\"\n", + "functions[\"NearestNeighbor\"][\"3\"][\"Total CPU Time\"] = \"163.014\"\n", + "functions[\"isStateValid\"][\"3\"][\"Total CPU Time\"] = \"60.731\"\n", + "functions[\"Distance\"][\"3\"][\"Total CPU Time\"] = \"112.571\"\n", + "functions[\"isCostBetterThan\"][\"3\"][\"Total CPU Time\"] = \"61.829\"\n", + "functions[\"less_operation\"][\"3\"][\"Total CPU Time\"] = \"122.160\"\n", + "\n", + "# Total CPU-Self Time (just this function alone) (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"3\"][\"Total CPU-Self Time\"] = \"54.338\"\n", + "functions[\"NearestNeighbor\"][\"3\"][\"Total CPU-Self Time\"] = \"46.647\"\n", + "functions[\"isStateValid\"][\"3\"][\"Total CPU-Self Time\"] = \"57.434\"\n", + "functions[\"Distance\"][\"3\"][\"Total CPU-Self Time\"] = \"112.571\"\n", + "functions[\"isCostBetterThan\"][\"3\"][\"Total CPU-Self Time\"] = \"61.829\"\n", + "functions[\"less_operation\"][\"3\"][\"Total CPU-Self Time\"] = \"122.160\"\n", + "\n", + "# LLC Miss Count\n", + "functions[\"Pop_Heap_Hole\"][\"3\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"NearestNeighbor\"][\"3\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"isStateValid\"][\"3\"][\"LLC Miss Count\"] = \"240096\"\n", + "functions[\"Distance\"][\"3\"][\"LLC Miss Count\"] = \"10004\"\n", + "functions[\"isCostBetterThan\"][\"3\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"less_operation\"][\"3\"][\"LLC Miss Count\"] = \"0\"\n", + "\n", + "# Instructions Retired\n", + "functions[\"Pop_Heap_Hole\"][\"3\"][\"Instructions Retired\"] = \"8338400000\"\n", + "functions[\"NearestNeighbor\"][\"3\"][\"Instructions Retired\"] = \"5496400000\"\n", + "functions[\"isStateValid\"][\"3\"][\"Instructions Retired\"] = \"727720000\"\n", + "functions[\"Distance\"][\"3\"][\"Instructions Retired\"] = \"3916360000\"\n", + "functions[\"isCostBetterThan\"][\"3\"][\"Instructions Retired\"] = \"2516640000\"\n", + "functions[\"less_operation\"][\"3\"][\"Instructions Retired\"] = \"3039960000\"\n", + "\n", + "# CPU_CLK_UNHALTED.THREAD (Number of actual cycles)\n", + "functions[\"Pop_Heap_Hole\"][\"3\"][\"Number of Cycles\"] = \"7081200000\"\n", + "functions[\"NearestNeighbor\"][\"3\"][\"Number of Cycles\"] = \"4263560000\"\n", + "functions[\"isStateValid\"][\"3\"][\"Number of Cycles\"] = \"1921640000\"\n", + "functions[\"Distance\"][\"3\"][\"Number of Cycles\"] = \"3017560000\"\n", + "functions[\"isCostBetterThan\"][\"3\"][\"Number of Cycles\"] = \"1584240000\"\n", + "functions[\"less_operation\"][\"3\"][\"Number of Cycles\"] = \"3228400000\"" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "ee13e10e-a6a8-4b96-974f-e17acc12e495", + "metadata": {}, + "outputs": [], + "source": [ + "### Img6\n", + "\n", + "# Total CPU Time: 1.156s\n", + "\n", + "# Instructions Retired: 3,685,080,000 (instructions that are correct and executed)\n", + "# Instructions Retired Per Cycle (IPC): 1.199 (IPC > 1 typical for instruction bound code)\n", + "\n", + "# Percentage of Clockticks that are L1 Bound: 5.8%\n", + "# Percentage of Clockticks that are L2 Bound: 2.1%\n", + "# Percentage of Clockticks that are L3 Bound: 3.5%\n", + "# Percentage of Clockticks that are DRAM Bound: 4.7%\n", + "\n", + "# Stores: 97300000 \n", + "# LLC Miss Count: 460184\n", + "\n", + "# Total CPU Time (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"6\"][\"Total CPU Time\"] = \"199.372\"\n", + "functions[\"NearestNeighbor\"][\"6\"][\"Total CPU Time\"] = \"124.857\"\n", + "functions[\"isStateValid\"][\"6\"][\"Total CPU Time\"] = \"88.599\"\n", + "functions[\"Distance\"][\"6\"][\"Total CPU Time\"] = \"113.271\"\n", + "functions[\"isCostBetterThan\"][\"6\"][\"Total CPU Time\"] = \"49.643\"\n", + "functions[\"less_operation\"][\"6\"][\"Total CPU Time\"] = \"86.701\"\n", + "\n", + "# Total CPU-Self Time (just this function alone) (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"6\"][\"Total CPU-Self Time\"] = \"45.049\"\n", + "functions[\"NearestNeighbor\"][\"6\"][\"Total CPU-Self Time\"] = \"38.256\"\n", + "functions[\"isStateValid\"][\"6\"][\"Total CPU-Self Time\"] = \"84.304\"\n", + "functions[\"Distance\"][\"6\"][\"Total CPU-Self Time\"] = \"113.271\"\n", + "functions[\"isCostBetterThan\"][\"6\"][\"Total CPU-Self Time\"] = \"49.643\"\n", + "functions[\"less_operation\"][\"6\"][\"Total CPU-Self Time\"] = \"86.701\"\n", + "\n", + "# LLC Miss Count\n", + "functions[\"Pop_Heap_Hole\"][\"6\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"NearestNeighbor\"][\"6\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"isStateValid\"][\"6\"][\"LLC Miss Count\"] = \"235094\"\n", + "functions[\"Distance\"][\"6\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"isCostBetterThan\"][\"6\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"less_operation\"][\"6\"][\"LLC Miss Count\"] = \"0\"\n", + "\n", + "# Instructions Retired\n", + "functions[\"Pop_Heap_Hole\"][\"6\"][\"Instructions Retired\"] = \"5578720000\"\n", + "functions[\"NearestNeighbor\"][\"6\"][\"Instructions Retired\"] = \"3739120000\"\n", + "functions[\"isStateValid\"][\"6\"][\"Instructions Retired\"] = \"614880000\"\n", + "functions[\"Distance\"][\"6\"][\"Instructions Retired\"] = \"2615760000\"\n", + "functions[\"isCostBetterThan\"][\"6\"][\"Instructions Retired\"] = \"1769320000\"\n", + "functions[\"less_operation\"][\"6\"][\"Instructions Retired\"] = \"1993880000\"\n", + "\n", + "# CPU_CLK_UNHALTED.THREAD (Number of actual cycles)\n", + "functions[\"Pop_Heap_Hole\"][\"6\"][\"Number of Cycles\"] = \"5028240000\"\n", + "functions[\"NearestNeighbor\"][\"6\"][\"Number of Cycles\"] = \"3138520000\"\n", + "functions[\"isStateValid\"][\"6\"][\"Number of Cycles\"] = \"1653400000\"\n", + "functions[\"Distance\"][\"6\"][\"Number of Cycles\"] = \"2473520000\"\n", + "functions[\"isCostBetterThan\"][\"6\"][\"Number of Cycles\"] = \"1141000000\"\n", + "functions[\"less_operation\"][\"6\"][\"Number of Cycles\"] = \"2241400000\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "2d8b190c-c913-43f0-87bf-a6f2de2d599f", + "metadata": {}, + "outputs": [], + "source": [ + "### Img8\n", + "\n", + "# Total CPU Time: 1.204s\n", + "\n", + "# Instructions Retired: 6,670,160,000 (instructions that are correct and executed)\n", + "# Instructions Retired Per Cycle (IPC): 1.244 (IPC > 1 typical for instruction bound code)\n", + "\n", + "# Percentage of Clockticks that are L1 Bound: 5.2%\n", + "# Percentage of Clockticks that are L2 Bound: 2.1%\n", + "# Percentage of Clockticks that are L3 Bound: 3.1%\n", + "# Percentage of Clockticks that are DRAM Bound: 4.7%\n", + "\n", + "# Stores: 290,800,000 \n", + "# LLC Miss Count: 605,242\n", + "\n", + "# Total CPU Time (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"8\"][\"Total CPU Time\"] = \"255.208\"\n", + "functions[\"NearestNeighbor\"][\"8\"][\"Total CPU Time\"] = \"150.728\"\n", + "functions[\"isStateValid\"][\"8\"][\"Total CPU Time\"] = \"69.521\"\n", + "functions[\"Distance\"][\"8\"][\"Total CPU Time\"] = \"111.273\"\n", + "functions[\"isCostBetterThan\"][\"8\"][\"Total CPU Time\"] = \"58.833\"\n", + "functions[\"less_operation\"][\"8\"][\"Total CPU Time\"] = \"118.964\"\n", + "\n", + "# Total CPU-Self Time (just this function alone) (in ms)\n", + "functions[\"Pop_Heap_Hole\"][\"8\"][\"Total CPU-Self Time\"] = \"54.338\"\n", + "functions[\"NearestNeighbor\"][\"8\"][\"Total CPU-Self Time\"] = \"47.745\"\n", + "functions[\"isStateValid\"][\"8\"][\"Total CPU-Self Time\"] = \"64.726\"\n", + "functions[\"Distance\"][\"8\"][\"Total CPU-Self Time\"] = \"111.273\"\n", + "functions[\"isCostBetterThan\"][\"8\"][\"Total CPU-Self Time\"] = \"58.833\"\n", + "functions[\"less_operation\"][\"8\"][\"Total CPU-Self Time\"] = \"118.964\"\n", + "\n", + "# LLC Miss Count\n", + "functions[\"Pop_Heap_Hole\"][\"8\"][\"LLC Miss Count\"] = \"5002\"\n", + "functions[\"NearestNeighbor\"][\"8\"][\"LLC Miss Count\"] = \"5002\"\n", + "functions[\"isStateValid\"][\"8\"][\"LLC Miss Count\"] = \"305122\"\n", + "functions[\"Distance\"][\"8\"][\"LLC Miss Count\"] = \"20008\"\n", + "functions[\"isCostBetterThan\"][\"8\"][\"LLC Miss Count\"] = \"0\"\n", + "functions[\"less_operation\"][\"8\"][\"LLC Miss Count\"] = \"0\"\n", + "\n", + "# Instructions Retired\n", + "functions[\"Pop_Heap_Hole\"][\"8\"][\"Instructions Retired\"] = \"6665120000\"\n", + "functions[\"NearestNeighbor\"][\"8\"][\"Instructions Retired\"] = \"4431000000\"\n", + "functions[\"isStateValid\"][\"8\"][\"Instructions Retired\"] = \"644280000\"\n", + "functions[\"Distance\"][\"8\"][\"Instructions Retired\"] = \"3108840000\"\n", + "functions[\"isCostBetterThan\"][\"8\"][\"Instructions Retired\"] = \"2047080000\"\n", + "functions[\"less_operation\"][\"8\"][\"Instructions Retired\"] = \"2425360000\"\n", + "\n", + "# CPU_CLK_UNHALTED.THREAD (Number of actual cycles)\n", + "functions[\"Pop_Heap_Hole\"][\"8\"][\"Number of Cycles\"] = \"6034840000\"\n", + "functions[\"NearestNeighbor\"][\"8\"][\"Number of Cycles\"] = \"3689280000\"\n", + "functions[\"isStateValid\"][\"8\"][\"Number of Cycles\"] = \"1935920000\"\n", + "functions[\"Distance\"][\"8\"][\"Number of Cycles\"] = \"2889880000\"\n", + "functions[\"isCostBetterThan\"][\"8\"][\"Number of Cycles\"] = \"1338680000\"\n", + "functions[\"less_operation\"][\"8\"][\"Number of Cycles\"] = \"2693040000\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "080670fd-9bd7-44c5-b138-a9d180d82f11", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "7ed291c2-c643-41ed-9a70-8c45f68b69a0", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "428c324b-d060-451d-b5fd-55aae13e135d", + "metadata": {}, + "outputs": [], + "source": [ + "all_functions = [\"Pop_Heap_Hole\", \"NearestNeighbor\", \"isStateValid\", \"Distance\", \"isCostBetterThan\", \"less_operation\"]\n", + "all_inputs = [\"Map\", \"3\", \"6\", \"8\"]\n", + "data_plot1 = [\"Total CPU Time\", \"Total CPU-Self Time\"]\n", + "data_plot2 = [\"Instructions Retired\", \"Number of Cycles\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "04210dd6-73a2-4a82-b1f5-423f70556676", + "metadata": {}, + "outputs": [], + "source": [ + "mapping = {\n", + " \"3\": \"a\",\n", + " \"6\": \"b\",\n", + " \"8\": \"c\",\n", + " \"Map\": \"d\"\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "47fe3048-b2ce-470a-8c2a-6c3648c05e99", + "metadata": {}, + "outputs": [], + "source": [ + "input = \"Map\"\n", + "\n", + "intructions_retired = []\n", + "for function in all_functions:\n", + " intructions_retired.append(float(functions[function][input][\"Total CPU Time\"]))\n", + "\n", + "number_of_cycles = []\n", + "for function in all_functions:\n", + " number_of_cycles.append(float(functions[function][input][\"Total CPU-Self Time\"]) )" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "b929b8f9-4529-43c3-bcbd-bed9907b9f7d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[224.044, 146.433, 106.179, 105.18, 54.737, 99.087]\n", + "[50.842, 46.347, 102.083, 105.18, 54.737, 99.087]\n" + ] + } + ], + "source": [ + "print(intructions_retired)\n", + "print(number_of_cycles)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "9a560e28-b37f-4d38-93f7-20afa8ec19fc", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAosAAAHrCAYAAACn9tfQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAAC23klEQVR4nOzdd1gU1/s28HtBOgICUkVQsYCoGGzYUFFRsfcSK2qssUuMib13jS1qrAlfjbH32NCo2HvvgNIsCIpK2/P+4cv8XGEVERjYvT/XtZdO2TnPDMPuw2mjEEIIEBERERFlQEfuAIiIiIgo72KySERERERqMVkkIiIiIrWYLBIRERGRWkwWiYiIiEgtJotEREREpBaTRSIiIiJSi8kiEREREanFZJGIiIiI1GKySESkZXr06AEXFxe5wyCifILJIhFpvbVr10KhUOD8+fNyhwIAePv2LSZMmIDg4GC5QyEiYrJIRJTXvH37FhMnTmSySER5ApNFIiIiIlKLySIRUQZ69OgBU1NTPH36FC1btoSpqSkKFy6MkSNHIjU1Vdrv8ePHUCgUmDNnDubPnw9nZ2cYGRnBx8cH169fVzlmnTp1UKdOnQzLSutD+PjxYxQuXBgAMHHiRCgUCigUCkyYMAEAkJycjNu3byMyMjJT57F9+3Z4eHjA0NAQHh4e2LZt29dfDCLSagXkDoCIKK9KTU2Fn58fqlatijlz5uDQoUOYO3cuSpQogf79+6vsu379erx+/RoDBw7E+/fvsXDhQtSrVw/Xrl2Dra1tpsssXLgwli1bhv79+6NVq1Zo3bo1AKB8+fIAgKdPn8LNzQ3du3fH2rVrP3usf//9F23atIG7uzumT5+OFy9eoGfPnihSpMjXXQgi0mpMFomI1Hj//j06dOiAX3/9FQDQr18/fPfdd/jjjz/SJYv379/HvXv34OjoCABo1KgRqlatipkzZ2LevHmZLtPExARt27ZF//79Ub58eXz//fdZjj8wMBC2trY4ceIEzM3NAQA+Pj5o2LAhnJ2ds3xcItIubIYmIvqMfv36qSzXqlULDx8+TLdfy5YtpUQRAKpUqYKqVati79692RqPi4sLhBBfrFWMjIzE5cuX0b17dylRBIAGDRrA3d09W2MiIs3GZJGISA1DQ0Op/2CaQoUKITY2Nt2+JUuWTLeuVKlSePz4cU6F91mhoaEAMo6rdOnSuR0OEeVjTBaJiNTQ1dXN1uMpFIoM1388YIaIKK9hskhElA3u3buXbt3du3dVnpRSqFAhvHr1Kt1+abWAadQllV8jrU9iRnHduXPnm49PRNqDySIRUTbYvn07nj59Ki2fPXsWZ86cQePGjaV1JUqUwO3bt/Hs2TNp3ZUrV3Dy5EmVYxkbGwNAhollZqfOsbe3h6enJ9atW4e4uDhp/cGDB3Hz5s2vOjci0m4cDU1ElA1cXV1Rs2ZN9O/fH4mJiViwYAGsrKwwevRoaZ9evXph3rx58PPzQ0BAAGJiYrB8+XKULVsW8fHx0n5GRkZwd3fHpk2bUKpUKVhaWsLDwwMeHh5fNXXO9OnT4e/vj5o1a6JXr154+fIlfvvtN5QtWxZv3rzJqUtBRBqGNYtERNmgW7duGDx4MBYvXoypU6eibNmyOHLkCOzt7aV93NzcsH79esTFxWH48OHYuXMnNmzYgO+++y7d8VatWgVHR0cMGzYMnTp1wj///PPVMTVq1AibN29GamoqxowZg61bt2LNmjWoVKnSN50rEWkXhRBCyB0EEVF+9fjxYxQrVgyzZ8/GyJEj5Q6HiCjbsWaRiIiIiNRiskhEREREajFZJCIiIiK12GeRiIiIiNRizSIRERERqcVkkYiIiIjUYrJIlAcpFApMmDBB7jCI8q21a9dCoVDg/Pnzmdp/9uzZKF68OHR1deHp6ZmzwWVRcHAwFAoFgoOD5Q6FtAyTRdJaaV8maa8CBQrA0dERPXr0UHlsW07Zu3dvvkkIe/ToAYVCATMzM7x79y7d9nv37knXcc6cOTJESB+bNm0atm/fLncYX+Xx48fo2bMnSpQoAUNDQ9jZ2aF27doYP358jpf977//YvTo0ahRowbWrFmDadOm5XiZn7N06dIvPp2HKDfxcX+k9SZNmoRixYrh/fv3OH36NNauXYsTJ07g+vXrMDQ0zLFy9+7diyVLlmSYML579w4FCuStX88CBQrg7du32LVrF9q3b6+y7a+//oKhoSHev38vU3T0sWnTpqFt27Zo2bKl3KFkyv3791G5cmUYGRmhV69ecHFxQWRkJC5evIiZM2di4sSJOVr+kSNHoKOjgz/++AP6+vo5WlZmLF26FNbW1ujRo4fK+tq1a+Pdu3d5IkbSLnnr24hIBo0bN5Yef9a7d29YW1tj5syZ2LlzZ7qkKLfkZJKaVQYGBqhRowb+97//pbsuQUFB8Pf3x5YtW2SKLvu8ffsWxsbGcoehcRISEmBiYpLhtvnz5+PNmze4fPkynJ2dVbbFxMTkeGwxMTEwMjLK80mYjo5OnvxsIM3HZmiiT9SqVQsA8ODBA2ldnTp1UKdOnXT79ujRAy4uLtLy48ePpabYFStWoESJEjAwMEDlypVx7tw5lfctWbIEAFSawtN82mdxwoQJUCgUuHv3Lr7//nuYm5ujcOHC+PXXXyGEQHh4OFq0aAEzMzPY2dlh7ty56WJNTEzE+PHj4erqCgMDAzg5OWH06NFITEzM9LXp3Lkz9u3bh1evXknrzp07h3v37qFz584ZvufVq1cYOnQonJycYGBgAFdXV8ycORNKpVJlvzlz5qB69eqwsrKCkZERvLy8Mnwe8sGDB1GzZk1YWFjA1NQUpUuXxs8//yxtT+te8PjxY5X3ZdTfq06dOvDw8MCFCxdQu3ZtGBsbS8fK7PVSKBQYNGgQNm/eDHd3dxgZGcHb2xvXrl0DAPz+++9wdXWFoaEh6tSpky4uADhz5gwaNWoEc3NzGBsbw8fHBydPnlTZJ+0euH//Pnr06AELCwuYm5ujZ8+eePv2rUo8CQkJWLdunXRffVpDldF12bRpE37++WfY2dnBxMQEzZs3R3h4+DfFevPmTXTu3BmFChVCzZo11cbw4MEDFClSJF2iCAA2NjYqy+r687q4uGR4nm/fvsUPP/wAKysrmJmZoVu3boiNjVU53po1a5CQkCBdr7Vr10q/yxk1B6v7/fzSzybNn3/+iSpVqsDY2BiFChVC7dq18e+//0rncePGDRw7dkyKJ+2zR12fxc2bN8PLywtGRkawtrbG999/n64rTY8ePWBqaoqnT5+iZcuWMDU1ReHChTFy5Eikpqami5HoY6xZJPpE2pd5oUKFsnyMoKAgvH79Gj/88AMUCgVmzZqF1q1b4+HDh9DT08MPP/yAiIgIHDx4EBs2bMj0cTt06AA3NzfMmDEDe/bswZQpU2BpaYnff/8d9erVw8yZM/HXX39h5MiRqFy5MmrXrg0AUCqVaN68OU6cOIG+ffvCzc0N165dw/z583H37t1M929r3bo1+vXrh61bt6JXr17SuZYpUwbfffdduv3fvn0LHx8fPH36FD/88AOKFi2KU6dOYcyYMYiMjMSCBQukfRcuXIjmzZujS5cuSEpKwsaNG9GuXTvs3r0b/v7+AIAbN26gadOmKF++PCZNmgQDAwPcv38/XbLyNV68eIHGjRujY8eO+P7772Fra/vV1+u///7Dzp07MXDgQADA9OnT0bRpU4wePRpLly7FgAEDEBsbi1mzZqFXr144cuSI9N4jR46gcePG8PLywvjx46Gjo4M1a9agXr16+O+//1ClShWVstq3b49ixYph+vTpuHjxIlatWgUbGxvMnDkTALBhwwb07t0bVapUQd++fQEAJUqU+OJ1mDp1KhQKBQIDAxETE4MFCxagfv36uHz5MoyMjLIUa7t27VCyZElMmzYNn5vS19nZGYcOHcKRI0dQr169L8b6NQYNGgQLCwtMmDABd+7cwbJlyxAaGiolXhs2bMCKFStw9uxZrFq1CgBQvXr1LJX1pZ8NAEycOBETJkxA9erVMWnSJOjr6+PMmTM4cuQIGjZsiAULFmDw4MEwNTXF2LFjAQC2trZqy1y7di169uyJypUrY/r06YiOjsbChQtx8uRJXLp0CRYWFtK+qamp8PPzQ9WqVTFnzhwcOnQIc+fORYkSJdC/f/8snTNpCUGkpdasWSMAiEOHDolnz56J8PBw8c8//4jChQsLAwMDER4eLu3r4+MjfHx80h2je/fuwtnZWVp+9OiRACCsrKzEy5cvpfU7duwQAMSuXbukdQMHDhTqfgUBiPHjx0vL48ePFwBE3759pXUpKSmiSJEiQqFQiBkzZkjrY2NjhZGRkejevbu0bsOGDUJHR0f8999/KuUsX75cABAnT55Ue53SztPExEQIIUTbtm2Fr6+vEEKI1NRUYWdnJyZOnCid++zZs6X3TZ48WZiYmIi7d++qHO+nn34Surq6IiwsTFr39u1blX2SkpKEh4eHqFevnrRu/vz5AoB49uyZ2ljTfq6PHj1SWX/06FEBQBw9elRa5+PjIwCI5cuXq+z7NdcLgDAwMFAp7/fffxcAhJ2dnYiPj5fWjxkzRiU2pVIpSpYsKfz8/IRSqVS5FsWKFRMNGjSQ1qXdA7169VKJqVWrVsLKykplnYmJicrP/3PSroujo6NKrH///bcAIBYuXJjlWDt16pSpGK5fvy6MjIwEAOHp6SmGDBkitm/fLhISEtLt++nvRhpnZ2eVc067D7y8vERSUpK0ftasWQKA2LFjh7Tu4/s7Tdr9vGbNmi/GkNmfzb1794SOjo5o1aqVSE1NVdn342tatmzZDD9vPr2Hk5KShI2NjfDw8BDv3r2T9tu9e7cAIMaNG6dyjgDEpEmTVI5ZsWJF4eXlla4soo+xGZq0Xv369VG4cGE4OTmhbdu2MDExwc6dO1GkSJEsH7NDhw4qNZNpTdsPHz78plh79+4t/V9XVxeVKlWCEAIBAQHSegsLC5QuXVqlrM2bN8PNzQ1lypTB8+fPpVdaLc7Ro0czHUPnzp0RHByMqKgoHDlyBFFRUWqboDdv3oxatWqhUKFCKuXWr18fqampOH78uLRvWu0VAMTGxiIuLg61atXCxYsXVc4NAHbs2JGuGTurDAwM0LNnz3Rxf8318vX1VemOULVqVQBAmzZtULBgwXTr0342ly9flprwX7x4IZWTkJAAX19fHD9+PN159uvXT2W5Vq1aePHiBeLj47/hKgDdunVTibVt27awt7fH3r17sy1WdcqWLYvLly/j+++/x+PHj7Fw4UK0bNkStra2WLly5TedV9++faGnpyct9+/fHwUKFJDOKzt96Wezfft2KJVKjBs3Djo6ql+/H3dDyazz588jJiYGAwYMUOnL6O/vjzJlymDPnj2ZivFbP5dI87EZmrTekiVLUKpUKcTFxWH16tU4fvw4DAwMvumYRYsWVVlOSxw/7iuVHcc1NzeHoaEhrK2t061/8eKFtHzv3j3cunULhQsXzvC4XzOIoEmTJihYsCA2bdqEy5cvo3LlynB1dc2wL969e/dw9erVTJW7e/duTJkyBZcvX1bpF/jxl2iHDh2watUq9O7dGz/99BN8fX3RunVrtG3bNt2Xb2Y5OjqmG9jwtdcro58LADg5OWW4Pu0+uHfvHgCge/fuauOLi4tT+cPjc/eWmZmZ2uN8ScmSJVWWFQqFys81K7EWK1Ys0+WXKlUKGzZsQGpqKm7evIndu3dj1qxZ6Nu3L4oVK4b69et/xdn8n0/Py9TUFPb29hner9/qSz+bBw8eQEdHB+7u7tlSXmhoKACgdOnS6baVKVMGJ06cUFlnaGiY7p4uVKjQN38ukeZjskhar0qVKtJo6JYtW6JmzZro3Lkz7ty5A1NTUwAfvjhFBn2u1HUM19XVzXB9Rsf4GhkdNzNlKZVKlCtXDvPmzctw30+Tms8xMDBA69atsW7dOjx8+PCzc0UqlUo0aNAAo0ePznB7qVKlAHzo89e8eXPUrl0bS5cuhb29PfT09LBmzRoEBQVJ+xsZGeH48eM4evQo9uzZg/3792PTpk2oV68e/v33X+jq6qqtoVH3s/q4RvPjuL/meqn7GXzpZ5NWEzd79my1E0Gn3YOZPWZOyUqsGV3bL9HV1UW5cuVQrlw5eHt7o27duvjrr7++mCxm9yCNr72PAPl+NpmlLj6iL2GySPQRXV1dTJ8+HXXr1sXixYvx008/Afjw13dGTTVpf9lnRVaanbKqRIkSuHLlCnx9fbOl3M6dO2P16tXQ0dFBx44dP1vumzdvvvhFv2XLFhgaGuLAgQMqtbpr1qxJt6+Ojg58fX3h6+uLefPmYdq0aRg7diyOHj2K+vXrS7U5H4/YBr7uZ5Xd1+tz5QCAmZlZlmvOMpKVmNNqDtMIIXD//n2UL18eQM7F+jlpf8RFRkZK6woVKpTuZ5uUlKSyz8fu3buHunXrSstv3rxBZGQkmjRp8tmys+M++lSJEiWgVCpx8+bNzz4lJrM/v7TR43fu3Ek3MOjOnTsZji4nygr2WST6RJ06dVClShUsWLBAmmS6RIkSuH37Np49eybtd+XKlW8ahZs259ynX0Y5oX379nj69GmG/b/evXuHhISErzpe3bp1MXnyZCxevBh2dnafLTckJAQHDhxIt+3Vq1dISUkBAKlG8ONam8ePH6cbdfzy5ct0x0n70k1ruk5Laj7uD5mamooVK1Zk7uSQ/ddLHS8vL5QoUQJz5szBmzdv0m3/+H77GiYmJl99X61fvx6vX7+Wlv/55x9ERkaicePGORor8KFmOTk5Od36tH6FHzezlihRQuVnCwArVqxQW+O3YsUKlWMvW7YMKSkp0nmpY2ZmBmtr63RlLV269PMn8xktW7aEjo4OJk2alK5/58e1j5n9+VWqVAk2NjZYvny5SteNffv24datW9IsAkTfijWLRBkYNWoU2rVrh7Vr16Jfv37o1asX5s2bBz8/PwQEBCAmJgbLly9H2bJlszywwMvLCwDw448/ws/PD7q6up+tpfsWXbt2xd9//41+/frh6NGjqFGjBlJTU3H79m38/fffOHDggFSLkxk6Ojr45ZdfvrjfqFGjsHPnTjRt2hQ9evSAl5cXEhIScO3aNfzzzz94/PgxrK2t4e/vj3nz5qFRo0bo3LkzYmJisGTJEri6uuLq1avS8SZNmoTjx4/D398fzs7OiImJwdKlS1GkSBFpHr+yZcuiWrVqGDNmDF6+fAlLS0ts3LhRSkzluF7q6OjoYNWqVWjcuDHKli2Lnj17wtHREU+fPsXRo0dhZmaGXbt2ffVxvby8cOjQIcybNw8ODg4oVqyYNLhGHUtLS9SsWRM9e/ZEdHQ0FixYAFdXV/Tp0ydHYwWAmTNn4sKFC2jdurVUk3nx4kWsX78elpaWGDp0qLRv79690a9fP7Rp0wYNGjTAlStXcODAgXT9dtMkJSXB19cX7du3x507d7B06VLUrFkTzZs3/2JcvXv3xowZM9C7d29UqlQJx48fx927d7N0jgDg6uqKsWPHYvLkyahVqxZat24NAwMDnDt3Dg4ODpg+fTqADz+/ZcuWYcqUKXB1dYWNjU2GUwrp6elh5syZ6NmzJ3x8fNCpUydp6hwXFxcMGzYsy7ESqZBtHDaRzNKm1jh37ly6bampqaJEiRKiRIkSIiUlRQghxJ9//imKFy8u9PX1haenpzhw4IDaqXM+nj4mDT6ZbiMlJUUMHjxYFC5cWCgUCpVpdD7dN21qjk+njMloyg8hPkwJU7ZsWZV1SUlJYubMmaJs2bLCwMBAFCpUSHh5eYmJEyeKuLi4z14rdeV8TN25v379WowZM0a4uroKfX19YW1tLapXry7mzJmjMqXJH3/8IUqWLCkMDAxEmTJlxJo1a6TzTnP48GHRokUL4eDgIPT19YWDg4Po1KlTuql5Hjx4IOrXry8MDAyEra2t+Pnnn8XBgwcznDrn0+v0tdcLgBg4cGCmrkXa1CebN29WWX/p0iXRunVrYWVlJQwMDISzs7No3769OHz4sLSPunsgo6mCbt++LWrXri1NR/O5aXTSYvrf//4nxowZI2xsbISRkZHw9/cXoaGh6fb/lljVOXnypBg4cKDw8PAQ5ubmQk9PTxQtWlT06NFDPHjwQGXf1NRUERgYKKytrYWxsbHw8/MT9+/fVzt1zrFjx0Tfvn1FoUKFhKmpqejSpYt48eKFyjHV3d9v374VAQEBwtzcXBQsWFC0b99exMTEZPr3U900TqtXrxYVK1aU7isfHx9x8OBBaXtUVJTw9/cXBQsWFACkaXQymv5JCCE2bdokHc/S0lJ06dJFPHnyJFPn+OnvGFFGFELkkZ63RESU64KDg1G3bl1s3rwZbdu2lTscIsqD2GeRiIiIiNRiskhEREREajFZJCIiIiK12GeRiIiIiNRizSIRERERqcV5FvHhMVYREREoWLBgrj5Vg4iIiEguQgi8fv0aDg4O0NFRX3/IZBFARETEVz0bl4iIiEhThIeHo0iRImq3M1kEULBgQQAfLpaZmZnM0RARERHlvPj4eDg5OUl5kDpMFvF/D203MzNjskhERERa5Utd8DjAhYiIiIjUYrJIRERERGoxWSQiIiIitdhnMZOUSiWSkpLkDoOISOvo6elBV1dX7jCItBaTxUxISkrCo0ePoFQq5Q6FiEgrWVhYwM7OjnPhEsmAyeIXCCEQGRkJXV1dODk5fXbSSiIiyl5CCLx9+xYxMTEAAHt7e5kjItI+TBa/ICUlBW/fvoWDgwOMjY3lDoeISOsYGRkBAGJiYmBjY8MmaaJcxmqyL0hNTQUA6OvryxwJEZH2SvtjPTk5WeZIiLQPk8VMYj8ZIiL58DOYSD5MFomIiIhILSaLRERERKQWB7hkkctPe3K1vMcz/HO1vKxQKBTYtm0bWrZsKXcoWaYJ56BignkulxeXu+Vlgcb9jNVYu3Ythg4dilevXknrVqxYgcmTJ+Pp06eYN28ehg4d+tXH1ZbrR0T/hzWLGkihUHz2NWHCBLXvffz4MRQKBS5fvpwjsUVFRWHw4MEoXrw4DAwM4OTkhGbNmuHw4cPSPi4uLlKsJiYm+O6777B582Zpe48ePTL8ogoODoZCoVD5ckyzdu3aL16Xx48fIzIyEo0bN86JU6dP8D59pbb8t2/fYsyYMShRogQMDQ1RuHBh+Pj4YMeOHVk+p/j4eAwaNAiBgYF4+vQp+vbtq7KdvyNEpA5rFjVQZGSk9P9NmzZh3LhxuHPnjrTO1NRUjrDw+PFj1KhRAxYWFpg9ezbKlSuH5ORkHDhwAAMHDsTt27elfSdNmoQ+ffogPj4ec+fORYcOHeDo6Ijq1atnqewOHTqgUaNG0nLr1q3h4eGBSZMmSesKFy7MKTlyEe9T9fr164czZ87gt99+g7u7O168eIFTp07hxYsXWT5mWFgYkpOT4e/vn+FchfwdISJ1WLOogezs7KSXubk5FAqFtGxjY4N58+ahSJEiMDAwgKenJ/bv3y+9t1ixYgCAihUrQqFQoE6dOgCAc+fOoUGDBrC2toa5uTl8fHxw8eLFr4prwIABUCgUOHv2LNq0aYNSpUqhbNmyGD58OE6fPq2yb8GCBWFnZ4dSpUphyZIlMDIywq5du7J8TYyMjFSui76+PoyNjVXW6erqQqFQYPv27QD+r/bq77//Rq1atWBkZITKlSvj7t27OHfuHCpVqgRTU1M0btwYz549Uylv1apVcHNzg6GhIcqUKYOlS5dmOXZNxftUvZ07d+Lnn39GkyZN4OLiAi8vLwwePBi9evWS9klMTMTIkSPh6OgIExMTVK1aFcHBwRkeb+3atShXrhwAoHjx4lIt4cf4O0JE6jBZ1DILFy7E3LlzMWfOHFy9ehV+fn5o3rw57t27BwA4e/YsAODQoUOIjIzE1q1bAQCvX79G9+7dceLECZw+fRolS5ZEkyZN8Pr160yV+/LlS+zfvx8DBw6EiYlJuu0WFhZq31ugQAHo6enJ9mzu8ePH45dffsHFixdRoEABdO7cGaNHj8bChQvx33//4f79+xg3bpy0/19//YVx48Zh6tSpuHXrFqZNm4Zff/0V69atkyX+/Ejb71M7Ozvs3bv3s3EPGjQIISEh2LhxI65evYp27dqhUaNG0jX6WIcOHXDo0CEAH65dZGQknJycvjnONPwdIdJsbIbWMnPmzEFgYCA6duwIAJg5cyaOHj2KBQsWYMmSJShcuDAAwMrKCnZ2dtL76tWrp3KcFStWwMLCAseOHUPTpk2/WO79+/chhECZMmW+Kt6kpCTMnTsXcXFx6WLILSNHjoSfnx8AYMiQIejUqRMOHz6MGjVqAAACAgKwdu1aaf/x48dj7ty5aN26NYAPtWA3b97E77//ju7du+d6/PmRtt+nK1asQJcuXWBlZYUKFSqgZs2aaNu2rXTPhYWFYc2aNQgLC4ODgwOAD/fp/v37sWbNGkybNk3leEZGRrCysgLwoSn542uWHfg7QqTZWLOoReLj4xERESF9gKepUaMGbt269dn3RkdHo0+fPihZsiTMzc1hZmaGN2/eICwsLFNlCyG+KtbAwECYmprC2NgYM2fOxIwZM+DvL8+I8PLly0v/t7W1BQCpSS9tXdpzaxMSEvDgwQMEBATA1NRUek2ZMgUPHjzI3cDzKW26T8PCwlTuk7Qkr3bt2nj48CEOHz6Mtm3b4saNG6hVqxYmT54MALh27RpSU1NRqlQplfcfO3ZMlvuMvyNEmo01i5Qp3bt3x4sXL7Bw4UI4OzvDwMAA3t7emW5yK1myJBQKhcrggM8ZNWoUevToAVNTU9ja2qo8vcHMzAyhoaHp3vPq1Svo6upm2Hz4LfT09KT/p8Xx6TqlUgkAePPmDQBg5cqVqFq1qspxODAg5+W3+9TU1FRlRLelpaX0fz09PdSqVQu1atVCYGAgpkyZgkmTJiEwMBBv3ryBrq4uLly4kO6+kmNgEH9HiDQbaxa1iJmZGRwcHHDy5EmV9SdPnoS7uzuA/3sGdtozsT/e58cff0STJk1QtmxZGBgY4Pnz55ku29LSEn5+fliyZAkSEhLSbf90GhFra2u4urrCzs4u3WO+SpcujRs3biAxMVFl/cWLF1GsWDGVL6ncZmtrCwcHBzx8+BCurq4qr7RBGfR52nSfFihQQOUe+ThZ/JS7uztSUlLw/v17VKxYEampqYiJiUl3n2V3E3N24+8IUf7DZFHLjBo1CjNnzsSmTZtw584d/PTTT7h8+TKGDBkCALCxsYGRkRH279+P6OhoxMV9mGS5ZMmS2LBhA27duoUzZ86gS5cuMDIy+qqylyxZgtTUVFSpUgVbtmzBvXv3cOvWLSxatAje3t6ZPk6XLl2gUCjQrVs3XLhwAffv38fq1auxYMECjBgx4qtiygkTJ07E9OnTsWjRIty9exfXrl3DmjVrMG/ePLlDyze0/T6tU6cOfv/9d1y4cAGPHz/G3r178fPPP6Nu3bowMzNDqVKl0KVLF3Tr1g1bt27Fo0ePcPbsWUyfPh179uTuAwOygr8jRPmMkNHSpUtFuXLlRMGCBUXBggVFtWrVxN69e6XtPj4+AoDK64cfflA5RmhoqGjSpIkwMjIShQsXFiNHjhTJyclfFUdcXJwAIOLi4tJte/funbh586Z49+5d1k5SZmvWrBHm5ubScmpqqpgwYYJwdHQUenp6okKFCmLfvn0q71m5cqVwcnISOjo6wsfHRwghxMWLF0WlSpWEoaGhKFmypNi8ebNwdnYW8+fPl94HQGzbtu2z8URERIiBAwcKZ2dnoa+vLxwdHUXz5s3F0aNHpX0+PW5G7ty5I1q1aiUcHByEiYmJqFChgli5cqVQKpWZuCof7q0hQ4akW//xOTx69EgAEJcuXZK2Hz16VAAQsbGx0rpPr7EQQvz111/C09NT6Ovri0KFConatWuLrVu3Zio2bcT7VNW0adOEt7e3sLS0FIaGhqJ48eLixx9/FM+fP5f2SUpKEuPGjRMuLi5CT09P2Nvbi1atWomrV68KIdJf00uXLgkA4tGjR58tO01e+x3J75/FRHnR5/KfjymE+Moe3dlo165d0NXVRcmSJSGEwLp16zB79mxcunQJZcuWRZ06dVCqVCmVSWGNjY1hZmYG4EMTlKenJ+zs7DB79mxERkaiW7du6NOnT7rRgJ8THx8Pc3NzxMXFScdO8/79ezx69AjFihWDoaFh9pw4ERF9FX4WE2W/z+U/H5N1gEuzZs1UlqdOnYply5bh9OnTKFu2LABIk8Jm5N9//8XNmzdx6NAh2NrawtPTE5MnT0ZgYCAmTJgg9WsiIiIioqzJM30WU1NTsXHjRiQkJKj0C/rrr79gbW0NDw8PjBkzBm/fvpW2hYSEoFy5ctJUDQDg5+eH+Ph43LhxQ21ZiYmJiI+PV3kRERERUXqyT51z7do1eHt74/379zA1NcW2bdukEY+dO3eGs7MzHBwccPXqVQQGBuLOnTvS0xqioqJUEkXg/+b4ioqKUlvm9OnTMXHixBw6IyIiIiLNIXuyWLp0aVy+fBlxcXH4559/0L17dxw7dgzu7u7o27evtF+5cuVgb28PX19fPHjwACVKlMhymWPGjMHw4cOl5fj4+Gx99BURERGRppC9GVpfXx+urq7w8vLC9OnTUaFCBSxcuDDDfdMmcL1//z6AD89PjY6OVtknbflzc40ZGBjAzMxM5fUlMo4DIiLSevwMJpKP7Mnip5RKZbpJbNOkPenA3t4eAODt7Y1r165Jj5ECgIMHD8LMzExqyv5WaU8UyOwTIIiIKPul9VeXc9J9Im0lazP0mDFj0LhxYxQtWhSvX79GUFAQgoODceDAATx48ABBQUFo0qQJrKyscPXqVQwbNgy1a9eWnkPasGFDuLu7o2vXrpg1axaioqLwyy+/YODAgTAwMMiWGAsUKABjY2M8e/YMenp60NHJc/k1EZHGEkLg7du3iImJgYWFBR8JSCQDWZPFmJgYdOvWDZGRkTA3N0f58uVx4MABNGjQAOHh4Th06BAWLFiAhIQEODk5oU2bNvjll1+k9+vq6mL37t3o378/vL29YWJigu7du6vMy/itFAoF7O3t8ejRowyf80pERDnPwsIizz/KkEhTyTopd16RmUkplUolm6KJiGSgp6fHGkWiHJAvJuXOT3R0dPjUACIiItI67IBHRERERGoxWSQiIiIitZgsEhEREZFaTBaJiIiISC0mi0RERESkFpNFIiIiIlKLySIRERERqcVkkYiIiIjUYrJIRERERGoxWSQiIiIitZgsEhEREZFaTBaJiIiISC0mi0RERESkFpNFIiIiIlKLySIRERERqcVkkYiIiIjUYrJIRERERGoxWSQiIiIitZgsEhEREZFaTBaJiIiISC0mi0RERESkFpNFIiIiIlKLySIRERERqcVkkYiIiIjUYrJIRERERGoxWSQiIiIitZgsEhEREZFaTBaJiIiISC0mi0RERESkFpNFIiIiIlKLySIRERERqcVkkYiIiIjUYrJIRERERGoxWSQiIiIitWRNFpctW4by5cvDzMwMZmZm8Pb2xr59+6Tt79+/x8CBA2FlZQVTU1O0adMG0dHRKscICwuDv78/jI2NYWNjg1GjRiElJSW3T4WIiIhII8maLBYpUgQzZszAhQsXcP78edSrVw8tWrTAjRs3AADDhg3Drl27sHnzZhw7dgwRERFo3bq19P7U1FT4+/sjKSkJp06dwrp167B27VqMGzdOrlMiIiIi0igKIYSQO4iPWVpaYvbs2Wjbti0KFy6MoKAgtG3bFgBw+/ZtuLm5ISQkBNWqVcO+ffvQtGlTREREwNbWFgCwfPlyBAYG4tmzZ9DX18+wjMTERCQmJkrL8fHxcHJyQlxcHMzMzHL+JImIiIhkFh8fD3Nz8y/mP3mmz2Jqaio2btyIhIQEeHt748KFC0hOTkb9+vWlfcqUKYOiRYsiJCQEABASEoJy5cpJiSIA+Pn5IT4+XqqdzMj06dNhbm4uvZycnHLuxIiIiIjyMdmTxWvXrsHU1BQGBgbo168ftm3bBnd3d0RFRUFfXx8WFhYq+9va2iIqKgoAEBUVpZIopm1P26bOmDFjEBcXJ73Cw8Oz96SIiIiINEQBuQMoXbo0Ll++jLi4OPzzzz/o3r07jh07lqNlGhgYwMDAIEfLICIiItIEsieL+vr6cHV1BQB4eXnh3LlzWLhwITp06ICkpCS8evVKpXYxOjoadnZ2AAA7OzucPXtW5Xhpo6XT9iEiIiKirJO9GfpTSqUSiYmJ8PLygp6eHg4fPixtu3PnDsLCwuDt7Q0A8Pb2xrVr1xATEyPtc/DgQZiZmcHd3T3XYyciIiLSNLLWLI4ZMwaNGzdG0aJF8fr1awQFBSE4OBgHDhyAubk5AgICMHz4cFhaWsLMzAyDBw+Gt7c3qlWrBgBo2LAh3N3d0bVrV8yaNQtRUVH45ZdfMHDgQDYzExEREWUDWZPFmJgYdOvWDZGRkTA3N0f58uVx4MABNGjQAAAwf/586OjooE2bNkhMTISfnx+WLl0qvV9XVxe7d+9G//794e3tDRMTE3Tv3h2TJk2S65SIiIiINEqem2dRDpmdZ4iIiIhIU+S7eRaJiIiIKO9hskhEREREajFZJCIiIiK1mCzmI48ePUJKSorcYRAREZEWYbKYj5QuXRr37t2TOwwiIiLSIrI/wYXSa926dYbrU1NT8eOPP6JgwYIAgK1bt+ZmWERERKSFWLOYB23fvh0vX76Eubm5ygsATE1NVZaJiIiIchLnWUTem2dx48aNGDVqFCZNmoSePXtK6/X09HDlyhU+ypCIiIi+GedZzMc6duyI//77D3/88QfatGmD2NhYuUMiIiIiLcVkMY9ycXHB8ePH4eHhgQoVKuDAgQNQKBRyh0VERERahgNc8jAdHR1MnDgRDRo0QLdu3ThtDhEREeU6Jov5QM2aNXH16lU8ePAArq6ucodDREREWoTN0PmEqakpLl26hHfv3skdChEREWkRJov5SN++fRERESF3GERERKRF2AydB1laWma4PiUlBd7e3tDR+ZDjv3z5MjfDIiIiIi3EZDEPSk5Oho+PD9q1ayetE0Kgd+/eGD16NBwdHWWMjoiIiLQJJ+VG3puU+/79++jcuTPc3NywZMkSmJqaAuCk3ERERJR9OCl3Pubq6opTp07Bzs4Onp6eOHnypNwhERERkZZiM3QeVaBAAcycORN+fn7o3LkzunTpwkm5iYiIKNexZjGPq1evHi5evIjbt2/DxMQEurq6codEREREWoQ1i/mAlZUVtm7dKncYREREpIWYLOZhUVFROHPmDKKiogAA9vb2qFKlCuzs7GSOjIiIiLQFk8U8KCEhAT/88AM2btwIhUIhzbv48uVLCCHQqVMn/P777zA2NpY5UiIiItJ07LOYBw0ZMgRnz57Fnj178P79e0RHRyM6Ohrv37/H3r17cfbsWQwZMkTuMImIiEgLcJ5F5L15FgsVKoQ9e/agevXqGW4/efIkmjZtitjY2FyOjIiIiDQF51nMx5RKJfT19dVu19fXh1KpzMWIiIiISFsxWcyDmjZtir59++LSpUvptl26dAn9+/dHs2bNZIiMiIiItA2TxTxo8eLFsLW1hZeXF6ysrODm5gY3NzdYWVmhUqVKsLGxweLFi+UOk4iIiLQAR0PnQYUKFcK+fftw+/ZthISESFPn2NnZwdvbG2XKlJE5QiIiItIWTBbzsDJlyjAxJCIiIlmxGTofioyMRFhYmNxhEBERkRZgspgP1atXD8WKFZM7DCIiItICbIbOh9avX4+3b9/KHQYRERFpASaL+VDlypXlDoGIiIi0hKzN0NOnT0flypVRsGBB2NjYoGXLlrhz547KPnXq1IFCoVB59evXT2WfsLAw+Pv7w9jYGDY2Nhg1ahRSUlJy81RyxcSJE/H8+XO5wyAiIiIt8tU1i0qlEseOHcN///2H0NBQvH37FoULF0bFihVRv359ODk5ZfpYx44dw8CBA1G5cmWkpKTg559/RsOGDXHz5k2YmJhI+/Xp0weTJk2Slo2NjaX/p6amwt/fH3Z2djh16hQiIyPRrVs36OnpYdq0aV97enlCfHx8unVCCEydOhWNGzeWnu6SFx5NSERERJot08+GfvfuHebOnYtly5bh5cuX8PT0hIODA4yMjPDy5Utcv34dERERaNiwIcaNG4dq1ap9dTDPnj2DjY0Njh07htq1awP4ULPo6emJBQsWZPieffv2oWnTpoiIiICtrS0AYPny5QgMDMSzZ88++9i8NHnt2dC6uroZrhdCQKFQSP+mpqbmcmRERESkKTKb/2S6ZrFUqVLw9vbGypUr0aBBA+jp6aXbJzQ0FEFBQejYsSPGjh2LPn36fFXQcXFxAABLS0uV9X/99Rf+/PNP2NnZoVmzZvj111+l2sWQkBCUK1dOShQBwM/PD/3798eNGzdQsWLFdOUkJiYiMTFRWs6oJk9O9vb28PT0xIgRI6Cj86GngBAC9evXx6pVqzgSmoiIiHJNpmsWb926BTc3t0wdNDk5GWFhYShRokSmA1EqlWjevDlevXqFEydOSOtXrFgBZ2dnODg44OrVqwgMDESVKlWwdetWAEDfvn0RGhqKAwcOSO95+/YtTExMsHfvXjRu3DhdWRMmTMDEiRPTrc8rNYsvX75EQEAA4uLisGHDBjg6OgIA9PT0cOXKFbi7u8scIREREeV32V6zmNlEEfiQ1HxNoggAAwcOxPXr11USReBDMpimXLlysLe3h6+vLx48ePDVZaQZM2YMhg8fLi3Hx8d/VV/LnGZpaYlt27Zh2bJlqFKlCubMmYNOnTrJHRYRERFpoSyNht6/f79KUrdkyRJ4enqic+fOiI2N/erjDRo0CLt378bRo0dRpEiRz+5btWpVAMD9+/cBfHhecnR0tMo+act2dnYZHsPAwABmZmYqr7yof//+OHjwIGbOnInOnTvLHQ4RERFpoSwli6NGjZL6+V27dg0jRoxAkyZN8OjRI5Uauy8RQmDQoEHYtm0bjhw5kqm+eJcvXwbwoV8fAHh7e+PatWuIiYmR9jl48CDMzMw0ornW3d0dZ8+ehZ2dHTw8PGBkZCR3SERERKRFMt1n8WOmpqa4fv06XFxcMGHCBFy/fh3//PMPLl68iCZNmiAqKipTxxkwYACCgoKwY8cOlC5dWlpvbm4OIyMjPHjwAEFBQWjSpAmsrKxw9epVDBs2DEWKFMGxY8cAfJg6J21k9qxZsxAVFYWuXbuid+/emZ46J6+NhiYiIiLKaZnNf7JUs6ivry89bu7QoUNo2LAhgA997b5mZPGyZcsQFxeHOnXqwN7eXnpt2rRJKift+GXKlMGIESPQpk0b7Nq1SzqGrq4udu/eDV1dXXh7e+P7779Ht27dVOZlzK+USqXa9WFhYbkcDREREWmjLD3ur2bNmhg+fDhq1KiBs2fPSsnd3bt3v9jn8GNfqtR0cnKSahA/x9nZGXv37s10uXldfHw8evfujV27dsHMzAw//PADxo8fL82/+OzZMxQrVozzLBIREVGOy1LN4uLFi1GgQAH8888/WLZsmTS1y759+9CoUaNsDVAb/frrr7hy5Qo2bNiAqVOnYv369WjRogWSkpKkfbLQe4CIiIjoq2Wpz6KmyWt9Fp2dnbFu3TrUqVMHAPD8+XP4+/vDwsICO3fuxKtXr+Dg4MCaRSIiIsqybJ9nMSMxMTGIiYlJ17eufPny33JYrffs2TM4OztLy9bW1jh06BD8/PzQpEkTrFq1SsboiIiISJtkKVm8cOECunfvjlu3bknNoXxmcfYpWrQobt26pTKVUMGCBfHvv/+iYcOGaNWqlYzRERERkTbJUp/FXr16oVSpUjh16hQePnyIR48eqfxL36Zhw4ZYs2ZNuvWmpqY4cOAADA0NZYiKiIiItFGW+iwWLFgQly5dgqura07ElOvyWp/F2NhYREREoGzZshluf/36NS5evAgfH59cjoyIiIg0RY7Os+jr64srV65kOTj6vEKFCqlNFIEPyToTRSIiIsoNWeqzuGrVKnTv3h3Xr1+Hh4cH9PT0VLY3b948W4LTZu/evcOFCxdgaWmZ7rGF79+/x99//41u3brJFB0RERFpiyw1Q+/atQtdu3bN8Gkt+XGAS15rhr579y4aNmyIsLAwKBQK1KxZExs3bpSehx0dHc2pc4iIiOib5Ggz9ODBg/H9998jMjISSqVS5cUE5tsFBgbCw8MDMTExuHPnDgoWLIgaNWrwEX9ERESU67KULL548QLDhg2Dra1tdsdDAE6dOoXp06fD2toarq6u2LVrF/z8/FCrVi2ONiciIqJclaVksXXr1jh69Gh2x0L/37t371CgwP91J1UoFFi2bBmaNWsGHx8f3L17V8boiIiISJtkaYBLqVKlMGbMGJw4cQLlypVLN8Dlxx9/zJbgtFWZMmVw/vx5uLm5qaxfvHgxAA4gIiIiotyTpQEuHz9ZJN0BFYp811Sa1wa4TJ8+Hf/99x/27t2b4fYBAwZg+fLl6R6zSERERJRZmc1/spQsapq8liwSERER5bQcHQ1NRERERNoh08nijBkz8O7du0zte+bMGezZsyfLQRERERFR3pDpAS43b95E0aJF0a5dOzRr1gyVKlVC4cKFAQApKSm4efMmTpw4gT///BMRERFYv359jgWdn7n8JE8S/XiGvyzlEhERUf6W6WRx/fr1uHLlChYvXozOnTsjPj4eurq6MDAwwNu3bwEAFStWRO/evdGjRw8YGhrmWNBERERElDu+auqcChUqYOXKlfj9999x9epVhIaG4t27d7C2toanpyesra1zKk4iIiIikkGW5lnU0dGBp6cnPD09szkcIiIiIspLOBqaiIiIiNRiskhEREREajFZJCIiIiK1mCwSERERkVrZkizGx8dj+/btuHXrVnYcjoiIiIjyiCwli+3bt8fixYsBAO/evUOlSpXQvn17lC9fHlu2bMnWAImIiIhIPllKFo8fP45atWoBALZt2wYhBF69eoVFixZhypQp2RogEREREcknS8liXFwcLC0tAQD79+9HmzZtYGxsDH9/f9y7dy9bAyQiIiIi+WQpWXRyckJISAgSEhKwf/9+NGzYEAAQGxvLx/wRERERaZAsPcFl6NCh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uwcHBwcYGhrC29sb06dPR9GiRXHhwgUkJyejfv360r5lypRB0aJFERIS8tlkMTExEYmJidJyfHx8jp5DnjDBXMay2dclszp27IiaNWviwoULcHZ2ljscIiKivN0MXbVqVaxduxb79+/HsmXL8OjRI9SqVQuvX79GVFQU9PX1040itbW1RVRU1GePO336dJibm0svJyenHDwLoq9TpEgRtGjRAiYmJnKHQkRElLdrFhs3biz9v3z58qhatSqcnZ3x999/w8jIKMvHHTNmjMr8dvHx8UwYiYiIiDKQp2sWP2VhYYFSpUrh/v37sLOzQ1JSEl69eqWyT3R0dIZ9HD9mYGAAMzMzlRcRERERpZenaxY/9ebNGzx48ABdu3aFl5cX9PT0cPjwYbRp0wYAcOfOHYSFhcHb21vmSIkgXz9R9hElIqJslKeTxZEjR6JZs2ZwdnZGREQExo8fD11dXXTq1Anm5uYICAjA8OHDYWlpCTMzMwwePBje3t4cCU1ERESUTfJ0svjkyRN06tQJL168QOHChVGzZk2cPn0ahQsXBgDMnz8fOjo6aNOmjcqk3ERERESUPfJ0srhx48bPbjc0NMSSJUuwZMmSXIqIiIiISLvkqwEuRERERJS7mCwSERERkVpMFomIiIhILSaLRERERKQWk0UiIiIiUovJIhERERGpxWSRiIiIiNRiskhEREREajFZJCIiIiK1mCwSERERkVpMFomIiIhILSaLRERERKQWk0UiIiIiUovJIhERERGpxWSRiIiIiNRiskhEREREajFZJCIiIiK1mCwSERERkVpMFomIiIhILSaLRERERKQWk0UiIiIiUovJIhERERGpxWSRiIiIiNRiskhEREREajFZJCIiIiK1mCwSERERkVpMFomIiIhILSaLRERERKQWk0UiIiIiUovJIhERERGpxWSRiIiIiNRiskhEREREajFZJCIiIiK1mCwSERERkVoakywuWbIELi4uMDQ0RNWqVXH27Fm5QyIiIiLK9zQiWdy0aROGDx+O8ePH4+LFi6hQoQL8/PwQExMjd2hERERE+ZpGJIvz5s1Dnz590LNnT7i7u2P58uUwNjbG6tWr5Q6NiIiIKF8rIHcA3yopKQkXLlzAmDFjpHU6OjqoX78+QkJCMnxPYmIiEhMTpeW4uDgAQHx8fM4GC0CZ+DbHy8hIvELIUu6H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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "data_points = {\n", + " 'Total CPU Time': intructions_retired,\n", + " 'Total CPU-Self Time': number_of_cycles\n", + "}\n", + "\n", + "x = np.arange(len(all_functions)) # the label locations\n", + "width = 0.33 # the width of the bars\n", + "multiplier = .5\n", + "\n", + "fig, ax = plt.subplots(layout='constrained')\n", + "\n", + "for attribute, measurement in data_points.items():\n", + " offset = width * multiplier\n", + " rects = ax.bar(x + offset, measurement, width, label=attribute)\n", + " ax.bar_label(rects, padding=3, rotation=90)\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "ax.set_ylabel('Milliseconds (ms)')\n", + "ax.set_title(f'Input: {mapping[input]}\\nRuntime Measurement per Subfunction')\n", + "ax.set_xticks(x + width, all_functions, rotation=30)\n", + "ax.legend(loc='upper left', ncols=3)\n", + "ax.set_ylim(0, 380)\n", + "\n", + "plt.savefig(f'figures/{input}_measurement_data.png')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c26a043-563a-47d9-aaa8-06882acd943d", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 172, + "id": "05e97dc2-24dd-43b3-a95c-f50937c78dd1", + "metadata": {}, + "outputs": [], + "source": [ + "input = \"8\"\n", + "\n", + "llc_miss_counts = []\n", + "for function in all_functions:\n", + " llc_miss_counts.append(int(functions[function][input][\"LLC Miss Count\"]))\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 173, + "id": "5a2033cd-ac02-49e9-96d2-00b67382ad26", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[5002, 5002, 305122, 20008, 0, 0]" + ] + }, + "execution_count": 173, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "llc_miss_counts" + ] + }, + { + "cell_type": "code", + "execution_count": 174, + "id": "076dd7a5-b33c-4006-a3e7-537ebaead5ae", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAosAAAHrCAYAAACn9tfQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/SrBM8AAAACXBIWXMAAA9hAAAPYQGoP6dpAACmtUlEQVR4nOzdd1QU19sH8O+CAgpSRBBQBDsiCoqKxB6NqJiosWCJYo8GG9ijscVujCUW0hRjYjT+LIkNNdgSxYYxVowFRYNgoygqbZ/3D8/O6wqraJBd4Ps5Z4/OzJ2ZZy7L8uyde++oRERARERERJQDI30HQERERESGi8kiEREREenEZJGIiIiIdGKySEREREQ6MVkkIiIiIp2YLBIRERGRTkwWiYiIiEgnJotEREREpBOTRSIiIiLSickiEREREenEZJGI6DlhYWFQqVQ4efKkvkMBADx+/BjTpk3DgQMH9B0KERVRTBaJiAzY48ePMX36dCaLRKQ3TBaJiIiISCcmi0REr9C3b19YWFjg33//RceOHWFhYQE7OzuMGTMGWVlZSrnr169DpVLhiy++wKJFi+Di4oISJUqgWbNmOHfunNYxmzdvjubNm+d4LldXV+V4dnZ2AIDp06dDpVJBpVJh2rRpAICMjAxER0fj9u3bubqO6OhodOvWDXZ2dihRogSqV6+OSZMmvX6FEFGRUkzfARARFQRZWVnw8/ODj48PvvjiC/z+++9YuHAhKleujKFDh2qV/eGHH/Dw4UMEBQXh6dOnWLJkCd59912cPXsWZcuWzfU57ezssHLlSgwdOhSdOnXChx9+CACoXbs2AODff/9FjRo1EBgYiLCwsJce68yZM2jSpAmKFy+OwYMHw9XVFVevXsW2bdswa9as16sMIipSmCwSEeXC06dPERAQgM8++wwAMGTIENStWxfff/99tmTxypUruHz5MsqVKwcAaNOmDXx8fDBv3jx8+eWXuT6nubk5unTpgqFDh6J27dr46KOP3jj+4cOHQ0Rw6tQpVKhQQVk/d+7cNz4mERUNvA1NRJRLQ4YM0Vpu0qQJrl27lq1cx44dlUQRABo0aAAfHx/s3LkzT+NxdXWFiLyyVfHu3bs4dOgQ+vfvr5UoAoBKpcrTmIio8GGySESUC2ZmZkr/QQ0bGxskJiZmK1u1atVs66pVq4br16+/rfBeSpPQenh46OX8RFSwMVkkIsoFY2PjPD2erha95wfMEBEZAiaLRER57PLly9nW/fPPP8ooZ+BZq2RSUlK2cjdu3NBazovbxJUqVQKAbCOyiYhyg8kiEVEe27p1K/79919l+fjx4zh27Bjatm2rrKtcuTKio6Nx9+5dZd3ff/+Nw4cPax2rZMmSAJBjYpnbqXPs7OzQtGlTrFq1CrGxsVrbRCTX10VERRNHQxMR5bEqVaqgcePGGDp0KNLS0rB48WLY2tpi3LhxSpn+/fvjyy+/hJ+fHwYMGIA7d+4gNDQUNWvWREpKilKuRIkScHd3x4YNG1CtWjWULl0aHh4e8PDweK2pc5YuXYrGjRujbt26GDx4MCpWrIjr169jx44dOH369FuqCSIqDNiySESUx/r06YPhw4dj2bJlmDVrFmrWrIl9+/bB0dFRKVOjRg388MMPSE5ORkhICH777TesXbsWdevWzXa87777DuXKlUNwcDB69OiB//3vf68dk6enJ44ePYqmTZti5cqVGDFiBDZt2oQPPvjgP10rERV+KuE9CCKiPHH9+nVUrFgRCxYswJgxY/QdDhFRnmDLIhERERHpxGSRiIiIiHRiskhEREREOrHPIhERERHpxJZFIiIiItKJySIRERER6cRkkYheW/PmzdG8eXN9h0EF1LRp06BSqXDv3r1Xls3MzMS4cePg7OwMIyMjdOzY8e0H+AbCwsKgUqlw/fp1fYdClOeYLBLlI80flJMnT+osc/36dahUKnzxxRevPF5WVhZWr16N5s2bo3Tp0jA1NYWrqyv69ev30nM8fx6VSoWZM2fmWKZXr15QqVSwsLB4ZSxv29WrV/Hxxx+jUqVKMDMzg6WlJRo1aoQlS5bgyZMn+g4PALBixYpXPkmlIDp79iy6dOkCFxcXmJmZoVy5cnjvvffw1VdfvfVzr1q1CgsWLECXLl2wZs0aBAcHv/Vzvszs2bOxdetWvcZAlN/4uD+iAurJkyf48MMPER4ejqZNm+LTTz9F6dKlcf36dfzyyy9Ys2YNYmNjUb58+Zcex8zMDD///DMmT56stT41NRW//vorzMzMsu2zZ8+ePL2WV9mxYwe6du0KU1NT9OnTBx4eHkhPT8eff/6JsWPH4vz58/jmm2/yNaacrFixAmXKlEHfvn31HUqeOXLkCFq0aIEKFSpg0KBBcHBwwM2bN3H06FEsWbIEw4cPf6vn37dvH8qVK4dFixa91fPk1uzZs9GlS5dsLZy9e/dG9+7dYWpqqp/AiN4iJotEBdTYsWMRHh6ORYsWYdSoUVrbpk6dmus/ru3atcPmzZvx999/w9PTU1n/66+/Ij09HW3atMG+ffu09jExMfnP8edWTEwMunfvDhcXl2yPzAsKCsKVK1ewY8eOfIunMEpNTYW5uXmO22bNmgUrKyucOHEC1tbWWtvu3Lnz1mO7c+dOtvMaImNjYxgbG+s7DKK3grehiQqgW7du4euvv8Z7772XLVEEnv3hGjNmzCtbFQHA19cXFStWxLp167TW//TTT2jTpg1Kly6dbZ+c+ix+9dVXqFmzJkqWLAkbGxvUq1dP65gPHz7EqFGj4OrqClNTU9jb2+O9997DqVOnXhrf/Pnz8ejRI3z//fdaiaJGlSpVMHLkSGU5MzMTn3/+OSpXrqzclv/000+RlpamtZ9KpcK0adOyHc/V1VWrZVDTdeDw4cMICQmBnZ0dzM3N0alTJ9y9e1drv/Pnz+PgwYPK7X1NHWVkZGD69OmoWrUqzMzMYGtri8aNG2Pv3r0vvXbNuQ8dOoSPP/4Ytra2sLS0RJ8+fZCYmJit/K5du9CkSROYm5ujVKlS8Pf3x/nz57XK9O3bFxYWFrh69SratWuHUqVKoVevXjpjuHr1KmrWrJljwmZvb6/8X9OtIafb8Lrq+t69e+jWrRssLS1ha2uLkSNH4unTp1rH279/P86fP6/U6YEDB3DgwAHl/8/LKQbN9f7777/o2LEjLCwsYGdnhzFjxiArK0trf7VajSVLlqBWrVowMzODnZ0d2rRpo3TpUKlUSE1NxZo1a5R4NO8VXX0WV6xYgZo1a8LU1BROTk4ICgpCUlKSVpnmzZvDw8MDFy5cQIsWLVCyZEmUK1cO8+fPz1ZnRPrAZJGoANq1axcyMzPRu3fvPDlejx49sH79emimXb137x727NmDnj175mr/b7/9FiNGjIC7uzsWL16M6dOnw8vLC8eOHVPKDBkyBCtXrkTnzp2xYsUKjBkzBiVKlMDFixdfeuxt27ahUqVKeOedd3IVy8CBAzFlyhTUrVsXixYtQrNmzTBnzhx07949V/vrMnz4cPz999+YOnUqhg4dim3btmHYsGHK9sWLF6N8+fJwc3PD2rVrsXbtWkyaNAnAswEd06dPR4sWLbBs2TJMmjQJFSpUeGWirDFs2DBcvHgR06ZNQ58+ffDTTz+hY8eOeH6a3LVr18Lf3x8WFhaYN28ePvvsM1y4cAGNGzfOlsBkZmbCz88P9vb2+OKLL9C5c2ed53ZxcUFUVBTOnTv3GrWVO926dcPTp08xZ84ctGvXDkuXLsXgwYMBAHZ2dli7di3c3NxQvnx5pU5r1Kjx2ufJysqCn58fbG1t8cUXX6BZs2ZYuHBhtq4LAwYMwKhRo+Ds7Ix58+ZhwoQJMDMzw9GjRwE8q2NTU1M0adJEiefjjz/Wed5p06YhKCgITk5OWLhwITp37oyvv/4arVu3RkZGhlbZxMREtGnTBp6enli4cCHc3Nwwfvx47Nq167WvlyjPCRHlm9WrVwsAOXHihM4yMTExAkAWLFigs0xwcLAAkL/++uuNY3n+POfOnRMA8scff4iIyPLly8XCwkJSU1MlMDBQzM3NtfZt1qyZNGvWTFnu0KGD1KxZ86Xns7KykqCgoNeKMTk5WQBIhw4dclX+9OnTAkAGDhyotX7MmDECQPbt26esAyBTp07NdgwXFxcJDAxUljU/s1atWolarVbWBwcHi7GxsSQlJSnratasqVUvGp6enuLv75+ra3ie5tze3t6Snp6urJ8/f74AkF9//VVERB4+fCjW1tYyaNAgrf3j4+PFyspKa31gYKAAkAkTJuQqhj179oixsbEYGxuLr6+vjBs3Tnbv3q0Vj8j/v59Wr16d7Rgv1vXUqVMFgHzwwQda5T755BMBIH///beyrlmzZtneW/v37xcAsn///lfGoLneGTNmaJWtU6eOeHt7K8v79u0TADJixIhs8T//czc3N9d6f2hoflYxMTEiInLnzh0xMTGR1q1bS1ZWllJu2bJlAkBWrVqldY0A5IcfflDWpaWliYODg3Tu3DnbuYjyG1sWiQqglJQUAECpUqXy5Hg1a9ZE7dq18fPPPwMA1q1bhw4dOqBkyZK52t/a2hq3bt3CiRMnXlrm2LFjiIuLy3Vcr3udO3fuBACEhIRorR89ejQA/Ke+jYMHD4ZKpVKWmzRpgqysLNy4ceOV+1pbW+P8+fO4fPnyG5+7ePHiyvLQoUNRrFgx5Xr37t2LpKQk9OjRA/fu3VNexsbG8PHxwf79+7Mdc+jQobk693vvvYfIyEh88MEH+PvvvzF//nz4+fmhXLly+O23397oejSCgoK0ljWDZTTXlZeGDBmitdykSRNcu3ZNWd60aRNUKhWmTp2abd/nf+659fvvvyM9PR2jRo2CkdH//6kdNGgQLC0ts70XLSws8NFHHynLJiYmaNCggVaMRPrCZJGoALK0tATwrB9gXunZsyc2btyIK1eu4MiRI7m+BQ0A48ePh4WFBRo0aICqVasiKCgIhw8f1iozf/58nDt3Ds7OzmjQoAGmTZv2yj+Er3udN27cgJGREapUqaK13sHBAdbW1rlK7HSpUKGC1rKNjQ0A5Nh38EUzZsxAUlISqlWrhlq1amHs2LE4c+ZMrs9dtWpVrWULCws4Ojoqt5c1Sei7774LOzs7rdeePXuyDUQpVqxYrvqzatSvXx+bN29GYmIijh8/jokTJ+Lhw4fo0qULLly4kOvjvOq6KleuDCMjozyfq1DT//B5NjY2Wj+7q1evwsnJKcc+um9C816rXr261noTExNUqlQp23uxfPny2ZLSF2Mk0hcmi0QFkJubG4Bn89/lFU2r1KBBg2Bra4vWrVvnet8aNWrg0qVLWL9+PRo3boxNmzahcePGWq003bp1w7Vr1/DVV1/ByckJCxYsQM2aNV/aJ8vS0hJOTk6v3V/uTVqCNF4c9KCha6SrPNdvUJemTZvi6tWrWLVqFTw8PPDdd9+hbt26+O677944zuep1WoAz/rU7d27N9vr119/1Spvamqq1dqVWyYmJqhfvz5mz56NlStXIiMjAxs3bgSgu8511WdOcvtze91zFYRRyv/l/UX0tjFZJCqA2rZtC2NjY/z44495dswKFSqgUaNGOHDgALp27YpixV5vZi1zc3MEBARg9erViI2Nhb+/P2bNmqWMbgUAR0dHfPLJJ9i6dStiYmJga2uLWbNmvfS47du3x9WrVxEZGfnKGFxcXKBWq7Pd7k1ISEBSUhJcXFyUdTY2NtlGpaanp+P27du5uNqcvSzZKV26NPr164eff/4ZN2/eRO3atXMcIZyTF6/n0aNHuH37NlxdXQE8a5EDno1ObtWqVbbX23jaTr169QBAqS9NS+uLdfqy1twXr+vKlStQq9XKdenyJud6lcqVKyMuLg4PHjx4abncJrSa99qlS5e01qenpyMmJkbrvUhk6JgsEhVAzs7OGDRoEPbs2ZPjUzTUajUWLlyIW7duvdZxZ86cialTp772RMv379/XWjYxMYG7uztEBBkZGcjKykJycrJWGXt7ezg5OWWb0uZF48aNg7m5OQYOHIiEhIRs269evYolS5YAeDZnJPBsZPLzvvzySwCAv7+/sq5y5co4dOiQVrlvvvnmtVrCXmRubp4tgQGy14+FhQWqVKnyymt/Pq7nR8+uXLkSmZmZaNu2LQDAz88PlpaWmD17drZRtgC0pvh5Xfv378+xdUvTr1Bzm9XS0hJlypTJVqcrVqzQeezly5drLWvey5rr0sXFxQXGxsavda5X6dy5M0QE06dPz7bt+evX9TN+UatWrWBiYoKlS5dq7f/9998jOTlZ671IZOg4KTeRHqxatQrh4eHZ1j8/X2BERIRWq5xGx44d4eHhgYULF+Lq1asYMWIENm/ejPbt28PGxgaxsbHYuHEjoqOjX3u6mGbNmqFZs2avfT2tW7eGg4MDGjVqhLJly+LixYtYtmwZ/P39UapUKSQlJaF8+fLo0qULPD09YWFhgd9//x0nTpzAwoULX3rsypUrY926dQgICECNGjW0nuBy5MgRbNy4UZnrztPTE4GBgfjmm2+QlJSEZs2a4fjx41izZg06duyIFi1aKMcdOHAghgwZgs6dO+O9997D33//jd27d6NMmTKvff0a3t7eWLlyJWbOnIkqVarA3t4e7777Ltzd3dG8eXN4e3ujdOnSOHnyJP73v/9pTb3zMunp6WjZsiW6deuGS5cuYcWKFWjcuDE++OADAM8StZUrV6J3796oW7cuunfvDjs7O8TGxmLHjh1o1KgRli1b9kbXNHz4cDx+/BidOnWCm5ubUu8bNmxQHi2pMXDgQMydOxcDBw5EvXr1cOjQIfzzzz86jx0TE4MPPvgAbdq0QWRkJH788Uf07NlTa3L4nFhZWaFr16746quvoFKpULlyZWzfvv0/TRLeokUL9O7dG0uXLsXly5fRpk0bqNVq/PHHH2jRooXys/L29sbvv/+OL7/8Ek5OTqhYsSJ8fHyyHc/Ozg4TJ07E9OnT0aZNG3zwwQfKz65+/fpag1mIDJ4eR2ITFTma6TV0vW7evKlM/6HrtXbtWuV4mZmZ8t1330mTJk3EyspKihcvLi4uLtKvX79XTquTmyl6RCRXU+d8/fXX0rRpU7G1tRVTU1OpXLmyjB07VpKTk0Xk2TQgY8eOFU9PTylVqpSYm5uLp6enrFixItd1988//8igQYPE1dVVTExMpFSpUtKoUSP56quv5OnTp0q5jIwMmT59ulSsWFGKFy8uzs7OMnHiRK0yIiJZWVkyfvx4KVOmjJQsWVL8/PzkypUrOqfOeXG6o5ymb4mPjxd/f38pVaqUAFDqaObMmdKgQQOxtraWEiVKiJubm8yaNSvb9DMv0pz74MGDMnjwYLGxsRELCwvp1auX3L9/P1v5/fv3i5+fn1hZWYmZmZlUrlxZ+vbtKydPnlTK5PTzfJldu3ZJ//79xc3NTSwsLMTExESqVKkiw4cPl4SEBK2yjx8/lgEDBoiVlZWUKlVKunXrJnfu3NE5dc6FCxekS5cuUqpUKbGxsZFhw4bJkydPtI6Z09Q5IiJ3796Vzp07S8mSJcXGxkY+/vhjZQqoF6fOyel6NTE8LzMzUxYsWCBubm5iYmIidnZ20rZtW4mKilLKREdHS9OmTaVEiRICQHmvvDh1jsayZcvEzc1NihcvLmXLlpWhQ4dKYmJirq4xMDBQXFxcsq0nym8qEfaeJSIyRGFhYejXrx9OnDih9BEkIspv7LNIRERERDoxWSQiIiIinZgsEhEREZFOBpMszp07FyqVCqNGjVLWPX36FEFBQbC1tYWFhQU6d+6cbeoMzXxuJUuWhL29PcaOHYvMzEytMgcOHEDdunVhamqKKlWqICwsLNv5ly9fDldXV5iZmcHHxwfHjx/X2p6bWIiI8lLfvn0hIuyvSER6ZRDJ4okTJ/D111+jdu3aWuuDg4Oxbds2bNy4EQcPHkRcXBw+/PBDZXtWVhb8/f2VqRzWrFmDsLAwTJkyRSkTExMDf39/tGjRAqdPn8aoUaMwcOBA7N69WymzYcMGhISEYOrUqTh16hQ8PT3h5+enNQ3Dq2IhIiIiKoz0Phr60aNHqFu3LlasWIGZM2fCy8sLixcvRnJyMuzs7LBu3Tp06dIFABAdHY0aNWogMjISDRs2xK5du9C+fXvExcWhbNmyAIDQ0FCMHz8ed+/ehYmJCcaPH48dO3ZoPS6se/fuSEpKUua58/HxQf369ZV5yNRqNZydnTF8+HBMmDAhV7HkJC0tTWvSXbVajQcPHsDW1vY/PY6MiIiIigYRwcOHD+Hk5PRGj+nMqyD0qk+fPjJq1CgReTbX1MiRI0VEJCIiQgBkm4+qQoUK8uWXX4qIyGeffSaenp5a269duyYA5NSpUyIi0qRJE+WYGqtWrRJLS0sReTb/m7GxsWzZsiVbXB988EGuY8mJZh4vvvjiiy+++OKLr//yunnz5svSqbdKr09wWb9+PU6dOoUTJ05k2xYfHw8TExNYW1trrS9btizi4+OVMpoWxee3a7a9rExKSgqePHmCxMREZGVl5VgmOjo617HkZOLEiQgJCVGWk5OTUaFCBdy8eROWlpY69yMiIiICgJSUFDg7O6NUqVJ6i0FvyeLNmzcxcuRI7N27F2ZmZvoK460yNTWFqalptvWWlpZMFomIiCjX9Nl9TW8DXKKionDnzh3UrVsXxYoVQ7FixXDw4EEsXboUxYoVQ9myZZGenp7tge0JCQlwcHAAADg4OGQbkaxZflUZS0tLlChRAmXKlIGxsXGOZZ4/xqtiISIiIiqM9JYstmzZEmfPnsXp06eVV7169dCrVy/l/8WLF0dERISyz6VLlxAbGwtfX18AgK+vL86ePas1annv3r2wtLSEu7u7Uub5Y2jKaI5hYmICb29vrTJqtRoRERFKGW9v71fGQkRERFQY6e02dKlSpeDh4aG1ztzcHLa2tsr6AQMGICQkBKVLl4alpSWGDx8OX19fZfRx69at4e7ujt69e2P+/PmIj4/H5MmTERQUpNz+HTJkCJYtW4Zx48ahf//+2LdvH3755Rfs2LFDOW9ISAgCAwNRr149NGjQAIsXL0Zqair69esHALCysnplLERERESFkV4HuLzKokWLYGRkhM6dOyMtLQ1+fn5YsWKFst3Y2Bjbt2/H0KFD4evrC3NzcwQGBmLGjBlKmYoVK2LHjh0IDg7GkiVLUL58eXz33Xfw8/NTygQEBODu3buYMmUK4uPj4eXlhfDwcK1BL6+KJS9lZWUhIyPjrRyb6GVMTEz0NzUDEREZJL3Ps1iUpKSkwMrKCsnJyTkOcBERxMfHZ+sbSZRfjIyMULFiRZiYmOg7FCIiwqtzh/xg0C2LRY0mUbS3t0fJkiU5cTflK7Vajbi4ONy+fRsVKlTg+4+IiAAwWTQYWVlZSqJoa2ur73CoiLKzs0NcXBwyMzNRvHhxfYdDREQGgJ2TDISmj2LJkiX1HAkVZZrbz1lZWXqOhIiIDAWTRQPDW3+kT3z/ERHRi5gsEhEREZFOTBaJiIiISCcOcDFwrhN2vLpQHro+1z9fz5cfrl+/jooVK+Kvv/6Cl5eXvsMhIiIqUNiySP9J37590bFjR53bXV1dsXjx4pceY9OmTWjevDmsrKxgYWGB2rVrY8aMGXjw4IHOfVQqFVQqFY4ePaq1Pi0tDba2tlCpVDhw4AAAwNnZGbdv3872xKC8kpKSgkmTJsHNzQ1mZmZwcHBAq1atsHnzZuT3NKa5qW8iIqLXwWSR9GrSpEkICAhA/fr1sWvXLpw7dw4LFy7E33//jbVr1750X2dnZ6xevVpr3ZYtW2BhYaG1ztjYGA4ODihWLO8b0pOSkvDOO+/ghx9+wMSJE3Hq1CkcOnQIAQEBGDduHJKTk/P8nERERPmJySLpzfHjxzF79mwsXLgQCxYswDvvvANXV1e899572LRpEwIDA1+6f2BgINavX48nT54o61atWpVtv+vXr0OlUuH06dMAgMTERPTq1Qt2dnYoUaIEqlatqiSd6enpGDZsGBwdHWFmZgYXFxfMmTNHZwyffvoprl+/jmPHjiEwMBDu7u6oVq0aBg0ahNOnTyuJa2JiIvr06QMbGxuULFkSbdu2xeXLl5XjTJs2Ldst8sWLF8PV1VVZ1rTifvHFF3B0dIStrS2CgoKUaZeaN2+OGzduIDg4WGl5BYAbN27g/fffh42NDczNzVGzZk3s3LnzpXVLRESkwWSR9Oann36ChYUFPvnkkxy3W1tbv3R/b29vuLq6YtOmTQCA2NhYHDp0CL17937pfp999hkuXLiAXbt24eLFi1i5ciXKlCkDAFi6dCl+++03/PLLL7h06RJ++uknrYTteWq1GuvXr0evXr3g5OSUbbuFhYXSmtm3b1+cPHkSv/32GyIjIyEiaNeu3Ws/A3z//v24evUq9u/fjzVr1iAsLAxhYWEAgM2bN6N8+fKYMWMGbt++jdu3bwMAgoKCkJaWhkOHDuHs2bOYN29ettZXIiIiXTjAhfTm8uXLqFSp0n96Ukj//v2xatUqfPTRRwgLC0O7du1gZ2f30n1iY2NRp04d1KtXDwC0ksHY2FhUrVoVjRs3hkqlgouLi87j3Lt3D4mJiXBzc3vp+S5fvozffvsNhw8fxjvvvAPgWaLs7OyMrVu3omvXrrm8WsDGxgbLli2DsbEx3Nzc4O/vj4iICAwaNAilS5eGsbExSpUqBQcHB61r6ty5M2rVqgUAqFSpUq7PR0RExJZF0pu8GPzx0UcfITIyEteuXUNYWBj69+//yn2GDh2K9evXw8vLC+PGjcORI0eUbX379sXp06dRvXp1jBgxAnv27PnP8V+8eBHFihWDj4+Pss7W1hbVq1fHxYsXc3UMjZo1a8LY2FhZdnR0xJ07d166z4gRIzBz5kw0atQIU6dOxZkzZ17rnEREVLQxWSS9qVatGq5du/bat2KfZ2tri/bt22PAgAF4+vQp2rZt+8p92rZtq/Tti4uLQ8uWLTFmzBgAQN26dRETE4PPP/8cT548Qbdu3dClS5ccj2NnZwdra2tER0e/cfwaRkZG2ZLPnOrlxVZYlUoFtVr90mMPHDgQ165dQ+/evXH27FnUq1cPX3311X+OmYiIigYmi6Q3PXv2xKNHj7BixYoctyclJeXqOP3798eBAwfQp08frVa3l7Gzs0NgYCB+/PFHLF68GN98842yzdLSEgEBAfj222+xYcMGbNq0KcdpfIyMjNC9e3f89NNPiIuLy7b90aNHyMzMRI0aNZCZmYljx44p2+7fv49Lly7B3d1diSc+Pl4rYdQMyHkdJiYmOT7X2dnZGUOGDMHmzZsxevRofPvtt699bCIiKprYZ5H+s+Tk5GyJja2tLZydnQEA//77b7btLi4u8PHxwbhx4zB69Gj8+++/6NSpE5ycnHDlyhWEhoaicePGGDly5CvP36ZNG9y9exeWlpa5infKlCnw9vZGzZo1kZaWhu3bt6NGjRoAgC+//BKOjo6oU6cOjIyMsHHjRjg4OOgcbDNr1iwcOHAAPj4+mDVrFurVq4fixYvjjz/+wJw5c3DixAlUrVoVHTp0wKBBg/D111+jVKlSmDBhAsqVK4cOHToAeDaS+e7du5g/fz66dOmC8PBw7Nq1K9fXpOHq6opDhw6he/fuMDU1RZkyZTBq1Ci0bdsW1apVQ2JiIvbv369cLxER0SsJ5Zvk5GQBIMnJydm2PXnyRC5cuCBPnjzRQ2RvLjAwUABkew0YMEBERFxcXHLcvnbtWuUYGzZskKZNm0qpUqXE3NxcateuLTNmzJDExESd5wUgW7ZsyXFbYmKiAJD9+/eLiEhMTIwAkL/++ktERD7//HOpUaOGlChRQkqXLi0dOnSQa9euiYjIN998I15eXmJubi6WlpbSsmVLOXXq1EvrICkpSSZMmCBVq1YVExMTKVu2rLRq1Uq2bNkiarVaREQePHggvXv3FisrKylRooT4+fnJP//8o3WclStXirOzs5ibm0ufPn1k1qxZ4uLiolXXHTp00Npn5MiR0qxZM2U5MjJSateuLaampqL59R42bJhUrlxZTE1Nxc7OTnr37i337t3L8VoK6vuQiKiwelnukF9UIvn8iIkiLCUlBVZWVkhOTs7WYvT06VPExMSgYsWKMDMz01OEVNTxfUhEZFheljvkF/ZZJCIiIiKdmCwSERERkU5MFomIiIhIJyaLRERERKQTk0UDw/FGpE8F9f1369YtPHr0KNv6jIwMHDp0SA8REREVHkwWDYTmyRyPHz/WcyRUlKWnpwNAric317fbt2+jQYMGcHFxgbW1Nfr06aOVND548AAtWrTQY4RERAUfJ+U2EMbGxrC2tlae81uyZEmoVCo9R0VFiVqtxt27d1GyZEkUK1YwPhomTJgAIyMjHDt2DElJSZgwYQJatGiBPXv2wMbGBkDBbS0lIjIUBeMvQhHh4OAAAErCSJTfjIyMUKFChQLzReX333/Hli1bUK9ePQDA4cOH0bVrV7z77ruIiIgAgAJzLUREhorJogFRqVRwdHSEvb09MjIy9B0OFUEmJiYwMio4vVOSk5OVFkQAMDU1xebNm9G1a1e0aNECP/74ox6jIyIqHJgsGiBjY+MC02eMSJ8qVaqEM2fOoGrVqsq6YsWKYePGjejatSvat2+vx+iIiAqHgtOEQET0grZt2+Kbb77Jtl6TMHp5eeV/UEREhQyfDZ2PDOH5jkSFSWZmJh4/fqzz9ykzMxP//vsvXFxc8jkyIqK8YQi5A1sWiajAKlas2Es/PIsVK8ZEkYjoP2KySEQF2u3bt/Hjjz9i586dyjyRGqmpqZgxY4aeIiMiKhz0miyuXLkStWvXhqWlJSwtLeHr64tdu3Yp25s3bw6VSqX1GjJkiNYxYmNj4e/vj5IlS8Le3h5jx45FZmamVpkDBw6gbt26MDU1RZUqVRAWFpYtluXLl8PV1RVmZmbw8fHB8ePHtbY/ffoUQUFBsLW1hYWFBTp37oyEhIS8qwwiem0nTpyAu7s7goKC0KVLF9SsWRPnz59Xtj969AjTp0/XY4RERAWfXpPF8uXLY+7cuYiKisLJkyfx7rvvokOHDlof9oMGDcLt27eV1/z585VtWVlZ8Pf3R3p6Oo4cOYI1a9YgLCwMU6ZMUcrExMTA398fLVq0wOnTpzFq1CgMHDgQu3fvVsps2LABISEhmDp1Kk6dOgVPT0/4+flpzXcYHByMbdu2YePGjTh48CDi4uLw4YcfvuUaIqKX+fTTT9GpUyckJiYiISEB7733Hpo1a4a//vpL36ERERUeYmBsbGzku+++ExGRZs2ayciRI3WW3blzpxgZGUl8fLyybuXKlWJpaSlpaWkiIjJu3DipWbOm1n4BAQHi5+enLDdo0ECCgoKU5aysLHFycpI5c+aIiEhSUpIUL15cNm7cqJS5ePGiAJDIyMhcX1tycrIAkOTk5FzvQ0S62djYyKVLl7TWzZkzR2xsbOT48eMSHx8vRkZGeoqOiOi/M4TcwWD6LGZlZWH9+vVITU2Fr6+vsv6nn35CmTJl4OHhgYkTJ2o9OzkyMhK1atVC2bJllXV+fn5ISUlRWicjIyPRqlUrrXP5+fkhMjISwLNn4UZFRWmVMTIyQqtWrZQyUVFRyMjI0Crj5uaGChUqKGVykpaWhpSUFK0XEeWtp0+fai1PmDABn376KVq3bo0jR47oKSoiosJD75Nynz17Fr6+vnj69CksLCywZcsWuLu7AwB69uwJFxcXODk54cyZMxg/fjwuXbqEzZs3AwDi4+O1EkUAynJ8fPxLy6SkpODJkydITExEVlZWjmWio6OVY5iYmMDa2jpbGc15cjJnzhz2lyJ6izw8PHDkyBHUrl1ba/2YMWOgVqvRo0cPPUVGRFR46D1ZrF69Ok6fPo3k5GT873//Q2BgIA4ePAh3d3cMHjxYKVerVi04OjqiZcuWuHr1KipXrqzHqHNn4sSJCAkJUZZTUlLg7Oysx4iICpc+ffrg4MGD2Qa+AcC4ceMgIggNDdVDZEREhYfeb0ObmJigSpUq8Pb2xpw5c+Dp6YklS5bkWNbHxwcAcOXKFQCAg4NDthHJmmUHB4eXlrG0tESJEiVQpkwZGBsb51jm+WOkp6cjKSlJZ5mcmJqaKiO9NS8iyjsDBw7E2rVrdW4fP348YmJi8jEiIqLCR+/J4ovUajXS0tJy3Hb69GkAgKOjIwDA19cXZ8+e1Rq1vHfvXlhaWiq3sn19fREREaF1nL179yr9Ik1MTODt7a1VRq1WIyIiQinj7e2N4sWLa5W5dOkSYmNjtfpXEhERERU6ehtaIyITJkyQgwcPSkxMjJw5c0YmTJggKpVK9uzZI1euXJEZM2bIyZMnJSYmRn799VepVKmSNG3aVNk/MzNTPDw8pHXr1nL69GkJDw8XOzs7mThxolLm2rVrUrJkSRk7dqxcvHhRli9fLsbGxhIeHq6UWb9+vZiamkpYWJhcuHBBBg8eLNbW1lqjrIcMGSIVKlSQffv2ycmTJ8XX11d8fX1f63oNYUQTUVFy4cIFqVixor7DICJ6Y4aQO+g1Wezfv7+4uLiIiYmJ2NnZScuWLWXPnj0iIhIbGytNmzaV0qVLi6mpqVSpUkXGjh2brbKuX78ubdu2lRIlSkiZMmVk9OjRkpGRoVVm//794uXlJSYmJlKpUiVZvXp1tli++uorqVChgpiYmEiDBg3k6NGjWtufPHkin3zyidjY2EjJkiWlU6dOcvv27de6XkP4gRMVJadPn+bUOURUoBlC7qASEdFv22bRYQgPAycqTJ4fQJaTu3fvYt26dcjKysqniIiI8pYh5A56Hw1NRPSmlixZAi8vL50foI8ePcrniIiICh8mi0RUYFWpUgXBwcH46KOPctx++vRpeHt753NURESFi8GNhiYiyq169eohKipK53aVSgX2tCEi+m/YskhEBdbChQt1TrUFAJ6enlCr1fkYERFR4cNkkYgKrJdNik9ERHmDt6GJqNDJyMjQdwhERIUGk0UiKrB++eUXpKenK8vLli2Di4sLzMzMUKZMGcyYMUOP0RERFQ68DU1EBVaPHj1w+/Zt2NvbY/Xq1Rg7dizGjRsHHx8f/PXXX5gzZw6cnJwwcOBAfYdKRFRgMVkkogLr+ZHOoaGhmDFjBsaOHQsAaNeuHUqXLo0VK1YwWSQi+g94G5qICjSVSgUAuHbtGlq3bq21rXXr1rhy5Yo+wiIiKjTYskhEBVp4eDisrKxgZmaGx48fa217+vSpkkwSEdGbYbJIRAVaYGCg8v99+/bB19dXWT569CgqV66sj7CIiAoNJotEVGC9asLtsmXLYs6cOfkUDRFR4cRkkYgKrfbt2+s7BCKiAo/JIhEVeMePH0dkZCTi4+MBPHuyi6+vLxo0aKDnyIiICj4mi0RUYN25cwedO3fG4cOHUaFCBZQtWxYAkJCQgODgYDRq1AibNm2Cvb29niMlIiq4OHUOERVYn3zyCbKysnDx4kVcv34dx44dw7Fjx3D9+nVcvHgRarUaQUFB+g6TiKhAU8nzs9rSW5WSkgIrKyskJyfD0tJS3+EQFXilSpXCoUOHUKdOnRy3R0VFoXnz5nj48GE+R0ZElDcMIXdgyyIRFVimpqZISUnRuf3hw4cwNTXNx4iIiAofJotEVGAFBAQgMDAQW7Zs0UoaU1JSsGXLFvTr1w89evTQY4RERAUfB7gQUYH15ZdfQq1Wo3v37sjMzISJiQkAID09HcWKFcOAAQPwxRdf6DlKIqKCjX0W85Eh9DsgKoxSUlIQFRWlNXWOt7c3f8+IqMAzhNyBt6GJqEC7ePEiNm3aBEdHR/To0QN16tTBL7/8glGjRmHfvn36Do+IqMDjbWgiKrDCw8PRoUMHWFhY4PHjx9iyZQv69OkDT09PqNVqtG7dGnv27MG7776r71CJiAostiwSUYE1Y8YMjB07Fvfv38fq1avRs2dPDBo0CHv37kVERATGjh2LuXPn6jtMIqICjckiERVY58+fR9++fQEA3bp1w8OHD9GlSxdle69evXDmzBk9RUdEVDgwWSSiAk2lUgEAjIyMYGZmBisrK2VbqVKlkJycrK/QiIgKBSaLRFRgubq64vLly8pyZGQkKlSooCzHxsbC0dFRH6ERERUaHOBCRAXW0KFDkZWVpSx7eHhobd+1axcHtxAR/UecZzEfGcJcSURERFRwGELuwNvQRERERKQTk0UiIiIi0kmvfRZXrlyJlStX4vr16wCAmjVrYsqUKWjbti0A4OnTpxg9ejTWr1+PtLQ0+Pn5YcWKFShbtqxyjNjYWAwdOhT79++HhYUFAgMDMWfOHBQr9v+XduDAAYSEhOD8+fNwdnbG5MmTlek2NJYvX44FCxYgPj4enp6e+Oqrr9CgQQNle25iIaK84zphh17Oe32uv17OS0RkqPTasli+fHnMnTsXUVFROHnyJN5991106NAB58+fBwAEBwdj27Zt2LhxIw4ePIi4uDh8+OGHyv5ZWVnw9/dHeno6jhw5gjVr1iAsLAxTpkxRysTExMDf3x8tWrTA6dOnMWrUKAwcOBC7d+9WymzYsAEhISGYOnUqTp06BU9PT/j5+eHOnTtKmVfFQkRERFQYGdwAl9KlS2PBggXo0qUL7OzssG7dOmWS3ejoaNSoUQORkZFo2LAhdu3ahfbt2yMuLk5p4QsNDcX48eNx9+5dmJiYYPz48dixYwfOnTunnKN79+5ISkpCeHg4AMDHxwf169fHsmXLAABqtRrOzs4YPnw4JkyYgOTk5FfGkhuG0EmVqKBgyyIRkWHkDgbTZzErKwvr169HamoqfH19ERUVhYyMDLRq1Uop4+bmhgoVKiAyMhLAsznVatWqpXUr2M/PDykpKUrrZGRkpNYxNGU0x0hPT0dUVJRWGSMjI7Rq1Uopk5tYcpKWloaUlBStFxEREVFBovdk8ezZs7CwsICpqSmGDBmCLVu2wN3dHfHx8TAxMYG1tbVW+bJlyyI+Ph4AEB8fn63PoGb5VWVSUlLw5MkT3Lt3D1lZWTmWef4Yr4olJ3PmzIGVlZXycnZ2zl2lEBERERkIvSeL1atXx+nTp3Hs2DEMHToUgYGBuHDhgr7DyhMTJ05EcnKy8rp586a+QyIiIiJ6LXp/gouJiQmqVKkCAPD29saJEyewZMkSBAQEID09HUlJSVotegkJCXBwcAAAODg44Pjx41rHS0hIULZp/tWse76MpaUlSpQoAWNjYxgbG+dY5vljvCqWnJiamsLU1PQ1aoOIiIjIsOi9ZfFFarUaaWlp8Pb2RvHixREREaFsu3TpEmJjY+Hr6wsA8PX1xdmzZ7VGLe/duxeWlpZwd3dXyjx/DE0ZzTFMTEzg7e2tVUatViMiIkIpk5tYiIiIiAojvbYsTpw4EW3btkWFChXw8OFDrFu3DgcOHMDu3bthZWWFAQMGICQkBKVLl4alpSWGDx8OX19fZfRx69at4e7ujt69e2P+/PmIj4/H5MmTERQUpLToDRkyBMuWLcO4cePQv39/7Nu3D7/88gt27Pj/kZYhISEIDAxEvXr10KBBAyxevBipqano168fAOQqFiIiIqLCSK/J4p07d9CnTx/cvn0bVlZWqF27Nnbv3o333nsPALBo0SIYGRmhc+fOWhNhaxgbG2P79u0YOnQofH19YW5ujsDAQMyYMUMpU7FiRezYsQPBwcFYsmQJypcvj++++w5+fn5KmYCAANy9exdTpkxBfHw8vLy8EB4erjXo5VWxEBERERVGBjfPYmFmCHMlERUUnGeRiMgwcgeD67NIRERERIaDySIRERER6cRkkYiIiIh0YrJIRERERDoxWSQiIiIinZgsEhEREZFOTBaJiIiISCcmi0RERESkE5NFIiIiItKJySIRERER6cRkkYiIiIh0YrJIRERERDoxWSQiIiIinZgsEhEREZFOTBaJiIiISCcmi0RERESkE5NFIiIiItKJySIRERER6cRkkYiIiIh0YrJIRERERDoxWSQiIiIinZgsEhEREZFOTBaJiIiISCcmi0RERESkE5NFIiIiItKJySIRERER6cRkkYiIiIh0YrJIRERERDoxWSQiIiIinZgsEhEREZFOTBaJiIiISCcmi0RERESkE5NFIiIiItJJr8ninDlzUL9+fZQqVQr29vbo2LEjLl26pFWmefPmUKlUWq8hQ4ZolYmNjYW/vz9KliwJe3t7jB07FpmZmVplDhw4gLp168LU1BRVqlRBWFhYtniWL18OV1dXmJmZwcfHB8ePH9fa/vTpUwQFBcHW1hYWFhbo3LkzEhIS8qYyiIiIiAyQXpPFgwcPIigoCEePHsXevXuRkZGB1q1bIzU1VavcoEGDcPv2beU1f/58ZVtWVhb8/f2Rnp6OI0eOYM2aNQgLC8OUKVOUMjExMfD390eLFi1w+vRpjBo1CgMHDsTu3buVMhs2bEBISAimTp2KU6dOwdPTE35+frhz545SJjg4GNu2bcPGjRtx8OBBxMXF4cMPP3yLNURERESkXyoREX0HoXH37l3Y29vj4MGDaNq0KYBnLYteXl5YvHhxjvvs2rUL7du3R1xcHMqWLQsACA0Nxfjx43H37l2YmJhg/Pjx2LFjB86dO6fs1717dyQlJSE8PBwA4OPjg/r162PZsmUAALVaDWdnZwwfPhwTJkxAcnIy7OzssG7dOnTp0gUAEB0djRo1aiAyMhINGzbMFltaWhrS0tKU5ZSUFDg7OyM5ORmWlpb/vcKICjHXCTv0ct7rc/31cl4iopykpKTAyspKr7mDQfVZTE5OBgCULl1aa/1PP/2EMmXKwMPDAxMnTsTjx4+VbZGRkahVq5aSKAKAn58fUlJScP78eaVMq1attI7p5+eHyMhIAEB6ejqioqK0yhgZGaFVq1ZKmaioKGRkZGiVcXNzQ4UKFZQyL5ozZw6srKyUl7Oz82vXCREREZE+FdN3ABpqtRqjRo1Co0aN4OHhoazv2bMnXFxc4OTkhDNnzmD8+PG4dOkSNm/eDACIj4/XShQBKMvx8fEvLZOSkoInT54gMTERWVlZOZaJjo5WjmFiYgJra+tsZTTnedHEiRMREhKiLGtaFomIiIgKCoNJFoOCgnDu3Dn8+eefWusHDx6s/L9WrVpwdHREy5YtcfXqVVSuXDm/w3wtpqamMDU11XcYRERERG/MIG5DDxs2DNu3b8f+/ftRvnz5l5b18fEBAFy5cgUA4ODgkG1EsmbZwcHhpWUsLS1RokQJlClTBsbGxjmWef4Y6enpSEpK0lmGiIiIqLDRa7IoIhg2bBi2bNmCffv2oWLFiq/c5/Tp0wAAR0dHAICvry/Onj2rNWp57969sLS0hLu7u1ImIiJC6zh79+6Fr68vAMDExATe3t5aZdRqNSIiIpQy3t7eKF68uFaZS5cuITY2VilDREREVNjo9TZ0UFAQ1q1bh19//RWlSpVS+v5ZWVmhRIkSuHr1KtatW4d27drB1tYWZ86cQXBwMJo2bYratWsDAFq3bg13d3f07t0b8+fPR3x8PCZPnoygoCDlFvCQIUOwbNkyjBs3Dv3798e+ffvwyy+/YMeO/x9tGRISgsDAQNSrVw8NGjTA4sWLkZqain79+ikxDRgwACEhIShdujQsLS0xfPhw+Pr65jgSmoiIiKgw0GuyuHLlSgDPpsd53urVq9G3b1+YmJjg999/VxI3Z2dndO7cGZMnT1bKGhsbY/v27Rg6dCh8fX1hbm6OwMBAzJgxQylTsWJF7NixA8HBwViyZAnKly+P7777Dn5+fkqZgIAA3L17F1OmTEF8fDy8vLwQHh6uNehl0aJFMDIyQufOnZGWlgY/Pz+sWLHiLdUOERERkf4Z1DyLhZ0hzJVEVFBwnkUiIsPIHQxigAsRERERGSYmi0RERESkE5NFIiIiItKJySIRERER6cRkkYiIiIh0YrJIRERERDoxWSQiIiIinZgsEhEREZFOTBaJiIiISCcmi0RERESkE5NFIiIiItLptZPFjIwMtGzZEpcvX34b8RARERGRAXntZLF48eI4c+bM24iFiIiIiAzMG92G/uijj/D999/ndSxEREREZGCKvclOmZmZWLVqFX7//Xd4e3vD3Nxca/uXX36ZJ8ERERERkX69UbJ47tw51K1bFwDwzz//aG1TqVT/PSoiIiIiMghvlCzu378/r+MgIiIiIgP0n6bOuXLlCnbv3o0nT54AAEQkT4IiIiIiIsPwRsni/fv30bJlS1SrVg3t2rXD7du3AQADBgzA6NGj8zRAIiIiItKfN0oWg4ODUbx4ccTGxqJkyZLK+oCAAISHh+dZcERERESkX2/UZ3HPnj3YvXs3ypcvr7W+atWquHHjRp4ERkRERET690Yti6mpqVotihoPHjyAqanpfw6KiIiIiAzDGyWLTZo0wQ8//KAsq1QqqNVqzJ8/Hy1atMiz4IiIiIhIv97oNvT8+fPRsmVLnDx5Eunp6Rg3bhzOnz+PBw8e4PDhw3kdIxERERHpyRu1LHp4eOCff/5B48aN0aFDB6SmpuLDDz/EX3/9hcqVK+d1jERERESkJ2/UsggAVlZWmDRpUl7GQkREREQG5o2TxcTERHz//fe4ePEiAMDd3R39+vVD6dKl8yw4IiIiItKvN7oNfejQIbi6umLp0qVITExEYmIili5diooVK+LQoUN5HSMRERER6ckbtSwGBQUhICAAK1euhLGxMQAgKysLn3zyCYKCgnD27Nk8DZKIiIiI9OONWhavXLmC0aNHK4kiABgbGyMkJARXrlzJs+CIiIiISL/eKFmsW7eu0lfxeRcvXoSnp+d/DoqIiIiIDEOub0OfOXNG+f+IESMwcuRIXLlyBQ0bNgQAHD16FMuXL8fcuXPzPkoiIiIi0otctyx6eXmhTp068PLyQo8ePXDz5k2MGzcOTZs2RdOmTTFu3DjcuHEDPXv2zPXJ58yZg/r166NUqVKwt7dHx44dcenSJa0yT58+RVBQEGxtbWFhYYHOnTsjISFBq0xsbCz8/f1RsmRJ2NvbY+zYscjMzNQqc+DAAdStWxempqaoUqUKwsLCssWzfPlyuLq6wszMDD4+Pjh+/Phrx0JERERUmOQ6WYyJicG1a9cQExPz0te1a9dyffKDBw8iKCgIR48exd69e5GRkYHWrVsjNTVVKRMcHIxt27Zh48aNOHjwIOLi4vDhhx8q27OysuDv74/09HQcOXIEa9asQVhYGKZMmaIVu7+/P1q0aIHTp09j1KhRGDhwIHbv3q2U2bBhA0JCQjB16lScOnUKnp6e8PPzw507d3IdCxEREVFhoxIR0XcQGnfv3oW9vT0OHjyIpk2bIjk5GXZ2dli3bh26dOkCAIiOjkaNGjUQGRmJhg0bYteuXWjfvj3i4uJQtmxZAEBoaCjGjx+Pu3fvwsTEBOPHj8eOHTtw7tw55Vzdu3dHUlISwsPDAQA+Pj6oX78+li1bBgBQq9VwdnbG8OHDMWHChFzF8iopKSmwsrJCcnIyLC0t87TuiAob1wk79HLe63P99XJeIqKcGELu8MaTcsfFxeHPP//EnTt3oFartbaNGDHijY6ZnJwMAMrE3lFRUcjIyECrVq2UMm5ubqhQoYKSoEVGRqJWrVpKoggAfn5+GDp0KM6fP486deogMjJS6xiaMqNGjQIApKenIyoqChMnTlS2GxkZoVWrVoiMjMx1LC9KS0tDWlqaspySkvJG9UJERESkL2+ULIaFheHjjz+GiYkJbG1toVKplG0qleqNkkW1Wo1Ro0ahUaNG8PDwAADEx8fDxMQE1tbWWmXLli2L+Ph4pczziaJmu2bby8qkpKTgyZMnSExMRFZWVo5loqOjcx3Li+bMmYPp06fnsgaIiIiIDM8bJYufffYZpkyZgokTJ8LI6I1m38kmKCgI586dw59//pknxzMEEydOREhIiLKckpICZ2dnPUZERERE9HreKFl8/PgxunfvnmeJ4rBhw7B9+3YcOnQI5cuXV9Y7ODggPT0dSUlJWi16CQkJcHBwUMq8OGpZM0L5+TIvjlpOSEiApaUlSpQoAWNjYxgbG+dY5vljvCqWF5mamsLU1PQ1aoKIiIjIsLxRtjdgwABs3LjxP59cRDBs2DBs2bIF+/btQ8WKFbW2e3t7o3jx4oiIiFDWXbp0CbGxsfD19QUA+Pr64uzZs1qjlvfu3QtLS0u4u7srZZ4/hqaM5hgmJibw9vbWKqNWqxEREaGUyU0sRERERIXNG42GzsrKQvv27fHkyRPUqlULxYsX19r+5Zdf5uo4n3zyCdatW4dff/0V1atXV9ZbWVmhRIkSAIChQ4di586dCAsLg6WlJYYPHw4AOHLkiBKLl5cXnJycMH/+fMTHx6N3794YOHAgZs+eDeDZ1DkeHh4ICgpC//79sW/fPowYMQI7duyAn58fgGdT5wQGBuLrr79GgwYNsHjxYvzyyy+Ijo5W+jK+KpZXMYQRTUQFBUdDExEZRu7wRreh58yZg927dysJ3osDXHJr5cqVAIDmzZtrrV+9ejX69u0LAFi0aBGMjIzQuXNnpKWlwc/PDytWrFDKGhsbY/v27Rg6dCh8fX1hbm6OwMBAzJgxQylTsWJF7NixA8HBwViyZAnKly+P7777TkkUASAgIAB3797FlClTEB8fDy8vL4SHh2sNenlVLERERESFzRu1LNrY2GDRokVKQke5YwjfDogKCrYsEhEZRu7wRn0WTU1N0ahRo7yOhYiIiIgMzBsliyNHjsRXX32V17EQERERkYF5oz6Lx48fx759+7B9+3bUrFkz2wCXzZs350lwRERERKRfb5QsWltb48MPP8zrWIiIiIjIwLxRsrh69eq8joOIiIiIDFDePIKFiIiIiAqlN2pZrFix4kvnU7x27dobB0REREREhuONksVRo0ZpLWdkZOCvv/5CeHg4xo4dmxdxEREREZEBeKNkceTIkTmuX758OU6ePPmfAiIiIiIiw5GnfRbbtm2LTZs25eUhiYiIiEiP8jRZ/N///ofSpUvn5SGJiIiISI/e6DZ0nTp1tAa4iAji4+Nx9+5drFixIs+CIyIiIiL9eqNksUOHDlrJopGREezs7NC8eXO4ubnlWXBEREREpF9vlCxOmzYtj8MgIiIiIkP0WsmikZHRS+dXBACVSoXMzMz/FBQRERERGYbXSha3bNmic1tkZCSWLl0KtVr9n4MiIiIiIsPwWslihw4dsq27dOkSJkyYgG3btqFXr16YMWNGngVHRERERPr1xlPnxMXFYdCgQahVqxYyMzNx+vRprFmzBi4uLnkZHxERERHp0Wsni8nJyRg/fjyqVKmC8+fPIyIiAtu2bYOHh8fbiI+IiIiI9Oi1bkPPnz8f8+bNg4ODA37++eccb0sTERERUeGhEhHJbWEjIyOUKFECrVq1grGxsc5ymzdvzpPgCpuUlBRYWVkhOTkZlpaW+g6HyKC5Ttihl/Nen+uvl/MSEeXEEHKH12pZ7NOnzyunziEiIiKiwuO1ksWwsLC3FAYRERERGaI3Hg1NRERERIUfk0UiIiIi0onJIhERERHpxGSRiIiIiHRiskhEREREOjFZJCIiIiKdmCwSERERkU5MFomIiIhIJyaLRERERKSTXpPFQ4cO4f3334eTkxNUKhW2bt2qtb1v375QqVRarzZt2miVefDgAXr16gVLS0tYW1tjwIABePTokVaZM2fOoEmTJjAzM4OzszPmz5+fLZaNGzfCzc0NZmZmqFWrFnbu3Km1XUQwZcoUODo6Ks/Hvnz5ct5UBBEREZGB0muymJqaCk9PTyxfvlxnmTZt2uD27dvK6+eff9ba3qtXL5w/fx579+7F9u3bcejQIQwePFjZnpKSgtatW8PFxQVRUVFYsGABpk2bhm+++UYpc+TIEfTo0QMDBgzAX3/9hY4dO6Jjx444d+6cUmb+/PlYunQpQkNDcezYMZibm8PPzw9Pnz7NwxohIiIiMiwqERF9BwEAKpUKW7ZsQceOHZV1ffv2RVJSUrYWR42LFy/C3d0dJ06cQL169QAA4eHhaNeuHW7dugUnJyesXLkSkyZNQnx8PExMTAAAEyZMwNatWxEdHQ0ACAgIQGpqKrZv364cu2HDhvDy8kJoaChEBE5OThg9ejTGjBkDAEhOTkbZsmURFhaG7t275+oaU1JSYGVlheTkZFhaWr5uFREVKa4TdujlvNfn+uvlvEREOTGE3MHg+yweOHAA9vb2qF69OoYOHYr79+8r2yIjI2Ftba0kigDQqlUrGBkZ4dixY0qZpk2bKokiAPj5+eHSpUtITExUyrRq1UrrvH5+foiMjAQAxMTEID4+XquMlZUVfHx8lDI5SUtLQ0pKitaLiIiIqCAx6GSxTZs2+OGHHxAREYF58+bh4MGDaNu2LbKysgAA8fHxsLe319qnWLFiKF26NOLj45UyZcuW1SqjWX5Vmee3P79fTmVyMmfOHFhZWSkvZ2fn17p+IiIiIn0rpu8AXub527u1atVC7dq1UblyZRw4cAAtW7bUY2S5M3HiRISEhCjLKSkpTBiJiIioQDHolsUXVapUCWXKlMGVK1cAAA4ODrhz545WmczMTDx48AAODg5KmYSEBK0ymuVXlXl++/P75VQmJ6amprC0tNR6ERERERUkBSpZvHXrFu7fvw9HR0cAgK+vL5KSkhAVFaWU2bdvH9RqNXx8fJQyhw4dQkZGhlJm7969qF69OmxsbJQyERERWufau3cvfH19AQAVK1aEg4ODVpmUlBQcO3ZMKUNERERUGOk1WXz06BFOnz6N06dPA3g2kOT06dOIjY3Fo0ePMHbsWBw9ehTXr19HREQEOnTogCpVqsDPzw8AUKNGDbRp0waDBg3C8ePHcfjwYQwbNgzdu3eHk5MTAKBnz54wMTHBgAEDcP78eWzYsAFLlizRuj08cuRIhIeHY+HChYiOjsa0adNw8uRJDBs2DMCzkdqjRo3CzJkz8dtvv+Hs2bPo06cPnJyctEZvExERERU2eu2zePLkSbRo0UJZ1iRwgYGBWLlyJc6cOYM1a9YgKSkJTk5OaN26NT7//HOYmpoq+/z0008YNmwYWrZsCSMjI3Tu3BlLly5VtltZWWHPnj0ICgqCt7c3ypQpgylTpmjNxfjOO+9g3bp1mDx5Mj799FNUrVoVW7duhYeHh1Jm3LhxSE1NxeDBg5GUlITGjRsjPDwcZmZmb7OKiIiIiPTKYOZZLAoMYa4kooKC8ywSERlG7lCg+iwSERERUf5iskhEREREOjFZJCIiIiKdmCwSERERkU5MFomIiIhIJyaLRERERKQTk0UiIiIi0onJIhERERHpxGSRiIiIiHRiskhEREREOjFZJCIiIiKdmCwSERERkU5MFomIiIhIJyaLRERERKQTk0UiIiIi0onJIhERERHpxGSRiIiIiHRiskhEREREOjFZJCIiIiKdmCwSERERkU5MFomIiIhIJyaLRERERKQTk0UiIiIi0onJIhERERHpxGSRiIiIiHRiskhEREREOjFZJCIiIiKdmCwSERERkU5MFomIiIhIJyaLRERERKQTk0UiIiIi0onJIhERERHpxGSRiIiIiHTSa7J46NAhvP/++3BycoJKpcLWrVu1tosIpkyZAkdHR5QoUQKtWrXC5cuXtco8ePAAvXr1gqWlJaytrTFgwAA8evRIq8yZM2fQpEkTmJmZwdnZGfPnz88Wy8aNG+Hm5gYzMzPUqlULO3fufO1YiIiIiAobvSaLqamp8PT0xPLly3PcPn/+fCxduhShoaE4duwYzM3N4efnh6dPnyplevXqhfPnz2Pv3r3Yvn07Dh06hMGDByvbU1JS0Lp1a7i4uCAqKgoLFizAtGnT8M033yhljhw5gh49emDAgAH466+/0LFjR3Ts2BHnzp17rViIiIiIChuViIi+gwAAlUqFLVu2oGPHjgCeteQ5OTlh9OjRGDNmDAAgOTkZZcuWRVhYGLp3746LFy/C3d0dJ06cQL169QAA4eHhaNeuHW7dugUnJyesXLkSkyZNQnx8PExMTAAAEyZMwNatWxEdHQ0ACAgIQGpqKrZv367E07BhQ3h5eSE0NDRXseRGSkoKrKyskJycDEtLyzypN6LCynXCDr2c9/pcf72cl4goJ4aQOxhsn8WYmBjEx8ejVatWyjorKyv4+PggMjISABAZGQlra2slUQSAVq1awcjICMeOHVPKNG3aVEkUAcDPzw+XLl1CYmKiUub582jKaM6Tm1hykpaWhpSUFK0XERERUUFisMlifHw8AKBs2bJa68uWLatsi4+Ph729vdb2YsWKoXTp0lplcjrG8+fQVeb57a+KJSdz5syBlZWV8nJ2dn7FVRMREREZFoNN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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "data_points = {\n", + " 'LLC Miss Counts': llc_miss_counts,\n", + "}\n", + "\n", + "x = np.arange(len(all_functions)) # the label locations\n", + "width = 0.33 # the width of the bars\n", + "multiplier = .5\n", + "\n", + "fig, ax = plt.subplots(layout='constrained')\n", + "\n", + "for attribute, measurement in data_points.items():\n", + " offset = width * multiplier\n", + " rects = ax.bar(x + offset, measurement, width, label=attribute)\n", + " ax.bar_label(rects, padding=3, rotation=90)\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "ax.set_ylabel('Number')\n", + "ax.set_title(f'Input: {mapping[input]}\\nLLC Miss Counts per Subfunction')\n", + "ax.set_xticks(x + width, all_functions, rotation=30)\n", + "ax.legend(loc='upper left', ncols=3)\n", + "ax.set_ylim(0, 400000)\n", + "\n", + "plt.savefig(f'figures/{input}_llc_miss_counts.png')\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4fddd34e-b40e-428b-b2b4-804a1bfb6ea7", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/notebooks/microarchitecture.ipynb b/notebooks/microarchitecture.ipynb new file mode 100644 index 0000000..f79d947 --- /dev/null +++ b/notebooks/microarchitecture.ipynb @@ -0,0 +1,229 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 36, + "id": "59c35076-0bff-46be-96c3-8ab778dbafd7", + "metadata": {}, + "outputs": [], + "source": [ + "inputs = {\n", + " \"3\": {\n", + " \"Retiring\": 27.7,\n", + " \"Front-End Latency\": 9.9,\n", + " \"Front-End Bandwidth\": 11.8,\n", + " \"Bad Speculation\": 30.5,\n", + " \"(Back-End) Core Bound\": 13.0,\n", + " \"(Back-End) Memory Bound\": 7.1\n", + " },\n", + " \"6\": {\n", + " \"Retiring\": 23.9,\n", + " \"Front-End Latency\": 9.9,\n", + " \"Front-End Bandwidth\": 11.4,\n", + " \"Bad Speculation\": 35.1,\n", + " \"(Back-End) Core Bound\": 11.8,\n", + " \"(Back-End) Memory Bound\": 7.8\n", + " },\n", + " \"8\": {\n", + " \"Retiring\": 27.7,\n", + " \"Front-End Latency\": 10.1,\n", + " \"Front-End Bandwidth\": 9.6,\n", + " \"Bad Speculation\": 33.1,\n", + " \"(Back-End) Core Bound\": 11.6,\n", + " \"(Back-End) Memory Bound\": 7.9\n", + " },\n", + " \"Map\": {\n", + " \"Retiring\": 26.8,\n", + " \"Front-End Latency\": 9.9,\n", + " \"Front-End Bandwidth\": 12.1,\n", + " \"Bad Speculation\": 31.8,\n", + " \"(Back-End) Core Bound\": 12.4,\n", + " \"(Back-End) Memory Bound\": 6.9\n", + " }\n", + "\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "id": "a34ec956-ae32-4966-8853-db02c37b3e2f", + "metadata": {}, + "outputs": [], + "source": [ + "functions = {\n", + " \"Map\": {\n", + " \"Pop_Heap_Hole\": {\n", + " \"Retiring\": 32.3,\n", + " \"Front-End Latency\": 9.1,\n", + " \"Front-End Bandwidth\": 14.7,\n", + " \"Bad Speculation\": 36.8,\n", + " \"Back-End Bound\": 7.0\n", + " },\n", + " \"NearestNeighbor\": {\n", + " \"Retiring\": 20.4,\n", + " \"Front-End Latency\": 10.2,\n", + " \"Front-End Bandwidth\": 7.9,\n", + " \"Bad Speculation\": 47.6, # branch mispredicts\n", + " \"Back-End Bound\": 13.9\n", + " },\n", + " \"isStateValid\": {\n", + " \"Retiring\": 8.6,\n", + " \"Front-End Bound\": 4.5,\n", + " \"Bad Speculation\": 35.4, # branch mispredicts\n", + " \"Core Bound\": 5.3,\n", + " \"Memory Bound\": 46.2 # mostly DRAM bound\n", + " },\n", + " \"Distance\": {\n", + " \"Retiring\": 24.5,\n", + " \"Front-End Bound\": 12.4,\n", + " \"Bad Speculation\": 45.0, # 36% from Branch Misprediction, 9% from Machine Clears\n", + " \"Back-End Bound\": 18.0\n", + " },\n", + " \"isCostBetterThan\": {\n", + " \"Retiring\": 38.5,\n", + " \"Front-End Latency\": 5.3,\n", + " \"Front-End Bandwidth\": 17.6,\n", + " \"Bad Speculation\": 35.7, # branch mispredicts\n", + " \"Back-End Bound\": 2.8\n", + " },\n", + " \"less_operation\": {\n", + " \"Retiring\": 25.7,\n", + " \"Front-End Latency\": 10.6, # almost entirely due to Mispredicts (Branch) Resteers\n", + " \"Front-End Bandwidth\": 12.6,\n", + " \"Bad Speculation\": 41.6, # branch mispredicts\n", + " \"Back-End Bound\": 9.6\n", + " }\n", + " }\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a6a6c41e-fd62-441c-a0ab-9d8a68707541", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "id": "f148c548-65b2-49fc-b4d2-df509a195436", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Retiring': 27.7,\n", + " 'Front-End Latency': 9.9,\n", + " 'Front-End Bandwidth': 11.8,\n", + " 'Bad Speculation': 30.5,\n", + " '(Back-End) Core Bound': 13.0,\n", + " '(Back-End) Memory Bound': 7.1}" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "inputs[\"3\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "id": "63ccd80e-5438-47e1-a1a0-2e4017ff663b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "\n", + "input_image = \"8\"\n", + "data_points = inputs[input_image]\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "colors = [\"green\"] + [\"red\" for i in data_points.values()]\n", + "bar_container = ax.bar(data_points.keys(), data_points.values(), color=colors)\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "ax.set_ylabel('Percentage of Pipeline Slots')\n", + "ax.set_title(f'Input: {input_image}\\nDistribution of Pipeline Slots in %')\n", + "ax.set_ylim(0, 40)\n", + "ax.bar_label(bar_container, data_points.values())\n", + "\n", + "plt.xticks(rotation=30, ha='right')\n", + "plt.subplots_adjust(bottom=0.25)\n", + "plt.savefig(f'figures/MICROARCHITECTURE_{input_image}.png')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a575306e-2a58-4e9e-bbae-8e5775966d70", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "x = np.arange(len(inputs)) # the label locations\n", + "width = 0.33 # the width of the bars\n", + "multiplier = .5\n", + "\n", + "fig, ax = plt.subplots(layout='constrained')\n", + "\n", + "for attribute, measurement in data_points.items():\n", + " offset = width * multiplier\n", + " rects = ax.bar(x + offset, measurement, width, label=attribute)\n", + " ax.bar_label(rects, padding=3, rotation=90)\n", + " multiplier += 1\n", + "\n", + "# Add some text for labels, title and custom x-axis tick labels, etc.\n", + "ax.set_ylabel('Milliseconds (ms)')\n", + "ax.set_title(\"\")\n", + "ax.set_xticks(x + width, all_functions, rotation=30)\n", + "ax.legend(loc='upper left', ncols=3)\n", + "ax.set_ylim(0, 380)\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}