{
"metadata": {
"name": "",
"signature": "sha256:d11bd246f68abb950adb5879d727cb8eb58128a5c7c950a747324e287d3ac190"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# QuTiP development notebook for testing steadystate solvers\n",
"\n",
"Copyright (C) 2013, Paul D. Nation & Robert J. Johansson"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%pylab inline"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from qutip import *"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import time"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Setup"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"reps = 10"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from IPython.display import HTML"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def show_bm_mat(bm_mat, solvers):\n",
" \n",
" m = bm_mat[bm_mat > 0].min()\n",
" \n",
" html = \"
\"\n",
"\n",
" html += \"Solver | Elapsed time | Ratio |
\"\n",
" \n",
" for idx, (desc, func) in enumerate(solvers):\n",
" \n",
" if bm_mat[idx] == m:\n",
" html += \"%s | %.8f | %.2f |
\" % \\\n",
" (desc, bm_mat[idx], bm_mat[idx]/m)\n",
" else:\n",
" html += \"%s | %.8f | %.2f |
\" % \\\n",
" (desc, bm_mat[idx], bm_mat[idx]/m)\n",
" \n",
" \n",
" html += \"
\"\n",
"\n",
" return HTML(html)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def benchmark_steadystate_solvers(args, solvers, problem_func):\n",
"\n",
" bm_mat = zeros(len(solvers))\n",
"\n",
" H, c_ops = problem_func(args)\n",
" \n",
" for sol_idx, solver in enumerate(solvers):\n",
" solver_name, solver_func = solver\n",
" try:\n",
" t1 = time.time()\n",
" for r in range(reps):\n",
" rhoss = solver_func(H, c_ops)\n",
" t2 = time.time()\n",
" bm_mat[sol_idx] = (t2 - t1)/reps\n",
" \n",
" except Exception as e:\n",
" bm_mat[sol_idx] = nan\n",
" print(\"Failure in %s: %s\" % (solver_name, str(e)))\n",
"\n",
" return bm_mat"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"solvers = [\n",
" [\"power use_umfpack=True\",\n",
" lambda H, c_ops: steadystate(H, c_ops, method='power', use_umfpack=True)],\n",
" [\"power use_umfpack=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='power', use_umfpack=False)],\n",
"\n",
" [\"direct sparse use_umfpack=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='direct', use_umfpack=True, sparse=True)],\n",
" [\"direct sparse use_umfpack=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='direct', use_umfpack=False, sparse=True)],\n",
" [\"direct dense use_umfpack=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='direct', use_umfpack=True, sparse=False)],\n",
" [\"direct dense use_umfpack=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='direct', use_umfpack=False, sparse=False)],\n",
"\n",
" [\"iterative use_precond=True, use_rcm=True, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=True, use_rcm=True, sym=True)],\n",
" [\"iterative use_precond=True, use_rcm=False, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=True, use_rcm=False, sym=True)],\n",
" [\"iterative use_precond=False, use_rcm=True, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=False, use_rcm=True, sym=True)],\n",
" [\"iterative use_precond=False, use_rcm=False, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=False, use_rcm=False, sym=True)],\n",
" [\"iterative use_precond=True, use_rcm=True, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=True, use_rcm=True, sym=False)],\n",
" [\"iterative use_precond=True, use_rcm=False, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=True, use_rcm=False, sym=False)],\n",
" [\"iterative use_precond=False, use_rcm=True, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=False, use_rcm=True, sym=False)],\n",
" [\"iterative use_precond=False, use_rcm=False, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=False, use_rcm=False, sym=False)],\n",
"\n",
" [\"iterative-bicg use_precond=True, use_rcm=True, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=True, use_rcm=True, sym=True)],\n",
" [\"iterative-bicg use_precond=False, use_rcm=False, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=False, use_rcm=False, sym=True)],\n",
" [\"iterative-bicg use_precond=True, use_rcm=True, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=True, use_rcm=True, sym=True)],\n",
" [\"iterative-bicg use_precond=False, use_rcm=False, sym=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=False, use_rcm=False, sym=True)],\n",
" [\"iterative-bicg use_precond=True, use_rcm=True, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=True, use_rcm=True, sym=False)],\n",
" [\"iterative-bicg use_precond=True, use_rcm=False, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=True, use_rcm=False, sym=False)],\n",
" [\"iterative-bicg use_precond=False, use_rcm=True, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=False, use_rcm=True, sym=False)],\n",
" [\"iterative-bicg use_precond=False, use_rcm=False, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=False, use_rcm=False, sym=False)],\n",
"\n",
" #[\"svd_dense\", \n",
" # lambda H, c_ops: steadystate(H, c_ops, method='svd')],\n",
" [\"lu\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='lu')],\n",
" ]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"large_solvers = [\n",
" [\"power use_umfpack=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='power', use_umfpack=True)],\n",
" [\"power use_umfpack=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='power', use_umfpack=False)],\n",
"\n",
" [\"direct sparse use_umfpack=True\", \n",
" lambda H, c_ops: steadystate(H, c_ops, use_umfpack=True, sparse=True)],\n",
" [\"direct sparse use_umfpack=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, use_umfpack=False, sparse=True)],\n",
"\n",
" [\"iterative use_precond=True, use_rcm=True, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=True, use_rcm=True, sym=False)],\n",
" [\"iterative use_precond=True, use_rcm=False, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative', use_precond=True, use_rcm=False, sym=False)],\n",
"\n",
" [\"iterative-bicg use_precond=True, use_rcm=True, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=True, use_rcm=True, sym=False)],\n",
" [\"iterative-bicg use_precond=True, use_rcm=False, sym=False\", \n",
" lambda H, c_ops: steadystate(H, c_ops, method='iterative-bicg', use_precond=True, use_rcm=False, sym=False)],\n",
"\n",
" ]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test problem 1"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bm_problem1(N):\n",
"\n",
" a = tensor(destroy(N), identity(2))\n",
" b = tensor(identity(N), destroy(2))\n",
"\n",
" H = a.dag() * a + b.dag() * b + 0.25 * (a + a.dag()) * (b + b.dag())\n",
"\n",
" c_ops = [sqrt(0.1) * a, sqrt(0.075) * a.dag(), sqrt(0.1) * b]\n",
" \n",
" return H, c_ops"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(10, solvers, bm_problem1)\n",
"show_bm_mat(bm_mat, solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Failure in iterative use_precond=False, use_rcm=True, sym=True: Steadystate solver did not reach tolerance after 1000 steps.\n",
"Failure in iterative use_precond=False, use_rcm=False, sym=True: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Failure in iterative use_precond=False, use_rcm=True, sym=False: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Failure in iterative use_precond=False, use_rcm=False, sym=False: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stderr",
"text": [
"/home/rob/py-envs/py3-stable/lib/python3.3/site-packages/qutip/steadystate.py:153: UserWarning: The use of use_umfpack is deprecated.\n",
" warnings.warn(\"The use of use_umfpack is deprecated.\")\n",
"-c:3: RuntimeWarning: invalid value encountered in greater\n"
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 0.02337635 | 1.47 |
power use_umfpack=False | 0.02320838 | 1.46 |
direct sparse use_umfpack=True | 0.01801844 | 1.14 |
direct sparse use_umfpack=False | 0.01740201 | 1.10 |
direct dense use_umfpack=True | 0.04866381 | 3.07 |
direct dense use_umfpack=False | 0.04866440 | 3.07 |
iterative use_precond=True, use_rcm=True, sym=True | 0.02051804 | 1.29 |
iterative use_precond=True, use_rcm=False, sym=True | 0.01893902 | 1.19 |
iterative use_precond=False, use_rcm=True, sym=True | nan | nan |
iterative use_precond=False, use_rcm=False, sym=True | nan | nan |
iterative use_precond=True, use_rcm=True, sym=False | 0.01817827 | 1.15 |
iterative use_precond=True, use_rcm=False, sym=False | 0.01661460 | 1.05 |
iterative use_precond=False, use_rcm=True, sym=False | nan | nan |
iterative use_precond=False, use_rcm=False, sym=False | nan | nan |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.01868496 | 1.18 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.06821716 | 4.30 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.01880364 | 1.18 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.06844871 | 4.31 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 0.01848016 | 1.16 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | 0.01699817 | 1.07 |
iterative-bicg use_precond=False, use_rcm=True, sym=False | 0.06557376 | 4.13 |
iterative-bicg use_precond=False, use_rcm=False, sym=False | 0.06788254 | 4.28 |
lu | 0.01587019 | 1.00 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 11,
"text": [
""
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(50, large_solvers, bm_problem1)\n",
"show_bm_mat(bm_mat, large_solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 0.27807622 | 1.19 |
power use_umfpack=False | 0.28087587 | 1.20 |
direct sparse use_umfpack=True | 0.23442681 | 1.00 |
direct sparse use_umfpack=False | 0.28316166 | 1.21 |
iterative use_precond=True, use_rcm=True, sym=False | 0.27145686 | 1.16 |
iterative use_precond=True, use_rcm=False, sym=False | 0.27361963 | 1.17 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 0.27396398 | 1.17 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | 0.29887297 | 1.27 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 12,
"text": [
""
]
}
],
"prompt_number": 12
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test problem 2: high temperature harmonic oscillator"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bm_problem2(N):\n",
" \n",
" a = destroy(N)\n",
" H = a.dag() * a\n",
" nth = N / 4\n",
" gamma = 0.05\n",
" c_ops = [sqrt(gamma * (nth + 1)) * a, sqrt(gamma * nth) * a.dag()]\n",
"\n",
" return H, c_ops"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 13
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(50, solvers, bm_problem2)\n",
"show_bm_mat(bm_mat, solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Failure in iterative-bicg use_precond=True, use_rcm=False, sym=False: Steadystate solver failed with fatal error: -10.\n"
]
},
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 0.02198510 | 1.60 |
power use_umfpack=False | 0.02195816 | 1.60 |
direct sparse use_umfpack=True | 0.01739521 | 1.27 |
direct sparse use_umfpack=False | 0.01502705 | 1.09 |
direct dense use_umfpack=True | 5.38591220 | 391.95 |
direct dense use_umfpack=False | 5.56329439 | 404.86 |
iterative use_precond=True, use_rcm=True, sym=True | 0.01940596 | 1.41 |
iterative use_precond=True, use_rcm=False, sym=True | 0.01877887 | 1.37 |
iterative use_precond=False, use_rcm=True, sym=True | 0.85532901 | 62.25 |
iterative use_precond=False, use_rcm=False, sym=True | 0.90501690 | 65.86 |
iterative use_precond=True, use_rcm=True, sym=False | 0.01919260 | 1.40 |
iterative use_precond=True, use_rcm=False, sym=False | 0.01824219 | 1.33 |
iterative use_precond=False, use_rcm=True, sym=False | 0.82320507 | 59.91 |
iterative use_precond=False, use_rcm=False, sym=False | 0.89947019 | 65.46 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.01872413 | 1.36 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.03652155 | 2.66 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.01884017 | 1.37 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.03594759 | 2.62 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 0.01916583 | 1.39 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | nan | nan |
iterative-bicg use_precond=False, use_rcm=True, sym=False | 0.03907797 | 2.84 |
iterative-bicg use_precond=False, use_rcm=False, sym=False | 0.03581498 | 2.61 |
lu | 0.01374128 | 1.00 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"text": [
""
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test problem 3: Coupled oscillators"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bm_problem3(N):\n",
" \n",
" a = tensor(destroy(N), identity(N))\n",
" b = tensor(identity(N), destroy(N))\n",
" \n",
" H = a.dag() * a + 0.25 * b.dag() * b + 0.05 * a.dag() * a * (b + b.dag()) + 0.1 * (a + a.dag()) \n",
"\n",
" c_ops = [sqrt(0.05) * a, sqrt(0.015) * a.dag(), sqrt(0.1) * b, sqrt(0.075) * b.dag()]\n",
"\n",
" return H, c_ops"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 15
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(10, large_solvers, bm_problem3)\n",
"show_bm_mat(bm_mat, large_solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 33.75028317 | 10.41 |
power use_umfpack=False | 34.65209894 | 10.68 |
direct sparse use_umfpack=True | 8.38044708 | 2.58 |
direct sparse use_umfpack=False | 27.64443343 | 8.52 |
iterative use_precond=True, use_rcm=True, sym=False | 3.24328792 | 1.00 |
iterative use_precond=True, use_rcm=False, sym=False | 3.47413125 | 1.07 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 4.31313200 | 1.33 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | 3.44422872 | 1.06 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
""
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test problem 4: a two level system "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bm_problem4(args=None):\n",
"\n",
" sz = sigmaz() \n",
" sx = sigmax()\n",
" \n",
" H = sz\n",
" c_ops = [sqrt(0.05) * sx]\n",
"\n",
" return H, c_ops"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(None, solvers, bm_problem4)\n",
"show_bm_mat(bm_mat, solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 0.01118724 | 1.95 |
power use_umfpack=False | 0.01090584 | 1.90 |
direct sparse use_umfpack=True | 0.00697067 | 1.21 |
direct sparse use_umfpack=False | 0.00657489 | 1.14 |
direct dense use_umfpack=True | 0.00577335 | 1.00 |
direct dense use_umfpack=False | 0.00575178 | 1.00 |
iterative use_precond=True, use_rcm=True, sym=True | 0.00739422 | 1.29 |
iterative use_precond=True, use_rcm=False, sym=True | 0.00644894 | 1.12 |
iterative use_precond=False, use_rcm=True, sym=True | 0.00735872 | 1.28 |
iterative use_precond=False, use_rcm=False, sym=True | 0.00638795 | 1.11 |
iterative use_precond=True, use_rcm=True, sym=False | 0.00745142 | 1.30 |
iterative use_precond=True, use_rcm=False, sym=False | 0.00646114 | 1.12 |
iterative use_precond=False, use_rcm=True, sym=False | 0.00748370 | 1.30 |
iterative use_precond=False, use_rcm=False, sym=False | 0.00631652 | 1.10 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.00740299 | 1.29 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.00633924 | 1.10 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.00731163 | 1.27 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.00634141 | 1.10 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 0.00732563 | 1.27 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | 0.00647802 | 1.13 |
iterative-bicg use_precond=False, use_rcm=True, sym=False | 0.00735517 | 1.28 |
iterative-bicg use_precond=False, use_rcm=False, sym=False | 0.00637131 | 1.11 |
lu | 0.00636835 | 1.11 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
""
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test problem 5: spin chain"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bm_problem5(N=1):\n",
"\n",
" H = 0\n",
" for m in range(N):\n",
" H += tensor([sigmaz() if n == m else identity(2) for n in range(N)])\n",
"\n",
" for m in range(N-1):\n",
" H += tensor([sigmax() if n in [m,m+1] else identity(2) for n in range(N)]) \n",
" \n",
" c_ops = [sqrt(0.05) * tensor([sigmam() if n == m else identity(2) for n in range(N)])\n",
" for m in range(N)]\n",
" \n",
" return H, c_ops"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 19
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(2, solvers, bm_problem5)\n",
"show_bm_mat(bm_mat, solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 0.01427205 | 1.59 |
power use_umfpack=False | 0.01437883 | 1.60 |
direct sparse use_umfpack=True | 0.01016231 | 1.13 |
direct sparse use_umfpack=False | 0.00989394 | 1.10 |
direct dense use_umfpack=True | 0.00903437 | 1.00 |
direct dense use_umfpack=False | 0.00900269 | 1.00 |
iterative use_precond=True, use_rcm=True, sym=True | 0.01079981 | 1.20 |
iterative use_precond=True, use_rcm=False, sym=True | 0.00970068 | 1.08 |
iterative use_precond=False, use_rcm=True, sym=True | 0.01065261 | 1.18 |
iterative use_precond=False, use_rcm=False, sym=True | 0.00960047 | 1.07 |
iterative use_precond=True, use_rcm=True, sym=False | 0.01077218 | 1.20 |
iterative use_precond=True, use_rcm=False, sym=False | 0.00982673 | 1.09 |
iterative use_precond=False, use_rcm=True, sym=False | 0.01066728 | 1.18 |
iterative use_precond=False, use_rcm=False, sym=False | 0.00975940 | 1.08 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.01067920 | 1.19 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.00998452 | 1.11 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.01066823 | 1.19 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.01001103 | 1.11 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 0.01083741 | 1.20 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | 0.00956621 | 1.06 |
iterative-bicg use_precond=False, use_rcm=True, sym=False | 0.01108155 | 1.23 |
iterative-bicg use_precond=False, use_rcm=False, sym=False | 0.00998340 | 1.11 |
lu | 0.00949795 | 1.06 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 20,
"text": [
""
]
}
],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(4, solvers, bm_problem5)\n",
"show_bm_mat(bm_mat, solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Failure in iterative use_precond=False, use_rcm=True, sym=True: Steadystate solver did not reach tolerance after 1000 steps.\n",
"Failure in iterative use_precond=False, use_rcm=False, sym=True: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Failure in iterative use_precond=False, use_rcm=True, sym=False: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Failure in iterative use_precond=False, use_rcm=False, sym=False: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 0.02471032 | 1.25 |
power use_umfpack=False | 0.02463510 | 1.25 |
direct sparse use_umfpack=True | 0.01991639 | 1.01 |
direct sparse use_umfpack=False | 0.01971462 | 1.00 |
direct dense use_umfpack=True | 0.02616692 | 1.33 |
direct dense use_umfpack=False | 0.02603197 | 1.32 |
iterative use_precond=True, use_rcm=True, sym=True | 0.02279491 | 1.16 |
iterative use_precond=True, use_rcm=False, sym=True | 0.02091999 | 1.06 |
iterative use_precond=False, use_rcm=True, sym=True | nan | nan |
iterative use_precond=False, use_rcm=False, sym=True | nan | nan |
iterative use_precond=True, use_rcm=True, sym=False | 0.02344491 | 1.19 |
iterative use_precond=True, use_rcm=False, sym=False | 0.02175648 | 1.10 |
iterative use_precond=False, use_rcm=True, sym=False | nan | nan |
iterative use_precond=False, use_rcm=False, sym=False | nan | nan |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.02228684 | 1.13 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.07718029 | 3.92 |
iterative-bicg use_precond=True, use_rcm=True, sym=True | 0.02243965 | 1.14 |
iterative-bicg use_precond=False, use_rcm=False, sym=True | 0.07755005 | 3.94 |
iterative-bicg use_precond=True, use_rcm=True, sym=False | 0.02243128 | 1.14 |
iterative-bicg use_precond=True, use_rcm=False, sym=False | 0.02093019 | 1.06 |
iterative-bicg use_precond=False, use_rcm=True, sym=False | 0.07641232 | 3.88 |
iterative-bicg use_precond=False, use_rcm=False, sym=False | 0.07933478 | 4.03 |
lu | 0.01969354 | 1.00 |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"text": [
""
]
}
],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"bm_mat = benchmark_steadystate_solvers(6, large_solvers, bm_problem5)\n",
"show_bm_mat(bm_mat, large_solvers)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Failure in iterative use_precond=True, use_rcm=True, sym=False: Steadystate solver did not reach tolerance after 1000 steps.\n",
"Failure in iterative use_precond=True, use_rcm=False, sym=False: Steadystate solver did not reach tolerance after 1000 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Failure in iterative-bicg use_precond=True, use_rcm=True, sym=False: Steadystate solver did not reach tolerance after 40960 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n",
"Failure in iterative-bicg use_precond=True, use_rcm=False, sym=False: Steadystate solver did not reach tolerance after 40960 steps."
]
},
{
"output_type": "stream",
"stream": "stdout",
"text": [
"\n"
]
},
{
"html": [
"Solver | Elapsed time | Ratio |
power use_umfpack=True | 10.34370623 | 8.90 |
power use_umfpack=False | 10.37572424 | 8.93 |
direct sparse use_umfpack=True | 1.16162479 | 1.00 |
direct sparse use_umfpack=False | 9.75404005 | 8.40 |
iterative use_precond=True, use_rcm=True, sym=False | nan | nan |
iterative use_precond=True, use_rcm=False, sym=False | nan | nan |
iterative-bicg use_precond=True, use_rcm=True, sym=False | nan | nan |
iterative-bicg use_precond=True, use_rcm=False, sym=False | nan | nan |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
""
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Software versions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from qutip.ipynbtools import version_table\n",
"\n",
"version_table()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"html": [
"Software | Version |
---|
Python | 3.3.2+ (default, Oct 9 2013, 14:50:09) \n",
"[GCC 4.8.1] |
matplotlib | 1.3.1 |
QuTiP | 3.0.0.dev-0f20b2a |
Cython | 0.20.1 |
SciPy | 0.13.3 |
Numpy | 1.8.0 |
IPython | 2.0.0 |
OS | posix [linux] |
Thu Apr 03 17:04:46 2014 JST |
"
],
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"text": [
""
]
}
],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 23
}
],
"metadata": {}
}
]
}