Newer
Older
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
"* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {
"exercise": "solution",
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"cols = [\n",
" 'Avg. Neuron Build Time / s', \n",
" 'Min. Edge Build Time / s', \n",
" 'Min. Init. Time / s', \n",
" 'Presim. Time / s', \n",
" 'Sim. Time / s'\n",
"]\n",
"df[\"Unaccounted Time / s\"] = df['Runtime Program / s']\n",
"for entry in cols:\n",
" df[\"Unaccounted Time / s\"] = df[\"Unaccounted Time / s\"] - df[entry]"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {
"exercise": "solution",
"slideshow": {
"slide_type": "subslide"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Runtime Program / s</th>\n",
" <th>Unaccounted Time / s</th>\n",
" <th>Avg. Neuron Build Time / s</th>\n",
" <th>Min. Edge Build Time / s</th>\n",
" <th>Min. Init. Time / s</th>\n",
" <th>Presim. Time / s</th>\n",
" <th>Sim. Time / s</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Threads</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>420.42</td>\n",
" <td>2.09</td>\n",
" <td>0.29</td>\n",
" <td>88.12</td>\n",
" <td>1.14</td>\n",
" <td>17.26</td>\n",
" <td>311.52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>202.15</td>\n",
" <td>2.43</td>\n",
" <td>0.28</td>\n",
" <td>47.98</td>\n",
" <td>0.70</td>\n",
" <td>7.95</td>\n",
" <td>142.81</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Runtime Program / s Unaccounted Time / s \\\n",
"Threads \n",
"8 420.42 2.09 \n",
"16 202.15 2.43 \n",
"\n",
" Avg. Neuron Build Time / s Min. Edge Build Time / s \\\n",
"Threads \n",
"8 0.29 88.12 \n",
"16 0.28 47.98 \n",
"\n",
" Min. Init. Time / s Presim. Time / s Sim. Time / s \n",
"Threads \n",
"8 1.14 17.26 311.52 \n",
"16 0.70 7.95 142.81 "
]
},
"execution_count": 103,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[[\"Runtime Program / s\", \"Unaccounted Time / s\", *cols]].head(2)"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"exercise": "solution",
"slideshow": {
"slide_type": "-"
}
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAscAAAERCAYAAACXeQqBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABUzklEQVR4nO3deVxN+f8H8Net222xJBQGYye7yJKtGaOQsmTfY5AZZSwTg+xSyDrGjLEvY0lD9mXGNpOQ4pvdb1AGpU1U0nLvPb8/1B0pdW+drltez8fj+/jWuZ/zOu9zXebd6XM+RyIIggAiIiIiIoLexy6AiIiIiEhXsDkmIiIiIsrE5piIiIiIKBObYyIiIiKiTGyOiYiIiIgysTkmIiIiIsok/dgFvC8h4TWUyrxXl6tQoTTi45MLfSyxcsTM0sWaxMxiTdrN0dUs1qT9LNak/SzWpP0s1qT9rOJak56eBGZmpXJ9TeeaY6VSyLc5zhon1vHEUpJrEjOLNWk3R1ezWJP2s1iT9rNYk/azWJP2s0paTZxWQURERESUic0xEREREVEmNsdERERERJl0bs4xERERFR8KhRwJCbGQy9MLnBETowelUlnoWsTKETNLF2sSM0vXa5JKZTAzM4e+vvotL5tjIiIiKrCEhFgYGZmgVKnKkEgkBcqQSvUglxe+KRIrR8wsXaxJzCxdrkkQBLx+nYiEhFhUrFhF7f05rYKIiIgKTC5PR6lSZQvcGBMVFYlEglKlymr8Ww02x0RERFQobIxJVxXks8lpFURERCSaMmWNYWQofnuRmiZHUuIb0XOJ3qfzzbFpWRlkhoY5tpubl1F9nZ6WhleJBb8RgIiIiMRhZCiF07RDouceWdEbSfmMiYyMxLffjoO//5Fs2zt2tEZgYIjoNRWVQ4cOwMTEBHZ23dXep39/J/z44wZUqfIZAODVq5f47rtvAQAvXsQDAMqXrwAA8PCYhaNHAzBjhqeodaenp2PqVDesW/erqLnapvPNsczQEOtmjs5zjJv3VgBsjomIiKj4u3XrBqysWhUqw9S0HLZt2w0A2Lx5AwDg669dVa83b95MtBvpsoSFXUOLFi1FzfwYdL45JiIiIhLD8eNHcOVKEBITExEZ+QytW7fD99//ALlcjhUrfPDo0UO8ePECn39eA0uX+kIqlWHfvt8QEPA79PX10b59J3z77SQ8fx6FJUsWICHhBYyMjDBjxhzUrVsPx44dxt69uyCRSNCgQUNMmTIdZcuWznbl+vjxI7h+PRSzZ89H//5O6NbNAcHBl/DmTSo8PRcgKSkRgYF/ITT0KipUqIh69epj+fIliI6Ohr6+HsaPn4jWrdsiMfEVFi6cg5iYaNSsWRvp6epfJLx2LQRbt27Ejz9ugJvbeNSv3wAhIcFIS0vD5Mke8Pffh/Dwhxg0aCgGDRqGlJQUrFy5FI8ePYRSqcSwYSNzvap9+XIQvvyya7ZtDx78g2XLvKBQKCCTyTBr1jxUr/554f4gixhvyCMiIqJPxs2bN+DltQzbt+9FUNDfePjwAW7dugGp1AAbNmzFvn0HkZaWiqCgi7hz5xYOHvTHxo07sG3bHty/fw/37t3FihU+sLXtgp07/TBmzHhs374ZDx8+wI4dW7Bu3a/YsWMfjIyMsXXrxnzrMTU1xcaNO9CnjzN27tyC1q3bomPHzhg7dgLatrXBmjW+6NmzF7Zs2YXly1dh+fIlSEl5jU2bfkH9+pbYsWMfnJ0HqKZOFNSOHfvQrZsDVq9eDi+vZVi/fhO2bt0EANi+fTMaNGiILVt24aeffsWOHVvw7NnTHBl37txCw4aNs23z89uNwYOHY/PmnejffxBu375ZqDq1gVeOiYiIqETQ08u5MoEgCNlWLGjatBlMTEoBAD77rCoSE1/ByqoVypY1xe+/++HffyPw9OkTvHmTgv/97zo6dOiE0qVLAwDWrFkPAPjf/65h/nwvAICNTUfY2HTE77/vQ4cOnWBqWg4A0KtXX3h7L8i35rZt2wMAateuiwsXzuV4PSQkGI8fP8amTRsgkQByuRzPnj3F9euhmD9/CQCgRYuW+Oyzquq+TTm0a9cBAFC5chU0btwURkZGqFy5CpKTk1Q1pKWl4tixwwCA1NRUhIc/QtWq1VQZUVGRsLCoDH19/WzZNjYdsHLlMly5EoT27Tvhiy++KnCd2sLmmIiIiEqEMmXKIjk5Odu2hIQXKFOmrOp7mSz7Tf6CICAw8AI2bdqAAQMGw8GhF16+fAlBECCVZm+T4uJiYWholO1pa4IgICIiHEql8F41AhQKRbZxEokEcrk82yiZTJZtzPsUCiXWrv0ZZcuaQirVw/Pn0TAzKw+JRJLtaXLvN6WaePc8c8tRKhWYM2cRGjSwBPD2Br+yZU2zjbl8OQjt2rXPse+XX3ZFkybNcPHi39i/fw8uX74o+o2AYuO0CiIiIioRSpUqherVq+P8+TOqbYcPH4S1dZs89wsJCUaXLl3Rs2cvVKhQAWFh16FUKtG8uRUuXw5CSkoK5HI55s+fjXv37qBFCyv8+efpzH2vYNkyL1hZtUJg4F9ITHyVedwAWFlZAwDKlSuH8PCHmY34X/meh76+vqqxbtXKGgcO7AcAhIc/wqhRg5GWlgpr6zY4ffoEAODu3du5TnMQS8uWrREQ4A8AiIuLw6hRQxAd/TzbmODgS2jb1ibHvnPnzsSdO7fRp08/jB07Affv3yuyOsWi9pXjpUuXIiEhAT4+Prh79y48PT2RnJwMa2trLFiwAFKpFJGRkfDw8EB8fDxq1aoFX19flCpVqijrJyIiIh2SmibHkRW9iyRXHXPmLMKKFT7YunUT5PIM1KlTD1OnzshzHyenvliwYDbOnfsTBgYyNG7cBJGRz+Dg0AvOzgMxYcJoKJUCbG2/ROvWbTNv2FuMgwf9M2/I80StWrUxYsRouLmNh1wuR4MGDeHhMRMAMGGCG6ZPn4Ly5SugWbMWePXqZZ71WFu3wYYN61G6dGlMmTIdy5Z5YdSowQAAT8+FMDEpha+/doWX1wIMHz4QNWrUKNS0ivyMGTMOK1YsxYgRA6FUKvHtt5OyTalIT09HUlKSaqm4d40YMRpLly7G9u2boK+vD3f3KUVWp1gkQm7X8N9z6dIlTJkyBV988QV8fHzg6OiIxYsXo0WLFpg1axaaNGmCoUOHwtXVFb169ULPnj3x008/ISUlBR4eHhoVFB+fnO1XE+bmZdRayi02Nr/VD3MyNy9ToP2KMksXaxIzizVpN0dXs1iT9rNYk/azPpWanj9/jMqVaxQqSyrVE2VZMbFyxMzSxZrEzCoONeX2GdXTk6BChdK57p/vtIqXL19i1apVmDBhAgDg2bNnSE1NRYsWLQAAzs7OOHnyJDIyMnD16lV069Yt23YiIiIiouIi32kVc+fOxZQpUxAVFQUAiImJgbm5uep1c3NzREdHIyEhAaVLl1ZN6s7arqkPdfH5efeJedrYryizdLEmMbNYk3ZzdDWLNWk/izVpP+tTqCkmRg9SaeFvYRIjQ8wcMbN0sSYxs3S9Jj09PY0+93k2x/v370eVKlVgY2ODAwcOAMj9TkqJRPLB7ZrKbVqFOjitonhksSbt5uhqFmvSfhZr0n7Wp1KTUqks9K/CP6Vf8Ze0rOJQk1KpzPG5z2taRZ7N8fHjxxEbG4vevXvj1atXSElJgUQiQVxcnGpMbGwsLCwsUL58eSQnJ0OhUEBfX1+1nYiIiIiouMjz2vXWrVtx9OhRHDp0CJMmTUKXLl3g7e0NQ0NDhIaGAgACAgLQuXNnGBgYwNraGsePH8+2nYiIiIiouCjQxA5fX194e3ujR48eePPmDUaOHAkAmDdvHvz8/ODg4ICQkBBMnjxZzFqJiIiIiIqU2uscOzs7w9nZGQBgaWkJf3//HGOqVq2KnTt3ilcdERERFStmpjJI33sKnRjk6WlIeJUuei7R+/j4aCIiIhKNVGaIR179RM+tPft3AOo3x48ePcDIkYOxePFSfPHFV6LVce1aCKZNc8fmzbtQu3Yd1faOHa0RGBgi2nEKIioqEkOGOKNmzdoQBAFyeQZat26LSZOmQU/vw5MFNm36BZaWDVGnTj24u7vC3/9IjjHvn9/Dhw+waNFcSCTA8+fPYWxsjLJlTWFgYIBRo8bg3r27GDt2gqjnFxMTjbVrV2Lx4qWi5r6PzTERERGVOMeOHcEXX3yFgIDfRW2OsyxZsgAbNmyFvr6+6NmFUbGiObZt2w0AkMvl+OabMbhyJQg2Nh0/uE9WExsVFan2cerUqYtt23ZDKtXDggVzYWXVCg4OTqrXO3a0LeAZfNjly0Fo16696LnvY3NMREREJYpcLsfp0yfw008b8c03Y/Ds2VMcOOCHChXMMXToCACAp+d02Nl1R8OGjbFw4RwkJSWidu26+N//ruHgweN55jdu3BQGBgb47bftGDlyTLbXFAoF1q9fg+vXQ6FQKOHo6IQBA4bi2rUQbNnyK9at+xUA4OU1H1ZWrWBl1QrTprnD1LQcZDJDrFq1DmvXrkBIyFVIJEC3bg4YPtwF166FYNeubTA0NERERDjq1KmLefO8YGBg8ME609PTkJEhR7lyZgAAN7fxGDNmPFq2tEZkZCS+/XYc/P2PZKslS1RUJBYunIM3b96gceMmGr3/x48fwfXroZg9ez7693dCly52CAoKhL6+PlxdJ2Lv3l14+vQJJk6cjK++ssOLF/FYvnwJYmKiIZHowdV1Ilq3bpsj98qVIEyZMj3btpCQYKxfvxYSiQRlypTB/PlLULFieY3qfZ94qzYTERER6YBLlwJRuXJlfP55DXTq9AUOHfod3bo54MyZ0wCAlJTXuHnzBmxsOmLNGl906WKH7dv34osvvkJsbIxax5gxYw78/Hbj0aOH2bYfOXIQALBly2/YuHE7/vrrAsLCrueZ9e+/jzF37iKsWbMeAQG/Izo6Gtu378HGjTtw4cJZBAUFAgBu3gzDlCnT8dtv/oiOfo4rVy7lyIqLi4WLy1CMGjUEffs6wMzMDHXq1FPrnN61atUyODg4Ydu23WjatLnG+7+rYkVz7NrlhwYNLLFr1zasXLkOc+YsxK5dWwEAa9b4omfPXti+fTd8fFZi+fIlSEl5nS1DLpfj5cuXqFjRPNv27ds3w8NjJjZv3okOHTrj//7vXqFqBdgcExERUQlz/PgRdO3aDQDw1Vd2OH78KGrVqoP09DQ8ffoEFy6cQ/v2nSCTyXD1ajC6d3cAANjafonSpdV7+FjlypUxfvxELFmyAAqFQrU9JCQYgYF/wcVlKMaPd0FsbDQePnyQZ5aZWXlUqfIZAODatatwcHCEvr4+jIyMYGfXA6GhwQCA2rXrwMKiEvT09FCjRi0kJSXmyMqaVrF9+x4cPfonypUzw+rVy9U6p3ddvx6Kr76yAwDY2/dQPQG5ILKmQlSqVBktWrSEVCpF5cpVkJT09sEcISHB2LRpA0aMGIzvv58EuVyOZ8+eZsu4ceN/uTbpHTt2xqxZHli5cilq1qyJNm3aFbjOLJxWQURERCVGQsILXLp0Effu3cX+/XshCAKSkhJx/vwZ2Nu/vXp869YNDBs2CsDbRwu/+2ReTfTq1Rfnzv2J337brtqmUCjx7beTYGvbBQCQnPwKBgaGuHPndrZ95XK56mtDw/9W98hZi6BqvmXvrALyoacTv8vAwABdunTFr7+uV+2T2/FzJ1HVIpFI8ryhLz/vTv3IbY62QqHE2rU/o3x5M8jlSsTFxcLMLPvUiMuXg9C+fc5504MGDUOHDp0RFPQ31q9fiy++uI2vvx5X4FoBXjkmIiKiEuTUqeNo1aoNDh48Dn//I/j996MYOXIMDh06AHv77jh79g88efIEzZtbAQBat26LP/44CQC4dOkikpM1e7x21vSKLK1aWePw4QDI5XKkpKTA1fVr3L59C6am5RAZ+QxpaWlITHz1wakWrVpZ48SJY1AoFEhNTcXp0ydhZWVdwHcDCA0NQf36lgAAU9NyCA9/Ow3kr7/O5bmftXUbnDr1du71hQtnkZ5edMvotWpljQMH9gMAwsMfYdSowUhLS8025tatG2jSpFmOfceNG4WUlNcYOHAoBg4cKsq0Cl45JiIiItHI09Myl10TP1cdx48fwfjxE7Ntc3YegN27dyA1NRWmpuXQuHFT1VXU776bhkWL5uHw4QOoW7e+alrF3bt3sGHDevj6rs3zeFnTK5Yt8wIA9OnTH0+fPsHo0UOhUCjg6NgbLVu+bW5tbDpgxIiBqFLlM1Vz/r7evfvhyZN/4eIyBHK5HN26OcDW9ktcu6beMnFZc46BtzfkVatWHTNmeAIAhg0bCS+v+Th27DBsbb/MM2fq1OlYtGguDh8+AEvLRjAxKaXW8QtiypTpWLbMC8OGDYQgCPD0XJjteDEx0ShfvkKuUztcXSfCy2sB9PX1YWhoCA+PmYWuRyLkd01ey+Ljk7P9SsHcvAzWzRyd5z5u3lsRG6vZT3pZ2QXZryizdLEmMbNYk3ZzdDWLNWk/izVpP+tTqen588eoXLlGobKkUj3I5cpC11SQnP3798Laug1q1aqN+/fvYenSxdiyZddHrak4ZRWHmnL7jOrpSVChQunc9y90BURERETFVLVq1TF//mzo6UkgkxmqrrLSp4vNMREREX2ybGw6wMamw8cug3QIb8gjIiIiIsrE5piIiIiIKBObYyIiIiKiTJxzTERERKIpU84QRgYy0XNTM9KR9FK95dyICkOt5njNmjU4deoUJBIJ+vfvj9GjR2PmzJkIDQ2FsbExAMDNzQ12dnYICgqCt7c30tLS0KNHD0yZMqVIT4CIiIh0h5GBDAP3fSN6rt+gn5GEvJvjyMhIODs7olevvpg+fbZq+z//3Mfo0cMwa9Y8ODg4wcVlKLZt251HUu6ioiIxZIgzatasnW27k1Mf9Os3MNu248eP4Pr1UMybt1Dj47zLy2s+QkOvomxZUwiCElKpAaZOnYHGjZt8cJ+4uFj4+CyCr+9aeHnNh5VVKzg4OGUbs3HjL1AqBXz9tatq24oVS3HzZhjk8gw8ffpEdZ4DBgzGuXN/4ocf5qBiRfNCnc/7fHwWYeDAoahdu46ouYWRb3McHByMy5cv4/Dhw5DL5XBwcICtrS1u3bqFXbt2wcLCQjU2NTUVs2bNws6dO1GlShW4urriwoULsLW1LdKTICIiIgIAU1NTXLlyCQqFQvWo4jNn/kC5cmaqMQVpjLNUrGheqP0LYuzYCXBwcIJUqoezZ89i9epl2LhxxwfHV6xonu/DS3IzbdoMAG9/CHB3d812nj179tK8cDWEhz/SqcYYUKM5btOmDXbs2AGpVIro6GgoFAoYGhoiMjISc+bMQWRkJOzs7ODm5oYbN26gRo0aqF69OgDAyckJJ0+eZHNMREREWmFsbIJ69eojLOy66sl0wcGXYW3dRjWmY0drBAaGYPPmDYiLi8WTJ/8iOvo5HB17Y9Sorwt87JMnj2H79s0oVao0KleuDGNjEwDAtWshWL16OfT19dG4cTNERDzCunW/4unTJ/D19UZi4isYGhphyhQP1aOeP+T162SYmVVQ5W7Z8ivWrfsVAFRXia2sWsHd3RX+/key7bt79w4cPnwQpqblULZsWVhaNlL73Pr3d8KPP27A9euhCAoKRFxcLGJiojF48DBERUXh2rW3V7d9fdfC0NAQJ04cxf79e6BUCmjQwBJTp86AoaFhtswHD/5BnTp1s22Ty+Xw9l6AR4/ePua6b98B6NWrr9p1ikGtaRUGBgZYu3YttmzZgu7du0OhUKBdu3ZYuHAhTExM4OrqCn9/f5iYmMDc/L/L7RYWFoiOjtaooA89rSQ/5uZltLpfUWbpYk1iZrEm7eboahZr0n4Wa9J+1qdQU0yMHqRS7dzfr+5xuna1x4ULZ9CmTRvcuXMb9erVgyC8fSpaVoZUqgc9PQkePnyADRs2IykpCf3798LAgYNRpkyZXI+nr6+HuLhYjB49NNv2efMWwdS0HH7++Ufs2LEHpqammDZtEkxMSkEuz8DixfOwYsUa1KtXHytXLodE8rYOL6/5+P77GWjQwBLh4Y8wY8Y0+PkdzJYtkUiwefMG7N+/B2/evEF09HMsX74KUqke9PX1VFlZY/X0JNDX/+8cs7b98889HDt2GDt27IFEIsHYsaPQqFHjXN/Td/d/f7uengT37t3Gb7/5ITExEX37OmL16nWYNs0D3347HqGhV1CtWnUcPRqAjRu3wdDQEOvX/4h9+37DmDFjs+UFB19Chw4dsx3nzp2bSEpKws6de/Hq1UusWbMKzs791Ppzf9e7mXp6ehp97tW+IW/SpEkYN24cJkyYgEuXLuGnn35SvTZixAgEBASge/fuOfbLena5unJ7fLQ6+Pjo4pHFmrSbo6tZrEn7WaxJ+1mfSk1KpVK0xwfnR93j2Nh0xC+/rEd6uhynT5/Cl1/a4cyZ01AqBVWGXK6EUinAyqoVJBJ9lC1bDmXKlMWrV4kwNi6V66OMFQolKlY0x9atOadVnDv3J5o0aQpT07fTN+zseiA09CoePHiAcuXMUKtWXcjlSvTo4YT/+z9fJCYm4+7d21i0aL4qIyUlBfHxL2BqWk61TRDezgvOmlZx584duLm9nfKgUCghCP+dkyAIUCoFKBT/nWPWtqtXr6Jduw6QyYwAAF99ZYeMDHmu7+m7+7+/XakU0KRJcxgamsDc/O2V8RYtrCGXK1GpUmW8fPkKUVFRePLkCb7+elRmTgbq17fMkXf16hX06dNPtV0q1UONGrXw+HEEJk36Fu3adcCECW4af77e/7NTKpU5PveFenz0w4cPkZ6ejoYNG8LY2Bj29vY4fvw4ypUrh27dugF4+4chlUpRqVIlxMXFqfaNiYnJNieZiIiIqKiZmJRC3br1cOPG/3Dt2lVMmOCGM2dO5zpWJvtvZQ2JRAJBEHIdlx+JRJLt4l7WfGd9fX0IQs7mTqlUQiYzzDavNyYmGmXLmuZ5nPr1LVG1alXcv3832zxq4O2UhLzqe7cOfX19ZGR8eHxeDAwMsn0vlWZvJxUKJbp06YrJkz0AvG36FQpFtjGvXydDIpHAxKRUtu2mpuWwc6cfrl69gkuXLmLMmOHYudNPdTVfG/L9/cTTp0/h6emJ9PR0pKen48yZM2jdujWWLFmCV69eISMjA/v27YOdnR2aN2+O8PBwPH78GAqFAkePHkXnzp21cR5EREREKl26dMUvv6xDgwaNcjRvRaFZsxa4c+cmYmNjoFQqcfbsHwCAmjVrISkpCQ8fPgAA/PHHSUgkEpQuXRrVqlXHqVPHAQBXr17GxInj8z3O8+dRiIqKRN269WFqWg6Rkc+QlpaGxMRXCAu7/sH9rK1bIygoEMnJyUhLS8OFC+dEOOvcWVm1wl9/nUdCwgsIgoAVK7zh55f9antISHC2eeBZAgMvYOHCOWjfviMmT/4exsbGiInRbIpuYeX7abG1tUVYWBj69OkDfX192Nvbw83NDWZmZhgyZAjkcjns7e3h6OgIAPDx8YG7uzvS0tJga2ub61QLIiIiKplSM9LhN+jnIsnVRIcOneHjswhjx07Q+FhxcbHw8Pgu1+kTcXGxcHHJPue4RQsrTJ7skfm/b2FkZIyaNWsBeHuVdc6cRVi8eC4kEj18/nkN1Y1p8+YtxvLlS7B79w5IpQZYuHBJrtNRN236BX5+eyCRvF0ZbOLEyahe/XMAgI1NB4wYMRBVqnyG5s2tPnhO9eo1wIABQzB27EiUKVMGVapU0fh9UVe9evUxevQ4TJo0AYIgoF69Bhg+3CXbmMuXgzBgwOAc+7Zr1wHnzp3BiBEDIZPJYGvbJcdNe0VNIhT09wdFJLc5x+tmjs5zHzfvrZxzXEyyWJN2c3Q1izVpP4s1aT/rU6np+fPHqFy5RqGycpvf+zFzxMzS0wPWrVuD0aPHw9jYGHv37kJsbCzc3TV/DoQunl9xqCm3z2ih5hwTERERUcHo6emhTBlTjBs3ElKpAapUqYIffpjzscuiPLA5JiIiIipCI0a4YMQIl49dBqlJOwsTEhEREREVA2yOiYiIiIgysTkmIiIiIsrE5piIiIiIKBNvyCMiIiLRmJWRQWpkKHquPDUNCUmarXVMVBBsjomIiEg0UiNDXOzdT/TcDod+B/JpjiMjI+Hs7Ihevfpi+vTZqu3//HMfo0cPw6xZ8+Dg4AQXl6HZHtusiY4drREYGPLB1+PiYuHjswi+vmsRGPgXIiOfYuDAobmOffXqJb777lsAwIsX8QCA8uUrAAA8PGbhyJGDoi/7lp6ejqlT3fDLL5tEzS1J2BwTERFRiWFqaoorVy5BoVBAX18fAHDmzB8oV85MNaagjbE6KlY0h6/vWgDA/ft3oaeX84l3/9VaTlXL5s0bAABff+2qer1x4yai1xcWdg0tWrQUPbckYXNMREREJYaxsQnq1auPsLDraNnSGgAQHHwZ1tZtVGOyrv5u3rwBcXGxePLkX0RHP4ejY2+MGvW1Wse5di0EO3duhZGRESIiwlGnTl3Mm+eFuLhYuLu7YvnyNTh06AAAwMKiMnr27KXReVy7FoItW37FunW/ws1tPOrXb4DQ0KtITU3F5Mke8Pffh/Dwhxg0aCgGDRqGlJQUrFy5FI8ePYRSqcSwYSNhZ9c9R+7ly0H48suu2bY9ePAPli3zgkKhgEwmw6xZ81SPp/4UsTkmIiKiEuXLL+1w7twZtGxpjbt3b6Nu3XoQBCHXsQ8e/IP16zchOTkJAwf2gbPzQJQpU0at49y6dQO//eaPihXN4erqgitXLqFOnboAgFq1aqN3b2fo6Uk0bow/5Lff/PDrr79g9erl2L59L16+TICLy9vmePv2zWjQoCE8PRfg9etkTJgwBo0aNUHVqtWyZdy5cwvffvtdtm1+frsxePBwdOnSFWfOnMbt2zfZHBMRERGVFB07dsLGjT9DqVTizJk/0KWLHc6cOZ3r2JYtrWFgYAAzs/IoW7YsXr9OVrs5rlWrDiwsKgEAatSohaSkRNHO4X3t2nUAAFSuXAWNGzeFkZERKleuguTkJABASEgw0tJScezYYQBAamoqwsMfZWuOo6IiYWFRWTXdJIuNTQesXLkMV64EoX37Tvjii6+K7DyKAzbHREREVKKYmJRC3br1cOPG/3Dt2lVMmOD2weZYJpOpvpZIJB+8wiz2vpqSSv9r2d5vbgFAqVRgzpxFaNDAEsDbG/zKljXNNuby5SC0a9c+x75fftkVTZo0w8WLf2P//j24fPkiZszwFPkMig+uc0xEREQlTpcuXfHLL+vQoEGjbI2lNunr60OhUGjlWC1btkZAgD8AIC4uDqNGDUF09PNsY4KDL6FtW5sc+86dOxN37txGnz79MHbsBNy/f08rNesqXjkmIiIi0chT094uu1YEuZro0KEzfHwWYezYCRofKy4uFh4e32Hr1sKtatGiRUt4ec1HuXJmaNKkGTZt+kW1koXYxowZhxUrlmLEiIFQKpX49ttJ2aZUpKenIykpSbVU3LtGjBiNpUsXY/v2TdDX14e7+5QiqbG4kAhF+TuAAoiPT4ZS+V9J5uZlsG7m6Dz3cfPeitjYJI2PZW5epkD7FWWWLtYkZhZr0m6OrmaxJu1nsSbtZ30qNT1//hiVK9coVJZUqge5XFnomsTKETNLF2sSM6s41JTbZ1RPT4IKFUrnur9a0yrWrFkDBwcH9OzZE1u3bgUABAUFwcnJCfb29li1apVq7N27d9GvXz9069YNs2fPhlwu1/ikiIiIiIg+hnyb4+DgYFy+fBmHDx/G77//jp07d+LevXuYNWsW1q9fj+PHj+PWrVu4cOECAMDDwwNz5szBqVOnIAgC/Pz8ivwkiIiIiIjEkG9z3KZNG+zYsQNSqRTx8fFQKBRITExEjRo1UL16dUilUjg5OeHkyZN49uwZUlNT0aJFCwCAs7MzTp48WdTnQEREREQkCrVuyDMwMMDatWuxZcsWdO/eHTExMTA3N1e9bmFhgejo6Bzbzc3NER0drVFBH5r/kR9zc/XWJBRrv6LM0sWaxMxiTdrN0dUs1qT9LNak/axPoaaYGD1IpYVf/EqMDDFzxMzSxZrEzNL1mvT09DT63Ku9WsWkSZMwbtw4TJgwARERETle/9D6fhLJh58pnpvcbshTB2/IKx5ZrEm7ObqaxZq0n8WatJ/1qdSkVCoLfRPVp3RzWEnLKg41KZXKHJ/7vG7Iy7c5fvjwIdLT09GwYUMYGxvD3t4eJ0+ezLYAdUxMDCwsLFCpUiXExcWptsfGxsLCwkLjkyIiIqLiybSsMWSG4q8Um54mx6vEN6LnEr0v30/v06dPsXbtWuzZswcAcObMGQwePBjLli3D48ePUa1aNRw9ehT9+vVD1apVYWhoiNDQULRq1QoBAQHo3LlzkZ8EERER6QaZoRQLpx0VPXfuCsd8x0RGRmLgwD6oWbM2JBIgI0OOihUrYtasearHPBfUpk2/wNKyITp2tC1wxrFjh7F//14AQETEI1SrVh1SqQGaNm0OU1PTQufn5tSp40hOTka/fgNFzS3J8m2ObW1tERYWhj59+kBfXx/29vbo2bMnypcvD3d3d6SlpcHW1hbdu3cHAPj6+sLT0xOvX79Go0aNMHLkyCI/CSIiIiIAqFjRHNu2/ffwjl9+WYdVq5bD29u3ULkFeZjI+3r27IWePXsBAPr3d8Ly5WtQpcpnhc7Ny+XLQaLU/ilR6/cekyZNwqRJk7Jts7GxweHDh3OMtbS0hL+/vzjVERERERVC8+ZWCAz8C8DbhrRRoyb455/7WL9+Ey5fDsL+/XugVApo0MASU6fOgL6+Pry9FyA8/BEEQUDfvgPQq1dfeHnNh5VVK1hZtcLMmd/js8+q4tGjB2jQoCGsrFrhxImjSEpKxJIlvqhZs5bGdaqTn5ycBC+v5ahZsxbu3r2NtWtXIi0tFaam5eDhMQuffVY1W6ZSqcTz55HZnpQHAHv37sLJk8cgkUjQsGFjTJ8+u+BvcAkk3u2FRERERDpELpfj7Nk/0LRpc9W2du3aY8+eA0hISMCRIwH4+ect2LZtN8zMymPPnp24eTMMiYmJ2LFjD1avXo+bN8Ny5D58+A9cXL7G7t2/4969O3j+PAobNmxF167dcPjwgULX/aF8O7u3+RkZGfDxWYx587ywZctvGDx4OJYu9cqRc/fuHVhaNs7xnuzatQ3btu3C5s27oKenh9jYmELXXJKIP2OeiIiI6COJi4uFi8tQAEBGRjoaNmyMb75xU73eqFETAMD16yF4+vQJXF1HAwDk8gzUr2+Jvn37499/H+O7775F27Yd8M037jmOUb58BdSvbwkAMDe3QKtWrQEAlStXwfXrkYU+h7zynz17hidPHiMy8il++GGqap/Xr1/nyLl8+SLatWufbZtUKkWTJs0wevQIdOxoC2fnATA35+IJ72JzTERERCXG+3OO32doaAgAUCiU6NKlKyZP9gAApKSkQKFQoEyZMti50w/XrgUjMDAQY8YMx86d2Z/2a2BgkO37d1fwEkN++QqFEp99VlV1ngqFAgkJL3Lk/O9/1zB8uEuO7d7eK3Dv3i1cvHgR06ZNwty5i2Bl1Uq8EyjmOK2CiIiIPjlWVq3w11/nkZDwAoIgYMUKb/j57UZg4AUsXDgHHTp0wuTJ38PY2BgxMZo90Kyo1ahRE4mJiQgLuw7g7SoY8+dnnzf88uVLGBubqH4YyJKQkIBhw/qjTp16GDt2Alq3bouHD//RWu3FAa8cExERkWjS0+RqLbtWkFwx1atXH6NHj8OkSRMgCALq1WuA4cNdoK+vj3PnzmDIkP6QyWSwte2COnXqapy/adMvqFixIvr3F38JNZlMhkWLfLBmjS/S09NhYlIKnp4Lso0JDr6Etm3b5djXzMwMvXs7Y/To4TA0NEKlSpXh4OAkeo3FmUTI7bF2H1FuT8hbN3N0nvu4eW/lE/KKSRZr0m6OrmaxJu1nsSbtZ30qNT1//hiVK9coVNan9LS2kpZVHGrK7TOa1xPyOK2CiIiIiCgTm2MiIiIiokxsjomIiIiIMrE5JiIiIiLKxOaYiIiIiCgTm2MiIiIiokxc55iIiIhEY1pWBtl7D54QQ3paGl4lpoueS/Q+NsdEREQkGpmhYb7PJygIN++tAPJvjs+d+xM7d26DQqGAICjRvXtPDB06EgDw/feT8MMPc1CxonmB61ixYilu3gyDXJ6Bp0+foGbN2gCAAQMG49y5Pwudnxsfn0UYOHAo6tevJ2ou5Y7NMREREZUIMTExWLduNbZs2QVT03JISUmBm9t4fP55DXTsaAtf37WFPsa0aTMAAFFRkXB3d8W2bbtVr/Xs2avQ+bkJD3+E2rXrFEk25aRWc7xu3TqcOHECAGBra4vp06dj5syZCA0NhbGxMQDAzc0NdnZ2CAoKgre3N9LS0tCjRw9MmTKl6KonIiIiyvTq1UvI5XKkpqbC1BQwMTGBp+d8yGRvp3n07++EH3/cgOvXQxEUFIi4uFjExERj4MAhiI6OxrVrV1G2rCl8fddCKjXW+Pi55cfGxmDAgME58g0NDXHixFHs378HSqWABg0sMXXqDBi+NyXlwYN/cjy+Wi6Xw9t7AR49eggA6Nt3AHr16lvAd43el+8NeUFBQQgMDMTBgwcREBCA27dv448//sCtW7ewa9cuHDp0CIcOHYKdnR1SU1Mxa9YsrF+/HsePH8etW7dw4cIFbZwHERERfeLq1auPTp1sMXBgb4wbNxLr16+FQqFEtWrVc4y9e/c2VqxYi/XrN2HdutVo1649tm/fCwAIDr5U6Fqy8n/5Jff8R48e4siRAPz88xZs27YbZmblsWfPzhw5ly9fRLt2HbJtu3kzDImJidi6dTdWr16PmzfDCl0v/Sff5tjc3Bw//PADZDIZDAwMUKdOHURGRiIyMhJz5syBk5MT1q5dC6VSiRs3bqBGjRqoXr06pFIpnJyccPLkSW2cBxERERG+/34m/P2PoE+f/oiOjoKr62hcuHA2x7imTZujVKnSqFy5CgCgVavWAIDKlasgKSmp0HVk5Vep8lmu+devh+Dp0ydwdR0NF5ehCAy8gH//fZwjJzT0KqytW2fbVrt2Hfz772NMneqGU6dO4Jtv3AtdL/0n32kV9er9N/k7IiICx48fx+7duxEcHIyFCxfCxMQErq6u8Pf3h4mJCczN/5uEbmFhgejo6KKpnIiIiOgdFy/+jeTk1/jqK3v07NkLPXv2wuHDB3H06CHY2nbJNtbAwCDb91KpuLdh5ZevUCjRpUtXTJ7sAQBISUmBQqHINub162RIJBKYmJTKtt3UtBx27vTD1atXcOnSRYwZMxw7d/qhTJkyop7Dp0rtT8I///wDV1dXzJgxA7Vr18ZPP/2kem3EiBEICAhA9+7dc+wnkUg0KqhChdIajc9ibl6wD0RB9yvKLF2sScws1qTdHF3NYk3az2JN2s/6FGqKidGDVKqdxybkdxwjIyOsWLEMTZs2w2effQZBEPDvv+Fo0MBSta++vh709CSQSCTZ8rK+lkgk0NOT5Hs8fX29XMeom9+6dWtMm7YLY8aMg5mZGVau9EHVqtUwbtwE1T7Xrl1FmzZtc+T89dcFnDx5DF5eS9GhQwdcu3YV8fExMDMzzfP9eZ9Yf25i/vkXRU16enoafe7Vao5DQ0MxadIkzJo1Cz179sT9+/cRERGBbt26AQAEQYBUKkWlSpUQFxen2i8mJgYWFhZqFwMA8fHJUCoF1ffqnkxsrOa/AjE3L1Og/YoySxdrEjOLNWk3R1ezWJP2s1iT9rM+lZqUSiXkcqVqe3paWuaya+JKT0vLdpzctGrVGqNHj8O0aZMgl8sBAG3b2mDUqLGqfRUKJZRKAYIgZMvL+loQBFUfMnmyG8aOnQBLy0Y5jqVQKLPt9+72d/OzmrT382vVqovRo8dh4sTxEAQB9eo1wNCho7LlBQVdxIABg1XbpFI9yOVKtGljgzNn/sCQIf0hk8nQufOXqFmzTr7vz7uysgpLrBwxs97PUSqVOT73enqSD16Qzbc5joqKwsSJE7Fq1SrY2NgAePsHu2TJErRr1w4mJibYt28f+vbti+bNmyM8PByPHz9GtWrVcPToUfTr168w50dERETFyNsHdWj2sA4xG6wePRzRo4djrq/5+x8BAFSp8hkcHJxU2wMDQ1Rfz549X/V1Xku/VanymSqvoPlOTn3g5NTng8eYMcMz1+1SqRRz5iz84H5UOPk2x5s3b0ZaWhp8fHxU2wYPHozx48djyJAhkMvlsLe3h6Pj2w+ij48P3N3dkZaWBltb21ynWhARERER6aJ8m2NPT094eub+k8uwYcNybLOxscHhw4cLXxkRERERkZZpZwY9ERERlViCIOQ/iOgjKMhnk80xERERFZhUKsPr14lskEnnCIKA168TIZXKNNpP3EX9iIiI6JNiZmaOhIRYJCe/LHCGnp4elMrC35AnVo6YWbpYk5hZul6TVCqDmZl5Pntkx+aYiIiICkxfX4qKFasUKkOXl6rTlRxdzSqJNXFaBRERERFRJjbHRERERESZ2BwTEREREWVic0xERERElInNMRERERFRJjbHRERERESZ2BwTEREREWVic0xERERElInNMRERERFRJjbHRERERESZ2BwTEREREWVic0xERERElEmt5njdunXo2bMnevbsiWXLlgEAgoKC4OTkBHt7e6xatUo19u7du+jXrx+6deuG2bNnQy6XF03lREREREQiy7c5DgoKQmBgIA4ePIiAgADc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\n",
"text/plain": [
"<Figure size 864x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df[[\"Unaccounted Time / s\", *cols]].plot(kind=\"bar\", stacked=True, figsize=(12, 4));"
]
},
{
"cell_type": "markdown",
"metadata": {
"exercise": "task",
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"## Task 7\n",
"<a name=\"task7\"></a>\n",
"<span class=\"task\" style=\"padding: 2px 8px; color: white; background-color: #b9d25f; float: right; text-weight: bolder;\">TASK</em></span>\n",
"* Create a pivot table based on the Nest `df` data frame\n",
"* Let the `x` axis show the number of nodes; display the values of the simulation time `\"Sim. Time / s\"` for the tasks per node and threads per task configurations\n",
"* Please plot a bar plot\n",
"* Tell me when you're done with status icon in BigBlueButton: \ud83d\udc4d"
]
},
{
"cell_type": "code",
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
"metadata": {
"exercise": "solution",
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "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IiLVnd6QVwKjyZ1T8/qUWK/xtM2U9OpIo7s7+0OLb6vdts2g5FhERESkUtzUnGMRERERkVuRkmMRERERERslxyIiIiIiNkqORURERERslByLiIiIiNgoORYRERERsVFyLCIiIiJio+RYRERERMRGybGIiIiIiI2SYxERERERGyXHIiIiIiI2So5FRERERGyUHIuIiIiI2Cg5FhERERGxUXIsIiIiImKj5FhERERExEbJsYiIiIiIjamyAxC5Wb61auLpUfyPcHaOmfS0rAqKSERERFydkmNxWZ4eJkImbiu2zo43Q0mvoHhERETE9WlahYiIiIiIjZJjEREREREbJcciIiIiIjZKjkVEREREbBxKjjMyMujRowfnzp0DIC4ujpCQELp06cLixYvt9Y4fP06fPn3o2rUr06ZNw2w2l0/UIiIiIiLloMTk+OjRowwcOJAzZ84AkJ2dzdSpU1m2bBk7d+7k+++/Z+/evQBMmjSJ6dOns3v3bqxWK5GRkeUavIiIiIiIM5WYHEdGRjJjxgz8/f0BOHbsGI0aNaJhw4aYTCZCQkKIjY3ll19+ITs7m5YtWwLQu3dvYmNjyzV4ERERERFnKnGd43nz5hX6npSUhJ+fn/27v78/iYmJRcr9/PxITEx0YqhVW25+Hn5+vpUdhoiIiIiUQalfAmK1WouUGQyGG5aXVp06PqXepypwd6vBU5tGFlsnsv9yh9pSku1czrqe6hfXpv5zbeo/16W+c23Vsf9KnRzXrVuX5ORk+/ekpCT8/f2LlF+6dMk+FaM0UlIysFiKJtrloap2+KVLeqebIxztP2dcTz8/X/WLC1P/uTb1n+tS37m2W7n/jEbDDQdkS72U2/3338/p06eJj48nPz+fmJgYOnToQEBAAB4eHhw5cgSA6OhoOnToULbIRUREREQqUKlHjj08PAgPD2fMmDHk5OQQHBzM448/DkBERARhYWFcu3aNe++9l6FDhzo9YBERERGR8uJwcrxnzx7756CgILZv316kTvPmzYmKinJOZCIiIiIiFUxvyBMRERERsVFyLCIiIiJio+RYRERERMRGybGIiIiIiI2SYxERERERGyXHIiIiIiI2So5FRERERGyUHIuIiIiI2Cg5FhERERGxUXIsIiIiImKj5FhERERExEbJsYiIiIiIjZJjEREREREbJcciIiIiIjZKjkVEREREbJQci4iIiIjYKDkWEREREbFRciwiIiIiYmOq7ABEpPrxrVUTT4/i//nJzjGTnpZVQRGJiIgUUHIsIhXO08NEyMRtxdbZ8WYo6RUUj4iIyK80rUJERERExEYjx1WMOS8fPz/fYuvk5phJ1Z+bRURERJxOyXEVY6rhxuyJMcXWee3NHhUUjYiIiEj1omkVIiIiIiI2ZRo5Hjp0KCkpKZhMBc3Mnj2bs2fPsnz5cvLy8hg2bBiDBw92SqAiIiIiIuXtppNjq9XKqVOn+OKLL+zJcWJiIuPHj2fLli24u7szYMAAHn74YZo2beq0gEVEREREystNJ8enTp3CYDDwwgsvkJKSwlNPPYW3tzdt2rShdu3aAHTt2pXY2FhGjx7trHhFSsVizi3xAUdzbg5XUnOLbye35HYAzNk5XEkvvi0RERGpum46OU5LSyMoKIiZM2eSnZ3N0KFD6datG35+fvY6/v7+HDt2zCmBitwMo8mdU/P6FFun8bTNQPEJrdHdnf2hxbcD0G7bZlByLCIi4rJuOjl+4IEHeOCBBwDw8vKib9++vP7664wYMaJQPYPBUKp269TxudmQqhVHRjHFcc68nuob51G/yK/Uf65LfefaqmP/3XRyfPjwYfLy8ggKCgIK5iAHBASQnJxsr5OUlIS/v3+p2k1JycBisd5sWKXiyh1+6ZLeHebM/ivpepbmWOqbkjl6PZ11Lf38fNUvLkz957rUd67tVu4/o9FwwwHZm17KLT09nYULF5KTk0NGRgZbt27ljTfe4MCBA1y+fJmsrCw++eQTOnTocNOBi4iIiIhUpJseOe7YsSNHjx6lZ8+eWCwWBg0axEMPPcT48eMZOnQoeXl59O3bl/vuu8+Z8YqIiIiIlJsyrXM8btw4xo0bV6gsJCSEkJCQsjQrIiJVmG+tmnh6FP+/j+wcM+l6zb2IuCC9PlpERErF08NEyMRtxdbZ8WYot+ZMRRG51en10SIiIiIiNkqORURERERslByLiIiIiNhozrFUe7n5eS695rWIiIg4j5JjF2TOcyyZy83JITVNrzIuibtbDZ7aNLLYOpH9l1dQNCIiIlKZlBy7IFONGix59ZkS641+/e+AkmMRESngyDJ8oKX4pHpTciwiIlJNOLIMH2gpPqnelByLSJVkMec6NH3InJvDlVT9hURERJxDybGIVElGkzun5vUpsV7jaZspafqQJbfkRNucncOVdCXZIiLVnZJjEbnlGd3d2R9afKLdbttmUHIsIlLtKTkWERERcQGOPFCphynLTsmxiIiIiAtw5IFKPUxZdkqORZzInJdf4tzW3BwzqbqrFxERqZKUHIs4kamGG7MnxhRb57U3e1RQNNWD3nBYNTmy2ohWGhGRqkjJsYi4NL3hsGpyZLURR1YaAa02IiIVS8mxiIhUaVptREQqkpJjERERKUTTYqQ6U3IsUsHMeSXPkc3NySE1Tf/TEZHK4axpMY5MiQFNi5GqRcmxSAUz1ajBklefKbbO6Nf/jiNzMcV5HFlpBLTaiDPpYcpbnyNTYkDTYpzJkVF/0Mh/cZQci4jg2EojoNVGnMmRhylBD1SKlIYjo/7gvJH/W3HUX8mxiIi4PK0xXvE08u/aHO2/6vgwrJJjEZFS0JzxqklrjFc8Zy6jqJubiqdlMG9MybGISClozrjrcuTGBnRzUxl0c+O6bsUbGyXHIiJSLThyYwO6uamq9FebqulWvLEpl+R4x44dLF++nLy8PIYNG8bgwYPL4zAiIiJSTeivNq7L1f5q4/TkODExkcWLF7Nlyxbc3d0ZMGAADz/8ME2bNnX2oURERESkinO1v9o4PTmOi4ujTZs21K5dG4CuXbsSGxvL6NGjHdrfaDQ4O6Ri+d9es8Q6ptv8HGrLz+t3Jdbx8C+5rdsciMm3dh2HYqro61nRnNV/zuo7cF7/qe+q5u8eqP+gYn/3QP92OpMjfQf6t7OqctV/O6va715xxzFYrVarMw/23nvvkZmZyfjx4wH46KOPOHbsGHPmzHHmYUREREREnM7o7Aavl2sbDLf2XZyIiIiI3BqcnhzXrVuX5ORk+/ekpCT8/f2dfRgREREREadzenLctm1bDhw4wOXLl8nKyuKTTz6hQ4cOzj6MiIiIiIjTOf2BvLp16zJ+/HiGDh1KXl4effv25b777nP2YUREREREnM7pD+SJiIiIiLgqp0+rEBERERFxVUqORURERERslByLiIiIiNgoORYRERERsVFyLCIiIiJio+RY5Do+++wz1q9fz9mzZwuVb9q0qZIiktI4c+YMiYmJQMEr7OfOncvOnTsrOSq5GeHh4ZUdgjjo2LFj9s8HDhwgPDyciIgIjh49WolRiaO++uor0tLSAIiOjmb27Nls3ry5kqOqHFrKTeS/RERE8P3339OkSRN27drF5MmTCQ0NBaBXr15s3bq1kiOU4qxZs4b169djsVho06YNFy5coHPnzuzZs4cHH3yQUaNGVXaIcgOvvvpqkbI9e/bw2GOPAfD6669XdEhSCr/++/jBBx/w4Ycf0qdPHwC2bt1Kv379ePrppys5QrmRefPmcfz4cRYvXswHH3zAv/71L/785z/z5Zdf0qBBA8LCwio7xArl9JeASIHz588Xu/3OO++soEiktPbu3cvWrVsxmUwMGTKEZ599Fnd3d7p164buJau+zZs3s3PnTpKTk+nRowcHDx7Ew8ODfv360bdvXyXHVVjt2rWJjo5mxIgR1KpVC4CDBw8SGBhYyZFJaURGRrJu3Tpuv/12APr27Uvfvn2VHFdh+/fvZ8eOHbi5ufHFF18QGRmJu7s7/fv3p0ePHpUdXoVTclxOhg8fzpkzZ/D39y+SUBkMBj7//PNKikxKYrVaMRgMAPzhD3/gvffe45lnnuF3v/udvVyqLovFgru7OwEBATz77LN4eHjYt+Xn51diZFKSyZMn06FDB9566y0mTJjAww8/zNq1a+nVq1dlhyYOMJvNWCwW6tSpg5eXl73c3d0do1GzOKsyT09PUlJS8Pf3p06dOmRmZuLu7k5WVhYmU/VLFTWtopxkZGQwaNAgZsyYwUMPPVTZ4UgpLFmyhLi4OKZMmWJ/9fmRI0cYPXo0ubm5HDlypJIjlOK8/fbbHDp0iHXr1uHm5gbAjz/+SFhYGI8++iijR4+u5AilJFevXmXGjBnceeed7Nu3jx07dlR2SOKAoUOHcvr0aQwGA23btiU8PJwDBw7wxhtv8OijjzJ27NjKDlFuYM+ePcycOZPu3btjNps5ePAgQUFB7Nu3j+eff57evXtXdogVSslxOTp27BgfffQRc+bMqexQpJQOHDiAv78/TZo0sZdduHCB1atXM23atEqMTBzxzTff0Lp1a/v3U6dOkZCQQHBwcCVGJaX10UcfsWvXLlavXl3ZoUgpnDp1irS0NFq2bMmRI0dIT0/n0UcfreywpAQJCQl89tlnxMfHk5+fzx133EHHjh3tg0TViZJjEREREREbTQISEREREbFRciwiIiIiYqPkWESkEp07d4577rmHjz76qFD5qlWrmDJlisPtXL58mXvuucfZ4YmIVDtKjkVEKpnRaGTBggWcPn26skMREan2qt/idSIiVYynpyfPPPMMEydO5MMPP8Td3d2+LT09nVmzZvHjjz9iMBh45JFHmDBhAiaTiU8++YTFixdTs2ZN/vSnPxVq86OPPmLjxo1YLBZq167N9OnTadKkCYcPHyY8PByLxQIUrMnetWvXCj1fEZGqTCPHIiJVwMiRI6lZsyaLFy8uVD537lxq167Njh072Lx5MydOnGD16tUkJyczdepU3n33XbZs2UJAQIB9n0OHDhEdHc0HH3xAdHQ0zz//PGPGjAHg3Xff5ZlnnmHLli3Mnz+fgwcPVuh5iohUdRo5FhGpAoxGI2+88Qa9evWiffv29vIvv/ySjRs3YjAYcHd3Z8CAAaxdu5ZGjRpx991307RpUwD69+/PokWLAPjiiy+Ij49nwIAB9nZSU1O5evUq3bp1Y/bs2ezZs4e2bdsyYcKEij1REZEqTsmxiEgVceeddzJz5kwmT55Mz549AezTH35lsVgwm80YDIZCr6b/7SteLRYLoaGhTJo0yf49KSmJ2267jQEDBtCxY0f279/PV199xZIlS9i+fTu+vr7lf4IiIi5A0ypERKqQbt260aFDB9auXQtA+/bt+eCDD7BareTm5hIZGUnbtm1p1aoVJ0+e5McffwRgy5Yt9jbatWvHxx9/TFJSEgAbN27kL3/5CwADBgzg+PHj9O7dmzlz5pCWlkZqamoFn6WISNWlkWMRkSomLCyMI0eO2D/PnTuXkJAQ8vLyeOSRRxgxYgTu7u5ERETw8ssvU6NGjUKvy37kkUd44YUXePbZZzEYDPj4+LBkyRIMBgMvv/wy8+fP56233sJoNDJ69GgaNGhQWacqIlLl6PXRIiIiIiI2mlYhIiIiImKj5FhERERExEbJsYiIiIiIjZJjEREREREbJcciIiIiIjZKjkVEREREbJQci4iIiIjYKDkWEREREbH5f1VBIlm2N1SMAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 864x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df.pivot_table(\n",
" index=\"Nodes\",\n",
" columns=[\"Tasks/Node\", \"Threads/Task\"],\n",
" values=\"Sim. Time / s\",\n",
").plot(kind=\"bar\", figsize=(12, 4));"
]
},
{
"cell_type": "markdown",
"metadata": {
"exercise": "task",
"slideshow": {
"slide_type": "subslide"
},
"tags": []
"## Task 7B (like <em>B</em>onus)\n",
"<a name=\"task7b\"></a>\n",
"<span class=\"task\" style=\"padding: 2px 8px; color: white; background-color: #b9d25f; float: right; text-weight: bolder;\">TASK</em></span>\n",
"\n",
"- Same pivot table as before (that is, `x` with nodes, and columns for Tasks/Node and Threads/Task)\n",
"- But now, use `Sim. Time / s` and `Presim. Time / s` as values to show\n",
"- Show them as a **stack** of those two values inside the pivot table\n",
"- Use Panda's functionality as much as possible!\n",
"\n",
"Impossible?\n",
"* I gave up!\n",
"* Person who does this best / first: Personal certificate with my recommendation \ud83d\ude04"
]
},
{
"cell_type": "markdown",
"metadata": {
"exercise": "task"
},
"source": [
"<span class=\"feedback\">Feedback to <a href=\"mailto:a.herten@fz-juelich.de\">a.herten@fz-juelich.de</a></span>\n",
"\n",
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.9.5"
},
"toc-autonumbering": false,
"toc-showcode": true,
"toc-showmarkdowntxt": false,
"toc-showtags": true
},
"nbformat": 4,
"nbformat_minor": 4
}