mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2025-01-12 05:17:21 +01:00
293 lines
2.3 MiB
Plaintext
293 lines
2.3 MiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 77,
|
||
|
"metadata": {},
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"import pandas as pd\n",
|
||
|
"\n",
|
||
|
"df = pd.read_csv('allocs7.csv')\n",
|
||
|
"# remove all views\n",
|
||
|
"df = df[df['tensor_view_src_id'] == \"(nil)\"]\n",
|
||
|
"df = df.drop_duplicates(subset=['tensor_id'])\n",
|
||
|
"df = df.sort_values(by='size', ascending=False, kind='stable')"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 78,
|
||
|
"metadata": {},
|
||
|
"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>buffer_id</th>\n",
|
||
|
" <th>buffer_name</th>\n",
|
||
|
" <th>offset+size</th>\n",
|
||
|
" </tr>\n",
|
||
|
" </thead>\n",
|
||
|
" <tbody>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>7</th>\n",
|
||
|
" <td>0x56fa9b3b02f0</td>\n",
|
||
|
" <td>CPU</td>\n",
|
||
|
" <td>430940160</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>1</th>\n",
|
||
|
" <td>0x56fa95d0a890</td>\n",
|
||
|
" <td>CUDA0</td>\n",
|
||
|
" <td>402653184</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>5</th>\n",
|
||
|
" <td>0x56fa9af97b00</td>\n",
|
||
|
" <td>CUDA0</td>\n",
|
||
|
" <td>4294705152</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>6</th>\n",
|
||
|
" <td>0x56fa9afff860</td>\n",
|
||
|
" <td>CUDA0</td>\n",
|
||
|
" <td>155197440</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>0</th>\n",
|
||
|
" <td>0x56fa95cd17d0</td>\n",
|
||
|
" <td>CUDA1</td>\n",
|
||
|
" <td>134217728</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>3</th>\n",
|
||
|
" <td>0x56fa9ae68ec0</td>\n",
|
||
|
" <td>CUDA1</td>\n",
|
||
|
" <td>321404928</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>4</th>\n",
|
||
|
" <td>0x56fa9af5b340</td>\n",
|
||
|
" <td>CUDA1</td>\n",
|
||
|
" <td>1862524928</td>\n",
|
||
|
" </tr>\n",
|
||
|
" <tr>\n",
|
||
|
" <th>2</th>\n",
|
||
|
" <td>0x56fa9ae63710</td>\n",
|
||
|
" <td>CUDA_Host</td>\n",
|
||
|
" <td>41967616</td>\n",
|
||
|
" </tr>\n",
|
||
|
" </tbody>\n",
|
||
|
"</table>\n",
|
||
|
"</div>"
|
||
|
],
|
||
|
"text/plain": [
|
||
|
" buffer_id buffer_name offset+size\n",
|
||
|
"7 0x56fa9b3b02f0 CPU 430940160\n",
|
||
|
"1 0x56fa95d0a890 CUDA0 402653184\n",
|
||
|
"5 0x56fa9af97b00 CUDA0 4294705152\n",
|
||
|
"6 0x56fa9afff860 CUDA0 155197440\n",
|
||
|
"0 0x56fa95cd17d0 CUDA1 134217728\n",
|
||
|
"3 0x56fa9ae68ec0 CUDA1 321404928\n",
|
||
|
"4 0x56fa9af5b340 CUDA1 1862524928\n",
|
||
|
"2 0x56fa9ae63710 CUDA_Host 41967616"
|
||
|
]
|
||
|
},
|
||
|
"execution_count": 78,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"# find all buffers and their sizes\n",
|
||
|
"df['offset+size'] = df['offset'] + df['size']\n",
|
||
|
"bufs = df.groupby('buffer_id')\n",
|
||
|
"bufs = bufs.agg({'buffer_name': 'first', 'offset+size': 'max'})\n",
|
||
|
"bufs.reset_index(inplace=True)\n",
|
||
|
"bufs.sort_values(by='buffer_name', inplace=True)\n",
|
||
|
"bufs\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 79,
|
||
|
"metadata": {},
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 250x200 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 12000x200 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAA0uYAAAC+CAYAAAB2hCJbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAANLmElEQVR4nOzcf+jt9V0H8OfreM221Lu8kXKdxYZYlD+arsbCNcwox1wlGw3GElM2IqjYiojBmP5RoSIZjfZHlAv2R1QwcYuSOWyUyMi7cjpYiZvLdWnltXv9MefcfPfP+eL3Xr/3ek133q/v9zwe8OX4/ZzP+Zzn/fL+4JPXm3NqjDECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPSxmB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCbxewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdLGYHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADoZjE7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAN4vZAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAulnMDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0M1idgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgG4WswMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHSzmB0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCbxewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsD1V1flXdUlVfrqpvVNUTVfW5qvqdqjptec5DVfXJo7z+9VU1quqqTceuXR7b+Pl6VX21qm6vql+vqlOOkefEqvqv5evecYzzvr+qPlpVjyyvf3dVXfoS/hQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKyBxewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0V1XvSbIvyY8nuTHJZUmuSPLXSX41yZ+9xLe4LMkbl4+/neQ/ktyQ5AtVdcFRXnN5ktOX/33NUXKflOTTSS5N8ptJfiHJ15L8fVW9+SVmBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgB9s1OwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||
|
"text/plain": [
|
||
|
"<Figure size 54000x200 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAD5YAAFzuCAYAAACs/YlLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdXYiVZdvH4XPlZ+IH2aRhmrpTgtpEU4gQWKgYlIJQ0UaQFm0YRoUoVDuKIBGhVBChaEIhGIqVCkNkYkFiH5RmURFJpUNGmilZNuq8Gw8O+I6Zz6s28n+PA9bGuu5rXdfJ2v9xNzo6OjoKAAAAAAAAAAAAAAAAAACAWJd19wAAAAAAAAAAAAAAAAAAAABcXMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAAAAAAAAAACAcMJyAAAAAAAAAC4pu3btqtmzZ9fo0aOrb9++1b9//7rpppvq2WefrYMHD1ZV1ahRo+quu+464+8//vjjajQatXr16s61hQsXVqPR6Pz069evhg8fXtOmTasXX3yxjhw58rfztLe319VXX12NRqPWrVv3t/t+/vnnmjVrVjU1NVW/fv1q4sSJtWXLlv/bnwAAAAAAAAAAF5iwHAAAAAAAAIBLxooVK6qlpaU++uijmj9/frW2ttaGDRvqnnvuqZdffrkeeuih8zq/tbW1tm/fXq2trfXcc8/VtddeWwsWLKixY8fWzp07z/ibTZs21f79+6uqauXKlWfcc+zYsZo8eXJt2bKlnn/++XrzzTdr6NChdccdd9S2bdvOa2YAAAAAAAAAuBB6dvcAAAAAAAAAAFBVtX379pozZ05NnTq13njjjerTp0/ns6lTp9a8efOqtbX1vO5oaWmppqamzu/33XdfzZ07tyZNmlQzZsyob7755rR7q/4Tk/fu3bsmTZpUb7/9du3du7eGDx/eZc/u3bvrgw8+qIkTJ1ZV1e23317Nzc21YMGC2rFjx3nNDQAAAAAAAADnyxvLAQAAAAAAALgkLFmypBqNRi1fvrxL3F1V1bt375oxY8YFv7e5ubmefvrp+uGHH2rt2rWnPWtra6vW1taaPn16zZ8/v06ePFmrV6/ucsaGDRvq+uuv74zKq6p69uxZ999/f3344Ye1b9++Cz43AAAAAAAAAPw3hOUAAAAAAAAAdLsTJ07Uu+++Wy0tLTVixIh//f5Twfp777132vrq1avrxIkT9eCDD9aUKVNq5MiRtWrVquro6Dht3+7du+uGG27ocu6ptS+++OIiTQ4AAAAAAAAA50ZYDgAAAAAAAEC3++WXX+ro0aM1evTobrl/5MiRVfWfN5Sf0tHRUa+88kpdc801NW3atGo0GjVr1qzas2dPbd269bTfHzhwoAYPHtzl3FNrBw4cuIjTAwAAAAAAAMA/E5YDAAAAAAAA8P/e/34DeVXVtm3b6ttvv60HHnigevToUVVVs2fPrkajUatWreqyv9Fo/O35Z3sGAAAAAAAAAP8GYTkAAAAAAAAA3a6pqan69etXe/bsOaf9PXv2rBMnTpzx2fHjx6uqqlevXud8//fff19VVcOGDetcW7lyZVVVzZw5sw4dOlSHDh2qQYMG1a233lrr16+vQ4cOde698sorz/hW8oMHD1ZVnfFt5gAAAAAAAADwbxKWAwAAAAAAANDtevToUZMnT65PPvmk9u7d+4/7hw4dWvv27Tvjs1PrQ4cOPef733rrraqquu2226qq6rfffqv169dXVdUtt9xSV1xxRefn/fffrz///LPWrFnT+fvx48fX559/3uXcU2vjxo0751kAAAAAAAAA4GIQlgMAAAAAAABwSXjyySero6OjHn744frrr7+6PG9vb6+NGzdWVdWUKVNq9+7d9eWXX3bZ9/rrr1f//v1rwoQJ53Tvzp07a8mSJTVq1Ki69957q6pqzZo19ccff9TixYtr69atXT5NTU21atWqzjNmzpxZX331Ve3YsaNz7fjx4/Xaa6/VhAkTTnsTOgAAAAAAAAB0h0ZHR0dHdw8BAAAAAAAAAFVVK1asqEceeaTGjBlTc+bMqbFjx1Z7e3t9+umntXz58ho3blxt2LChDh48WC0tLfX777/XU089VePHj69ff/211q5dW+vWraulS5fWE0880XnuwoULa9GiRdXa2lqDBg2q9vb2amtrqy1bttSrr75aQ4YMqc2bN3e+Wfzmm2+u7777rtra2qpv375d5pw3b14tXbq0Pvvss2pubq5jx45VS0tLHT58uJ555pkaMmRIvfTSS7Vx48Z65513atKkSf/afwgAAAAAAAAAZyIsBwAAAAAAAOCSsnPnzlq2bFlt3bq1fvrpp+rVq1ddd911NX369Jo7d25dddVVVVW1f//+WrRoUW3evLna2trq8ssvr+bm5nrsscfq7rvvPu3MU2H5KX369KnBgwfX+PHj684776zZs2fXgAEDqqpq165d1dzcXI8//ngtW7bsjDN+/fXXNWbMmHr00UfrhRde6JxnwYIFtWnTpjp69GjdeOONtXjx4poyZcrF+JsAAAAAAAAA4L8iLAcAAAAAAAAAAAAAAAAAAAh3WXcPAAAAAAAAAAAAAAAAAAAAwMUlLAcAAAAAAAAAAAAAAAAAAAgnLAcAAAAAAAAAAAAAAAAAAAgnLAcAAAAAAAAAAAAAAAAAAAgnLAcAAAAAAAAAAAAAAAAAAAgnLAcAAAAAAAAAAAAAAAAAAAjX81w2nTx5stra2mrAgAHVaDQu9kwAAAAAAAAAAAAAAAAAAAD8g46Ojjpy5EgNGzasLrvs7O8kP6ewvK2trUaMGHFBhgMAAAAAAAAAAAAAAAAAAODC+fHHH2v48OFn3XNOYfmAAQM6Dxw4cOD5TwYAAAAAAAAAAAAAAAAAAMB5OXz4cI0YMaKzBz+bcwrLG41GVVUNHDhQWA4AAAAAAAAAAAAAAAAAAHAJOdWDn81l/8IcAAAAAAAAAAAAAAAAAAAAdCNhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAAAAAAAAAAAAAAAQDhhOQAAAAA
|
||
|
"text/plain": [
|
||
|
"<Figure size 4000x23800 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 4000x200 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAEYoAACGOCAYAAADopLlRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzcUYiV9brH8WeNOprMaNaUYU4qnCQwGWiICKIRUoRKIajoqrLowjAUyqC6UQIvoqNQF4UxJkWGoRRZMAQ1VBdepMRIBKkklQ1J7ZoaqGjSdS42zSbGPHOOjfPb288H1sV63/96n2et68W30Ww2mwUAAAAAAAAAAAAAAAAAAAAAQKyWyV4AAAAAAAAAAAAAAAAAAAAAAIAzE4oBAAAAAAAAAAAAAAAAAAAAAAgnFAMAAAAAAAAAAAAAAAAAAAAAEE4oBgAAAAAAAAAAAAAAAAAAAAAgnFAMAAAAAAAAAAAAAAAAAAAAAEA4oRgAAAAAAAAAAAAAAAAAAAAAgHBCMQAAAAAAAAAAAAAAAAAAAAAA4YRiAAAAAAAAAAAAAAAAAAAAAADCCcUAAAAAAAAAAAAAAAAAAAAAAIQTigEAAAAAAAAA4Jw6dOhQrVmzphYtWlQzZsyotra2uuaaa+qpp56q77//vqqqFi5cWLfeeutpP3/gwIFqNBq1c+fO0WubNm2qRqMx+po5c2bNnz+/Vq5cWc8++2wNDw//5T4jIyN12WWXVaPRqD179pz2zPHjx2vDhg3V09NTF1544Zj5AAAAAAAAAAAw0YRiAAAAAAAAAAA4Z1544YXq7u6ujz76qDZu3Fh9fX31+uuv1x133FHPP/983X///Wf1/L6+vtq/f3/19fXV008/XVdccUU9+uijtWTJkhoYGDjtZ9566606ceJEVVX19vae9szRo0frlVdeqdbW1rr55pvPakcAAAAAAAAAAPj/mDrZCwAAAAAAAAAAcH7Yv39/rV27tlasWFFvvPFGTZ8+ffTeihUr6uGHH66+vr6zmtHd3V0dHR2j7++6665at25d9fT01OrVq+vw4cN/mlv1zzhMa2tr9fT01DvvvFPHjx+v+fPn/+nMjTfeWN9++21VVR04cKBeffXVs9oTAAAAAAAAAAD+r1omewEAAAAAAAAAAM4PW7ZsqUajUdu3bx8Ta6mqam1trdWrV//tc7u6uuqJJ56oL7/8snbv3v2ne4ODg9XX11erVq2qjRs31qlTp2rnzp1jntHS4m82AAAAAAAAAABMLv9gAQAAAAAAAABgwp08ebLee++96u7urs7OznM+/48AzQcffPCn6zt37qyTJ0/WfffdV8uXL68FCxbUjh07qtlsnvMdAQAAAAAAAADgTIRiAAAAAAAAAACYcN999139/PPPtWjRokmZv2DBgqqqGhwcHL3WbDbrxRdfrMsvv7xWrlxZjUaj7r333jp27Fj19/dPyp4AAAAAAAAAAPBXhGIAAAAAAAAAAPiP12w2x1x7//336+jRo3XPPffUlClTqqpqzZo11Wg0aseOHed6RQAAAAAAAAAAOCOhGAAAAAAAAAAAJlxHR0fNnDmzjh07Nq7zU6dOrZMnT5723u+//15VVdOmTRv3/C+++KKqqubNmzd6rbe3t6qqbrvtthoaGqqhoaGaPXt23XDDDbV3794aGhoa9/MBAAAAAAAAAGCiCcUAAAAAAAAAADDhpkyZUjfddFMdPHiwjh8//r+enzt3bn399denvffH9blz5457/ptvvllVVcuWLauqqh9//LH27t1bVVXXXnttzZkzZ/T14Ycf1q+//lq7du0a9/MBAAAAAAAAAGCiCcUAAAAAAAAAAHBOPPbYY9VsNuuBBx6o3377bcz9kZGR2rdvX1VVLV++vD755JP69NNPx5x77bXXqq2tra677rpxzR0YGKgtW7bUwoUL684776yqql27dtUvv/xSTz75ZPX39495dXR01I4dO87i2wIAAAAAAAAAwN9r6mQvAAAAAAAAAADA+eH666+v5557rh588MHq7u6utWvX1pIlS2pkZKQ+/vjj2r59e1199dW1atWqWr9+fb300ku1bNmyevzxx2vp0qX1ww8/1O7du2vPnj21devWam9vHzPj4MGDNXv27BoZGanBwcF699136+WXX65LL7209u3bV62trVVV1dvbW3PmzKlHHnmkZsyYMeY5d999d23durUGBgaqq6urqqr27NlTVVWff/55VVUdOHCg2traqqrq9ttvn5DfDAAAAAAAAAAA/tBoNpvNyV4CAAAAAAAAAIDzx8DAQG3btq36+/vrm2++qWnTptXixYtr1apVtW7durrkkkuqqurEiRO1efPmevvtt2twcLAuuOCC6urqqvXr148Js2zatKk2b948+n769Ol10UUX1dKlS+uWW26pNWvWjIZlDh06VF1dXbVhw4batm3baXf87LPP6qqrrqqHHnqonnnmmaqqajQaf/md/AUHAAAAAAAAAICJJhQDAAAAAAAAAAAAAAAAAAAAABCuZbIXAAAAAAAAAAAAAAAAAAAAAADgzIRiAAAAAAAAAAAAAAAAAAAAAADCCcUAAAAAAAAAAAAAAAAAAAAAAIQTigEAAAAAAAAAAAAAAAAAAAAACCcUAwAAAAAAAAAAAAAAAAAAAAAQTigGAAAAAAAAAAAAAAAAAAAAACDc1PEcOnXqVA0ODlZ7e3s1Go2J3gkAAAAAAAAAAAAAAAAAAAAA4D9es9ms4eHhmjdvXrW0tJzx7LhCMYODg9XZ2fm3LAcAAAAAAAAAAAAAAAAAAAAAwL989dVXNX/+/DOeGVcopr29ffSBs2bNOvvNAAAAAAAAAAAAAAAAAAAAAADOcz/99FN1dnaO9l3OZFyhmEajUVVVs2bNEooBAAAAAAAAAAAAAAAAAAAAAPgb/dF3OZOWc7AHAAAAAAAAAAAAAAAAAAAAAABnQSgGAAAAAAAAAAAAAAAAAAAAACCcUAwAAAAAAAAAAAAAAAAAAAAAQDihGAAAAAAAAAAAAAAAAAAAAACAcEIxAAAAAAAAAAAAAAAAAAAAAADhhGIAAAAAAAAAAAAAAAAAAAAAAMIJxQAAAAAAAAAAAAAAAAAAAAAAhBOKAQAAAAAAAAAAAAAAAAAAAAAIJxQDAAAAAAAAAAAAAAAAAAAAABBOKAYAAAAAAAAAAAAAAAAAAAAAIJxQDAAAAAAAAAAAAAAAAAAAAABAOKEYAAAAAAAAAAAAAAAAAAAAAIBwQjEAAAAAAAAAAAAAAAAAAAAAAOGEYgAAAAAAAAAAAAAAAAAAAAAAwgnFAAAAAAAAAAAAAAAAAAAAAACEE4oBAAAAAAAAAAAAAAAAAAAAAAgnFAMAAAAAAAAAAAAAAAAAAAAAEE4oBgAAAAAAAAAAAAAAAAAAAAAgnFAMAAAAAAAAAAAAAAAAAAAAAEA4oRgAAAAAAAAAAAAAAAAAAAAAgHBCMQAAAAAAAAAAAAAAAAAAAAAA4YRiAAAAAAAAAAAAAAAAAAAAAADCCcUAAAAAAAAAAAAAAAAAAAAAAIQTigEAAAAAAAAAAAAAAAAAAAAACCcUAwAAAAAAAAAAAAAAAAAAAAAQTigGAAAAAAAAAAAAAAAAAAAAACCcUAwAAAAAAAAAAAAAAAAAAAAAQDihGAAAAAAAAAAAAAAAAAAAAACAcEIxAAAAAAAAAAAAAAAAAAAAAADhhGIAAAAAAAAAAAAAAAAAAAAAAMIJxQAAAAAAAAAAAAAAAAAAAAAAhBOKAQAAAAAAAAAAAAAAAAAAAAAIJxQDAAAAAAAAAAAAAAAAAAAAABBOKAYAAAAAAAAAAAAAAAAAAAAAIJxQDAAAAAAAAAAAAAAAAAAAAABAOKEYAAAAAAAAAAAAAAAAAAAAAIBwQjEAAAAAAAAAAAAAAAAAAAAAAOGEYgAAAAAAAAAAAAAAAAAAAAAAwgnFAAAAAAAAAAAAAAAAAAAAAACEE4oBAAAAAAAAAAAAAAAAAAAAAAgnFAMAAAAAAAAAAAAAAAAAAAAAEE4oBgAAAAAAAAAAAAAAAAAAAAAgnFAMAAAAAAAAAAA
|
||
|
"text/plain": [
|
||
|
"<Figure size 4500x8600 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 18500x200 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": [
|
||
|
"<Figure size 4250x200 with 1 Axes>"
|
||
|
]
|
||
|
},
|
||
|
"metadata": {},
|
||
|
"output_type": "display_data"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import matplotlib.pyplot as plt\n",
|
||
|
"from adjustText import adjust_text\n",
|
||
|
"\n",
|
||
|
"for i, buf in bufs.iterrows():\n",
|
||
|
" buf_id = buf['buffer_id']\n",
|
||
|
" buf_name = buf['buffer_name']\n",
|
||
|
" buf_df = df[df['buffer_id'] == buf_id]\n",
|
||
|
"\n",
|
||
|
" yranges = dict()\n",
|
||
|
" for _, row in buf_df.iterrows():\n",
|
||
|
" name = row['tensor_name']\n",
|
||
|
" offset = row['offset']\n",
|
||
|
" size = row['size']\n",
|
||
|
" y = 0\n",
|
||
|
" while y in yranges and any((x <= offset and x + w > offset) or (offset <= x and offset + size > x) for x, w in yranges[y]['xranges']):\n",
|
||
|
" y += 1\n",
|
||
|
" if y not in yranges:\n",
|
||
|
" yranges[y] = {'xranges': [], 'labels': []}\n",
|
||
|
" yranges[y]['xranges'].append((offset, size))\n",
|
||
|
" yranges[y]['labels'].append(name)\n",
|
||
|
"\n",
|
||
|
" fig, ax = plt.subplots()\n",
|
||
|
"\n",
|
||
|
" width = max(len(data['xranges']) for data in yranges.values())\n",
|
||
|
" height = len(yranges)\n",
|
||
|
" fig.set_size_inches(width * 2.5, height * 2)\n",
|
||
|
"\n",
|
||
|
" ax.set_title(buf_name)\n",
|
||
|
" ax.get_yaxis().set_visible(False)\n",
|
||
|
" ax.set_xlabel('Offset')\n",
|
||
|
" \n",
|
||
|
" texts = []\n",
|
||
|
" bars = []\n",
|
||
|
" for y, data in yranges.items():\n",
|
||
|
" xranges = data['xranges']\n",
|
||
|
" labels = data['labels']\n",
|
||
|
" h = 15\n",
|
||
|
" # add some margin between bars\n",
|
||
|
" #x_margin = 102400\n",
|
||
|
" #for i in range(len(xranges) - 1):\n",
|
||
|
" # if xranges[i][1] > x_margin*2:\n",
|
||
|
" # xranges[i] = (xranges[i][0] + x_margin, xranges[i][1] - x_margin)\n",
|
||
|
" y_margin = 1\n",
|
||
|
" cur_bars = ax.broken_barh(xranges, (y*h + y_margin, h - y_margin*2), edgecolor='black')\n",
|
||
|
" cur_texts = [ax.annotate(labels[i], xy=(x + width / 2, y*h + h/2 + x/1e10), \n",
|
||
|
" xytext=(x + width / 2, y*h + h/2 + x/1e10), ha='center', va='center') for i, (x, width) in enumerate(xranges)]\n",
|
||
|
" bars.append(cur_bars)\n",
|
||
|
" texts.extend(cur_texts)\n",
|
||
|
" \n",
|
||
|
" texts = adjust_text(texts, only_move=\"y\", arrowprops=dict(arrowstyle=\"->\", color='r', lw=0.5), expand=(1.05, 1.25))\n",
|
||
|
"\n",
|
||
|
" fig.tight_layout()"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "torch",
|
||
|
"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.19"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 2
|
||
|
}
|