{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "f0f84133", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import os\n", "from matplotlib import pyplot as plt\n", "from IPython.display import display, Markdown" ] }, { "cell_type": "code", "execution_count": null, "id": "ded9836e", "metadata": { "scrolled": false }, "outputs": [], "source": [ "def load_data(filename):\n", " m = np.array(pd.read_csv(filename, header=None))\n", " return np.tril(m) + np.tril(m).transpose()\n", "\n", "\n", "def show_heapmap(\n", " m, title=None, subtitle=None, vmin=None, vmax=None, yticks=True, figsize=None\n", "):\n", " vmin = np.nanmin(m) if vmin is None else vmin\n", " vmax = np.nanmax(m) if vmax is None else vmax\n", " black_at = (vmin + 3 * vmax) / 4\n", " subtitle = \"Core-to-core latency\" if subtitle is None else subtitle\n", "\n", " isnan = np.isnan(m)\n", "\n", " plt.rcParams[\"xtick.bottom\"] = plt.rcParams[\"xtick.labelbottom\"] = False\n", " plt.rcParams[\"xtick.top\"] = plt.rcParams[\"xtick.labeltop\"] = True\n", "\n", " figsize = np.array(m.shape) * 0.3 + np.array([6, 1]) if figsize is None else figsize\n", " fig = plt.figure(figsize=figsize, dpi=130)\n", " ax = fig.add_subplot(111)\n", "\n", " fig.patch.set_facecolor(\"w\")\n", " ax.set_facecolor(\"w\")\n", "\n", " ax.imshow(np.full_like(m, 0.7), vmin=0, vmax=1, cmap=\"gray\") # for the alpha value\n", " im = ax.imshow(m, cmap=plt.colormaps.get_cmap(\"viridis\"), vmin=vmin, vmax=vmax)\n", "\n", " fontsize = 9 if vmax >= 100 else 10\n", "\n", " for i, j in np.ndindex(m.shape):\n", " t = \"\" if isnan[i, j] else f\"{m[i,j]:.1f}\" if vmax < 10.0 else f\"{m[i,j]:.0f}\"\n", " c = \"w\" if m[i, j] < black_at else \"k\"\n", " ax.text(j, i, t, ha=\"center\", va=\"center\", color=c, fontsize=fontsize)\n", "\n", " ax.set_xticks(np.arange(m.shape[1]))\n", " ax.set_xticklabels([f\"{i+1}\" for i in range(m.shape[1])], fontsize=9)\n", " if yticks:\n", " ax.set_yticks(np.arange(m.shape[0]))\n", " ax.set_yticklabels([f\"CPU {i+1}\" for i in range(m.shape[0])], fontsize=9)\n", " else:\n", " ax.set_yticks([])\n", "\n", " ax.xaxis.tick_top()\n", " ax.xaxis.set_label_position(\"top\")\n", "\n", " plt.tight_layout()\n", " display(Markdown(f\"## {title}\"))\n", " ax.set_title(\n", " f\"{title}\\n\"\n", " + f\"{subtitle}\\n\"\n", " + f\"Min={vmin:0.1f}ns Median={np.nanmedian(m):0.1f}ns Max={vmax:0.1f}ns\",\n", " fontsize=11,\n", " pad=20,\n", " )\n", " display(fig)\n", " plt.close(fig)\n", "\n", "\n", "# Get all CSV files in the current directory\n", "csv_files = [f for f in os.listdir(\".\") if f.endswith(\".csv\")]\n", "\n", "for fname in csv_files:\n", " cpu_name = os.path.splitext(fname)[0]\n", " m = load_data(fname)\n", "\n", " show_heapmap(m, title=cpu_name)" ] }, { "cell_type": "code", "execution_count": null, "id": "38e06994", "metadata": {}, "outputs": [], "source": [ "print(\"Run this scripts in python jupyter notes and you will see all history results.\\n\"*100)" ] }, { "cell_type": "code", "execution_count": null, "id": "25c2db29", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "base", "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.11.5" }, "vscode": { "interpreter": { "hash": "cd78fef2128015050713e82ca51c6520b11aee7c9ee8df750520bbbc7384cbaa" } } }, "nbformat": 4, "nbformat_minor": 5 }