Skip to content

Instantly share code, notes, and snippets.

@ChadFulton
Last active August 29, 2015 14:03
Show Gist options
  • Save ChadFulton/dd94a5010f97522f0d0b to your computer and use it in GitHub Desktop.
Save ChadFulton/dd94a5010f97522f0d0b to your computer and use it in GitHub Desktop.
Python vs Cython - Timings
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:3a0b7a45386c44ce5287f364e2bfd65fbae67bdb9aebf10edc8e9260f5e198bc"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Matrix Inversion - Timings"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%load_ext cythonmagic\n",
"import numpy as np\n",
"from numpy.testing import assert_allclose\n",
"from scipy import linalg\n",
"from scipy.linalg.lapack import dpotrf, dpotrs"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%%cython\n",
"\n",
"# Typical imports\n",
"import numpy as np\n",
"cimport numpy as np\n",
"cimport cython\n",
"\n",
"from blas_lapack cimport dcopy_t, dpotrf_t, dpotrs_t\n",
"from scipy.linalg import blas, lapack\n",
"\n",
"from cpython cimport PyCObject_AsVoidPtr as Capsule_AsVoidPtr\n",
"\n",
"cdef dcopy_t *dcopy = <dcopy_t*>Capsule_AsVoidPtr(blas.dcopy._cpointer)\n",
"cdef dpotrf_t *dpotrf = <dpotrf_t*>Capsule_AsVoidPtr(lapack.dpotrf._cpointer)\n",
"cdef dpotrs_t *dpotrs = <dpotrs_t*>Capsule_AsVoidPtr(lapack.dpotrs._cpointer)\n",
"\n",
"cpdef test_cyblas(double [:,::1] A, double [:,::1] B, int reps=1):\n",
" # Calculate A^{-1} B by solving A X = B, A positive definite, symmetric\n",
" cdef:\n",
" int i, info, inc = 1\n",
" int n = A.shape[0] # rows, cols of A; rows of B\n",
" int n2 = n**2\n",
" int nrhs = B.shape[1] # cols of B\n",
" int nnrhs = n*nrhs\n",
" cdef double [::1,:] tmp = np.zeros((n,n), order=\"F\")\n",
" cdef double [::1,:] C = np.zeros((n,nrhs), order=\"F\")\n",
" \n",
" for i in range(reps):\n",
" dcopy(&n2, &A[0,0], &inc, &tmp[0,0], &inc)\n",
" dcopy(&nnrhs, &B[0,0], &inc, &C[0,0], &inc)\n",
" dpotrf(\"U\", &n, &tmp[0,0], &n, &info)\n",
" dpotrs(\"U\", &n, &nrhs, &tmp[0,0], &n, &C[0,0], &n, &info)\n",
" return np.array(C)\n",
"\n",
"cpdef test_cyblas2(np.ndarray[double, ndim=2, mode=\"c\"] A, np.ndarray[double, ndim=2, mode=\"c\"] B, int reps=1):\n",
" # Calculate A^{-1} B by solving A X = B, A positive definite, symmetric\n",
" cdef:\n",
" int i, info, inc = 1\n",
" int n = A.shape[0] # rows, cols of A; rows of B\n",
" int n2 = n**2\n",
" int nrhs = B.shape[1] # cols of B\n",
" int nnrhs = n*nrhs\n",
" cdef np.ndarray[double, ndim=2, mode=\"fortran\"] tmp = np.zeros((n,n), order=\"F\")\n",
" cdef np.ndarray[double, ndim=2, mode=\"fortran\"] C = np.zeros((n,nrhs), order=\"F\")\n",
" \n",
" for i in range(reps):\n",
" dcopy(&n2, <double *> A.data, &inc, <double *> tmp.data, &inc)\n",
" dcopy(&nnrhs, <double *> B.data, &inc, <double *> C.data, &inc)\n",
" dpotrf(\"U\", &n, <double *> tmp.data, &n, &info)\n",
" dpotrs(\"U\", &n, &nrhs, <double *> tmp.data, &n, <double *> C.data, &n, &info)\n",
" return C"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def test_pynumpy(A, B, reps=1):\n",
" for i in range(reps-1):\n",
" np.linalg.solve(A, B)\n",
" return np.linalg.solve(A, B)\n",
"\n",
"def test_pyscipy(A, B, reps=1):\n",
" for i in range(reps-1):\n",
" linalg.solve(A, B, sym_pos=True)\n",
" return linalg.solve(A, B)\n",
"\n",
"def test_pyscipy2(A, B, reps=1):\n",
" for i in range(reps-1):\n",
" linalg.solve(A, B, sym_pos=True, check_finite=False)\n",
" return linalg.solve(A, B)\n",
"\n",
"def test_pyblas(A, B, reps=1):\n",
" for i in range(reps-1):\n",
" U, info = dpotrf(A)\n",
" C, info = dpotrs(U, B)\n",
" U, info = dpotrf(A)\n",
" C, info = dpotrs(U, B)\n",
" return C\n",
"\n",
"def test_pyblas2(A, B, reps=1):\n",
" A = np.asfortranarray(A)\n",
" B = np.asfortranarray(B)\n",
" for i in range(reps-1):\n",
" U, info = dpotrf(A)\n",
" C, info = dpotrs(U, B)\n",
" U, info = dpotrf(A)\n",
" C, info = dpotrs(U, B)\n",
" return C"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def setup(n, reps):\n",
" exog = np.repeat(np.arange(1.,n+1), n).reshape(n,n)/n\n",
" \n",
" A = np.eye(n)*n**2 - exog.dot(exog.T)\n",
" B = np.ones((n,1))\n",
" \n",
" assert_allclose(np.linalg.inv(A).dot(B), test_pynumpy(A, B))\n",
" assert_allclose(test_pynumpy(A, B), test_pyscipy(A, B))\n",
" assert_allclose(test_pynumpy(A, B), test_pyblas(A, B))\n",
" assert_allclose(test_pynumpy(A, B), test_cyblas(A, B))\n",
" \n",
" assert_allclose(test_pynumpy(A, B), test_pyscipy2(A, B))\n",
" assert_allclose(test_pynumpy(A, B), test_pyblas2(A, B))\n",
" assert_allclose(test_pynumpy(A, B), test_cyblas2(A, B))\n",
" \n",
" return A, B, reps"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sizes = [2,5,10,20,100]\n",
"functions = {\n",
" 'python+numpy': test_pynumpy,\n",
" 'python+scipy': test_pyscipy,\n",
" 'python+scipy2': test_pyscipy2,\n",
" 'python+blas': test_pyblas,\n",
" 'python+blas2': test_pyblas2,\n",
" 'cython+blas': test_cyblas,\n",
" 'cython+blas2': test_cyblas2\n",
"}\n",
"output = {\n",
" 'python+numpy': [],\n",
" 'python+scipy': [],\n",
" 'python+scipy2': [],\n",
" 'python+blas': [],\n",
" 'python+blas2': [],\n",
" 'cython+blas': [],\n",
" 'cython+blas2': []\n",
"}\n",
"for size in sizes:\n",
" A, B, reps = setup(size, 100)\n",
" for name, function in functions.items():\n",
" out = %timeit -qo function(A, B, reps)\n",
" output[name].append(out)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"\n",
"fig, ax = plt.subplots(figsize=(10,5))\n",
"\n",
"names = []\n",
"for name, times in output.items():\n",
" style = '-'\n",
" if name == 'python+scipy2': style='-.'\n",
" if name == 'python+blas2': style=':'\n",
" if name == 'cython+blas2': style='--'\n",
" ax.plot([time.best for time in times], style)\n",
"\n",
"ax.xaxis.set_ticks(range(len(sizes)))\n",
"ax.xaxis.set_ticklabels(sizes)\n",
"ax.set_yscale('log')\n",
"\n",
"ax.set(title=\"Matrix Inversions - Timings\", xlabel=r\"$m$\", ylabel=\"seconds\")\n",
"ax.legend(output.keys(), loc='upper left');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\n0oUTJ04wePBgZs6cSVZWFuvXr2fMmDElrs/NzY2BAwcC0KRJE9LT0wHLKNfFixcJCbEMnfv4+BAQ\nEEBCQgKhoaEopQgLC7M93vTx8bGVnTt3Lvv27SM9PZ309HRiY2Px9vZm06ZNtnt2794dgL59+zJi\nxAhycnJwcbn9vzwMBgOffvop58+fx9XVleTkZBo0aECtWrUICQmhf//+hIeHM3ToUOrVq1fiz6Gk\nfvvuLGffWXObR2j2AZChRjWMtR+yz1OwvO3RnNFxNCvvl/P9vw+SEKLsxO78hifaNaZe/d+DCKUU\nf/zrM6U+vUBrzYmzCWyOX8G5n78lvOsLRL22n5rVa5V1syu967du8b8Jn7Pu+HHGtG/H357ujbt1\nXttjC2ehCvm7Om+07bd17+Hx3Ag8nhtRpitJS+K+Ct6e+MtEh7Rz584VW+ZOgq6ykn80S2uN0WjE\naDQyYMAANm/ezIYNG9i9e3eZ3wssR5nkn8NQ1MjajBkzmDFjRpGPTQtTktGykydPMnLkSCIjI2nb\nti2enp52bVizZg0pKSls3bqVzp07s3fvXnx9y3bFTt0Orel4ZEuZ1inuP5VpDpOo/O62v1xLz8TJ\nyQn3mvYLAxo0ro3RzfEfxaUJ3HJNORw4uYPN8SvIMWUzOPBlZo18D6Ohauw/V5ZMZjPvf3WKBQfi\n6e7bhL0vv4jaspOs3w7iHm552mWo6Thf+/zpsxhW/Q2X7Jt4zV+GSzmOtuV3XwVvVU10dDTt27cn\nKSmJY8eO0a6dZbn2uHHj6Nu3L507d8bT09OhnJubGykpKdSpUwet9W0fd3l4eODr68v27dsJDw/n\n3LlzJCQksHTp0rt+D5mZmezYsYPQ0FC2bt1K27ZtS/T4LSYmhtDQUCZMmMCpU6dITEy0C95MJhP1\n69dnwoQJbNu2je+//77MgzchhKgsvvz3Ofbv/IaszGzCn+9I6/b2jy6bP9Hwjuu+kZXBzqMf8PGh\nKBrWbcLoPlPo0CzogVqEkF984nlm743Bw9WVVeHP0M7XBwDTkAGWJ3iFyDWZiVu2kga715PTN4In\nx40v99G2/CR4q0BGo5GePXuSlpbGkiVLcHe3bIjYvHlzW+BSmMjISMLDw/Hx8WHo0KG8/PLLgP3K\nT6WU3et169YxceJE5s+fj9lsZu3atdSqVcsuf3GCgoIICgpySK9evTrHjh3j7bffxmQysW7dOoc8\n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\nAGAQ8QYAMMgPTfjZO7uG5T8AAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x10eddf3d0>"
]
}
],
"prompt_number": 9
}
],
"metadata": {}
}
]
}
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment