{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "61f49e0f", "metadata": {}, "source": [ "# Profiling the effect of input parameters on TARDIS runtime #" ] }, { "cell_type": "code", "execution_count": 1, "id": "2c26cee6", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Iterations: 0/? [00:00" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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9ltvR4yxQ36NHDkydgQTJkyw3nrrrbfeeuutt976Nn9t66233nrrOwdgUtxADuMUOUmSJEmSJG0TAyZJkiRJkiRtEwMmSZIkSZIkbZMOu8i3JEmSJEmqt3jxYurq6ja6v3v37ixcuHCrz2/9ttW3VVlZWQwYMKBJxxowSZIkSZLUwdXV1TF48OCN7q+pqdnk/s2xftvq26otCc2cIidJkiRJkqRtYsAkSZIkSZKkbWLAJEmSJEmSpG1iwCRJkiRJkqRtYsAkSZIkSZJaVDKZ5Prrr298X1xczCmnnNLi1509ezZ77bVXi1/n3nvvXWdB7K997WtMnTq12a9TWVnJUUcdtcknAm6Jt99+m6985SvNci4DJkmSJEmS1KI+HjA1VXMFKS3t4wHT3//+d0aMGNHs1/nHP/7BZz7zGbKysprlfHvvvTfz589n7ty523yu7GboR5IkSZIktRM/e+hdpi5ctc62qqoq8vIWbfU5tyuE3w0bttH9l112GTNnzmS//fbjE5/4BCeffDLl5eWceeaZvPPOO+y+++7cd999hBAYNmwY5513Hk8++STf/va36d27N1deeSXV1dXsvPPO/POf/6SwsJCf//znPPTQQ1RWVrL33ntzxx13EEJg8uTJnHfeeRQUFHD44Yc39vDuu+9y7rnnUlNTQzqd5j//+Q/Dhw9v3H/DDTcwa9Ysfv3rXwNwyy23MHnyZK677jrOOuss5s+fT11dHT/5yU8oKipqrLv33nt5++23+cIXvkB+fj4lJSWcdNJJ/Pa3v+XAAw+ksLCQCy64gKeffppevXrxy1/+kh/+8IfMnTuXP/7xj5x66qnU1dVx2WWXUVxcTHV1NRdccAFjx45d73O8/fbbueOOOwBYtGgRRUVFrFq1ilQqxQ033MARRxzBk08+ucHP67XXXuOiiy5i9erVdOnShWeeeYZu3brxqU99irvuuosf/vCHW/3nD45gkiRJkiRJLey6665j55135s033+Q3v/kNAG+88QZ//OMfmTp1KnPnzuWll15qPD4vL48XX3yR4447jquvvpqnn36a119/nQMPPJDf//73AHz729/mtdde45133qGqqoqHH34YgHPPPZf/+7//o6SkZJ0ebrzxRi666CLefPNNJk2axHbbbbfO/jPPPJP//ve/je/Hjx9PUVERjz/+OIMHD2bKlCm88847nHjiievV7b333tx+++28+eab5Ofnr7N/9erVjBkzhsmTJ9OtWzeuuOIKnnrqKe677z5++tOfAnDzzTfTo0cPXnvtNV577TVuuukmZs2atc55ampq+PDDDxnWEOTdcccdnHDCCbz55ptMmTKF/fbbj2XLlm3w86qpqaGoqIg//elPTJkyhaeffrqxzwMPPJAXXnih6X+YG+EIJkmSJEmSOpErP7Xnettmz57dGFxsjdmzZ29xzcEHH9wY8owYMYLZs2c3jjhaM0LolVdeYerUqRx22GFAfcgyevRoACZMmMCvf/1rKioqWLp0KaNGjeLII48kmUxy1FFHAfDFL36Rxx57DIDRo0dzzTXXMH/+fD7zmc+sM3oJoF+/fuy000688sorDB8+nGnTpnHYYYfxwQcfcPHFF3PppZdyyimncMQRR2zRfebm5jaGUnvvvTddunQhJyeHvffeu/Fze/LJJ3nrrbe49957ASgtLeWDDz5gxx13bDzPsmXL6NmzZ+P7gw46iPPOO4/a2lo+/elPs99++/Hcc89t8POaNm0agwYN4qCDDgKge/fujefp37//OtP7tpYBkyRJkiRJanVdunRpfJ1IJEilUo3vu3btCkCMkU984hPceeed69RWVVVx/vnnM2nSJIYOHcp3v/tdqqqqiDESQtjg9T7/+c8zatQoHnnkEU444QT+/ve/c8wxx6xzTFFREXfffTe77747p59+OiEEdt11VyZPnsyjjz7K5ZdfzvHHH9848qgpcnJyGntKJBKN9732PccY+fOf/8wJJ5yw0fPk5+dTVVXV+P7II4/k+eef55FHHuGLX/wil1xyCb169drg5/XWW29t9HOpqqpab9TV1nCKnCRJkiRJalHdunWjrKxsi+sOOeQQXnrpJWbMmAFARUUF06dPbwxa+vbtS3l5eeMopZ49e9KjRw9efPFFoH7NojU+/PBDdtppJy688EJOPfVU3nrrrfWu95nPfIb777+fO++8s3EU1cKFCykoKOCcc87h4osv5vXXX1+vrmvXrlt1f2uccMIJ3HDDDdTW1gIwffp0Vq9evc4xvXr1oq6urvHe58yZQ//+/fn617/OV7/6VV5//fWNfl677747Cxcu5LXXXgOgrKysMdyaPn16szxpzxFMkiRJkiSpRfXp04fDDjuMvfbai5NOOomTTz65SXX9+vXjlltu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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def graph_data(testing_params, mean_dict, stdev_dict, x_axis_title, y_axis_title, graph_title, text_labels=False):\n", " \"\"\"\n", " Uses pyplot to graph the data given the mean and standard deviation of data.\n", " \n", " Parameters\n", " ----------\n", " testing_params : list\n", " This is a list of the testing parameters, which is used for the axis construction.\n", " mean_dict : dict\n", " stdev_dict : dict\n", " x_axis_title : str\n", " y_axis_title : str\n", " graph_title : str\n", " text_labels : bool\n", " This is a boolean parameter for if the testing parameters are text. If they are text, then\n", " it will set each tick mark on the x-axis to be a label in testing_params.\n", " \"\"\"\n", " \n", " lists = sorted(mean_dict.items())\n", " lists_stdev = sorted(stdev_dict.items())\n", " x, y = zip(*lists)\n", " x_stdev, y_stdev = zip(*lists_stdev)\n", "\n", " fig = plt.figure(figsize=(20,10))\n", " ax = fig.add_subplot(1,1,1)\n", " ax.set_xlabel(x_axis_title)\n", " ax.set_ylabel(y_axis_title)\n", " ax.set_title(graph_title)\n", " ax.grid(True)\n", " \n", " if text_labels:\n", " xtick_spacer = np.arange(0, len(testing_params), 1)\n", " xticks = testing_params\n", " ax.set_xticks(xtick_spacer)\n", " ax.set_xticklabels(xticks, rotation='horizontal', fontsize=18)\n", " elif not text_labels:\n", " #If there are a lot of ticks, it will reduce for visibility.\n", " interval = testing_params[1] - testing_params[0]\n", " if len(testing_params) > 80:\n", " xticks = np.arange(testing_params[0], testing_params[-1]+interval, interval*2)\n", " else:\n", " xticks = np.arange(testing_params[0], testing_params[-1]+interval, interval)\n", " ax.set_xticks(xticks)\n", " \n", " ax.plot(x, y, color='tab:blue', label=\"{} vs {}\".format(x_axis_title, y_axis_title))\n", " plt.errorbar(x, y, yerr=y_stdev, label='stdev')\n", " leg = plt.legend(loc='best', ncol=1, mode='expanded', fancybox=False)\n", " leg.get_frame().set_alpha(0.5)\n", "\n", "graph_data(threads_numbers, threads_dict_mean, threads_dict_stdev, \"threads\", \"time (sec)\", \"threads vs time\")\n", "graph_data(cpu_threads_numbers, cpu_threads_dict_mean, cpu_threads_dict_stdev, \"threads\", \"time (sec)\", \"threads vs cpu time\")" ] } ], "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.8.13" }, "vscode": { "interpreter": { "hash": "c20eb03b6e6c860a5223c79131a5cfd0b7e61a9aa5d08c2b1400663bc6cc4e6d" } } }, "nbformat": 4, "nbformat_minor": 5 }