Skip to content

Instantly share code, notes, and snippets.

@iitrabhi
Last active January 31, 2022 14:28
Show Gist options
  • Save iitrabhi/39a4a3808635e227d4cc87ac4d47ef9d to your computer and use it in GitHub Desktop.
Save iitrabhi/39a4a3808635e227d4cc87ac4d47ef9d to your computer and use it in GitHub Desktop.
The amount of ram required for dense vs sparse matrix
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "3237eabc-88f8-40cd-b4a1-a942753d48a9",
"metadata": {},
"source": ["https://abhigupta.io/2022/01/31/please-use-sparse-matrices.html"]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "88537f4c-d0e9-4d5e-a5bf-db4b672144d7",
"metadata": {},
"outputs": [],
"source": [
"from scipy import sparse\n",
"from scipy.sparse import diags\n",
"from scipy.stats import uniform\n",
"from matplotlib import pyplot as plt\n",
"import numpy as np\n",
"dof = np.linspace(10,10000,10,dtype = int)\n",
"size_full=[]\n",
"size_sparse=[]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "38b724ef-1e42-4436-9751-fec3b771ebe6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Size of full matrix with zeros: 7.63e-04 MB\n",
"Size of sparse csr_matrix: 4.27e-04 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 9.57e+00 MB\n",
"Size of sparse csr_matrix: 5.12e-02 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 3.79e+01 MB\n",
"Size of sparse csr_matrix: 1.02e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 8.51e+01 MB\n",
"Size of sparse csr_matrix: 1.53e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 1.51e+02 MB\n",
"Size of sparse csr_matrix: 2.04e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 2.36e+02 MB\n",
"Size of sparse csr_matrix: 2.54e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 3.39e+02 MB\n",
"Size of sparse csr_matrix: 3.05e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 4.62e+02 MB\n",
"Size of sparse csr_matrix: 3.56e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 6.03e+02 MB\n",
"Size of sparse csr_matrix: 4.07e-01 MB\n",
"------------------------------------------------------------\n",
"Size of full matrix with zeros: 7.63e+02 MB\n",
"Size of sparse csr_matrix: 4.58e-01 MB\n",
"------------------------------------------------------------\n"
]
}
],
"source": [
"for n in dof:\n",
" data = uniform.rvs(size=n**2, loc = 0, scale=2)\n",
" data = np.reshape(data, (n, n))\n",
"\n",
" data = [np.diag(data),np.diag(data),np.diag(data)]\n",
" diagonal = diags(data, [0, -1, 1]).toarray()\n",
"\n",
" data = diagonal\n",
" data_size = data.nbytes/(1024**2)\n",
" print('Size of full matrix with zeros: '+ '{:.2e}'.format(data_size) + ' MB')\n",
" size_full.append(data_size)\n",
"\n",
" data_csr = sparse.coo_matrix(data)\n",
" data_csr_size = (data_csr.data.nbytes+data_csr.row.nbytes+data_csr.col.nbytes)/(1024**2)\n",
" print('Size of sparse csr_matrix: '+ '{:.2e}'.format(data_csr_size) + ' MB')\n",
" size_sparse.append(data_csr_size)\n",
" print('-'*60)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "95867a06-5ad7-49da-901d-8e337fec9b24",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x12bf1bc70>]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.xscale(\"log\")\n",
"# plt.yscale(\"log\")\n",
"plt.plot(dof,size_full)\n",
"plt.plot(dof, size_sparse)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "eb0cb788-fab1-453c-bf45-eab735e815b0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1 7.45e-09 4.58e-05 \n",
"10 7.45e-07 4.58e-04 \n",
"100 7.45e-05 4.58e-03 \n",
"1000 7.45e-03 4.58e-02 \n",
"10000 7.45e-01 4.58e-01 \n",
"100000 7.45e+01 4.58e+00 \n",
"1000000 7.45e+03 4.58e+01 \n",
"10000000 7.45e+05 4.58e+02 \n",
"100000000 7.45e+07 4.58e+03 \n",
"1000000000 7.45e+09 4.58e+04 \n"
]
}
],
"source": [
"table_data=[]\n",
"for i in range(10):\n",
" n=10**i\n",
" _dense = n**2*8/1024**3\n",
" _sparse = 3*(n*8+n*4+n*4)/1024**2\n",
" table_data.append(['1e'+str(i),_dense,_sparse])\n",
" print(\"{:} {:.2e} {:.2e} \".format(n,_dense,_sparse))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "14b81d8b-2193-4c86-9be3-cabe61ca1a54",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"| dof | dense (GB) | sparse (MB) |\n",
"|-----------------+-----------------+---------------|\n",
"| 1.0000 | 0.0000 | 0.0000 |\n",
"| 10.0000 | 0.0000 | 0.0005 |\n",
"| 100.0000 | 0.0001 | 0.0046 |\n",
"| 1000.0000 | 0.0075 | 0.0458 |\n",
"| 10000.0000 | 0.7451 | 0.4578 |\n",
"| 100000.0000 | 74.5058 | 4.5776 |\n",
"| 1000000.0000 | 7450.5806 | 45.7764 |\n",
"| 10000000.0000 | 745058.0597 | 457.7637 |\n",
"| 100000000.0000 | 74505805.9692 | 4577.6367 |\n",
"| 1000000000.0000 | 7450580596.9238 | 45776.3672 |\n"
]
}
],
"source": [
"from tabulate import tabulate\n",
"\n",
"print(tabulate(table_data, headers=['dof', 'dense (GB)', 'sparse (MB)'], tablefmt='orgtbl',floatfmt=\".4f\"))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3c581c86-6813-4569-be3c-d07053d18914",
"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.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment