{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# FiPy Parallel Benchmarks and Running Fipy in IPython\n", "\n", "The main goal of this notebook is to provide some benchmarks for\n", "running FiPy in parallel on a workstation as well as on a larger\n", "cluster (the cluster work has now been moved to an alternative notebook in this directory). The first part of the notebook demonstrates using FiPy in\n", "parallel with IPython's parallel architecture. Although we have tested FiPy in the past on up to 64 parallel processes,\n", "these results don't seem to be available on the web anywhere. I hope\n", "to address the lack of data for FiPy in parallel with this notebook.\n", "\n", "## FiPy in IPython\n", "\n", "FiPy uses both `mpi4py` and `PyTrilinos`, which both require that the\n", "IPython parallel engines are launched with MPI support using\n", "\n", " ipcluster start -n 4 --engines=MPIEngineSetLauncher\n", " \n", "To test that FiPy is working correctly in IPython, run the following." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.parallel import Client\n", "\n", "c = Client()\n", "\n", "view = c[:]\n", "view.block = True\n", "view.activate() # enable magics\n", "\n", "%px import fipy as fp\n", "%px procID = fp.parallelComm.procID\n", "%px Nproc = fp.parallelComm.Nproc\n", "\n", "print view['procID']\n", "print view['Nproc']" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[0, 3, 1, 2]\n", "[4, 4, 4, 4]\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `procID`s should be different.\n", "\n", "Below we use a simple example to test FiPy in parallel. Just a\n", "diffusion problem on a 3D grid. The domain is initialized with a\n", "random field. The `GmshGrid3D` class is used to obtain an optimal\n", "partition using METIS. The regular `Grid3D` class only uses slices,\n", "which is highly sub-optimal.\n" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def setup(N):\n", " import fipy as fp\n", " import numpy as np\n", " np.random.seed(1)\n", " L = 1.\n", " m = fp.GmshGrid3D(nx=N, ny=N, nz=N, dx=L / N, dy=L / N, dz=L / N)\n", " v0 = 1.\n", " for dim in range(3):\n", " x = np.linspace(0., L, N)\n", " fx = np.sum(np.array([np.sin(2 * x * np.pi * i * np.random.random()) / i for i in range(1, N)]), axis=0)\n", " v0 = np.outer(v0, fx).flatten()\n", " v = fp.CellVariable(mesh=m)\n", " v0 = np.resize(v0, len(v)) ## Gmsh doesn't always give us the correct sized grid!\n", " eqn = fp.TransientTerm(1e-3) == fp.DiffusionTerm()\n", " v[:] = v0.copy()\n", " return eqn, v, v0\n", "\n", "view['setup'] = setup" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Timings in parallel" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%px\n", "\n", "eqn, v, v0 = setup(60)\n", "eqn.solve(v, dt=1.)\n", "%timeit v[:] = v0.copy(); eqn.solve(v, dt=1.)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[stdout:0] 1 loops, best of 3: 3.07 s per loop\n", "[stdout:1] 1 loops, best of 3: 3.07 s per loop\n", "[stdout:2] 1 loops, best of 3: 3.07 s per loop\n", "[stdout:3] 1 loops, best of 3: 3.07 s per loop\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above cell executes two time steps, but only the second step is\n", "timed. FiPy does a lot of memory allocation on the first step so\n", "the first step is not typical of the run times for subsequent\n", "steps. For most \"real\" simulations, the setup time is inconsequential\n", "compared to running hundreds of time steps. In parallel on 4\n", "parallel processes the time taken my laptop is 3.07 s. Let's see how fast\n", "this is in serial." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Timings in serial" ] }, { "cell_type": "code", "collapsed": false, "input": [ "eqn, v, v0 = setup(60)\n", "eqn.solve(v, dt=1.)\n", "%timeit v[:] = v0.copy(); eqn.solve(v, dt=1.)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 loops, best of 3: 3.53 s per loop\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's not much faster in parallel than in serial. The seemingly bad parallel scaling is because FiPy is not consistent in its choice of solver for different solver suites. In serial, FiPy used PySparse which uses PCG, while in parallel Trilinos is used and its default is GMRES, which is much slower for this problem." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%px print eqn.getDefaultSolver().__class__\n", "print eqn.getDefaultSolver().__class__" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[stdout:0] \n", "[stdout:1] \n", "[stdout:2] \n", "[stdout:3] \n", "\n" ] } ], "prompt_number": 176 }, { "cell_type": "markdown", "metadata": {}, "source": [ "An added complication is that each solver is using a different preconditioner. Instead of letting FiPy choose its default solver, let's instatiate the solver we want." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Timings with a consistent solver choice\n", "\n", "Since PySparse is using PCG, we'll use PCG for both Trilinos and\n", "PySparse. PySparse is using a preconditioner which isn't available in\n", "Trilinos. To unclutter the problem, let's switch off preconditioning." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import fipy.solvers.pysparse as solvers\n", "solver = solvers.linearPCGSolver.LinearPCGSolver(precon=None, iterations=500, tolerance=1e-15)\n", "\n", "eqn.solve(v, solver=solver, dt=1.)\n", "%timeit v[:] = v0.copy(); eqn.solve(v, solver=solver, dt=1.)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "-c:4: MaximumIterationWarning: Iterations: 501. Relative error: 2.11522e-07\n", "-c:257: MaximumIterationWarning: Iterations: 501. Relative error: 7.09105e-06\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "1 loops, best of 3: 5.81 s per loop\n" ] } ], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "import fipy.solvers.trilinos as solvers\n", "solver = solvers.linearPCGSolver.LinearPCGSolver(precon=None, iterations=500, tolerance=1e-15)\n", "\n", "eqn.solve(v, solver=solver, dt=1.)\n", "%timeit v[:] = v0.copy(); eqn.solve(v, solver=solver, dt=1.)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1 loops, best of 3: 5.06 s per loop\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The time taken with a Trilinos solver is now more in line with the\n", "PySparse solvers. Although the stopping criterion may still not be\n", "consistent. Let's try this in parallel." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## In parallel" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%px\n", "import fipy.solvers.trilinos as solvers\n", "solver = solvers.linearPCGSolver.LinearPCGSolver(precon=None, iterations=500, tolerance=1e-15)\n", "eqn.solve(v, solver=solver, dt=1.)\n", "%timeit v[:] = v0.copy(); eqn.solve(v, dt=1., solver=solver)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[stdout:0] 1 loops, best of 3: 1.8 s per loop\n", "[stdout:1] 1 loops, best of 3: 1.8 s per loop\n", "[stdout:2] 1 loops, best of 3: 1.8 s per loop\n", "[stdout:3] 1 loops, best of 3: 1.8 s per loop\n" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now see some speed up with 4 processes, a speed up of 2.8. Not great, but at least it's in the right direction. One thing we can do is compare the speed up for different sized meshes. In order to capture the timing output, we will switch over to using the `timeit` module directly instead of the magic." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Grid Search of Run Times" ] }, { "cell_type": "code", "collapsed": false, "input": [ "setup_str = '''\n", "import fipy as fp\n", "import numpy as np\n", "np.random.seed(1)\n", "L = 1.\n", "N = {N:d}\n", "m = fp.GmshGrid3D(nx=N, ny=N, nz=N, dx=L / N, dy=L / N, dz=L / N)\n", "v0 = 1.\n", "for dim in range(3):\n", " x = np.linspace(0., L, N)\n", " fx = np.sum(np.array([np.sin(2 * x * np.pi * i * np.random.random()) / i for i in range(1, N)]), axis=0)\n", " v0 = np.outer(v0, fx).flatten()\n", "v = fp.CellVariable(mesh=m)\n", "v0 = np.resize(v0, len(v)) ## Gmsh doesn't always give us the correct sized grid!\n", "eqn = fp.TransientTerm(1e-3) == fp.DiffusionTerm()\n", "v[:] = v0.copy()\n", "\n", "import fipy.solvers.{suite} as solvers\n", "solver = solvers.linearPCGSolver.LinearPCGSolver(precon=None, iterations={iterations}, tolerance=1e-100)\n", "\n", "eqn.solve(v, dt=1., solver=solver)\n", "v[:] = v0.copy()\n", "'''\n", "\n", "timeit_str = '''\n", "eqn.solve(v, dt=1., solver=solver)\n", "fp.parallelComm.Barrier()\n", "'''" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 129 }, { "cell_type": "code", "collapsed": true, "input": [ "import timeit\n", "import itertools\n", "%px import timeit\n", "\n", "attempts = 3\n", "\n", "view['timeit_str'] = timeit_str\n", "view['attempts'] = attempts\n", "view['setup_str'] = setup_str\n", "\n", "runtimes = pd.DataFrame(columns=['iterations', 'N', 'mode', 'suite', 'run times'])\n", "\n", "Ns = (10, 20, 30, 40, 50, 60, 70, 80)\n", "iterations_ = (100, 200, 400, 800)\n", "modes = ('serial', 'parallel')\n", "suites = ('pysparse', 'trilinos')\n", " \n", "for N, iterations, mode, suite in itertools.product(Ns, iterations_, modes, suites):\n", " if mode == 'serial':\n", " timer = timeit.Timer(timeit_str, setup=setup_str.format(N=N, suite=suite, iterations=iterations))\n", " times = timer.repeat(attempts, 1)\n", " runtime = min(times)\n", " elif suite == 'trilinos':\n", " view['N'] = N\n", " view['iterations'] = iterations\n", " view['suite'] = suite\n", " %px timer = timeit.Timer(timeit_str, setup=setup_str.format(N=N, suite=suite, iterations=iterations))\n", " %px times = timer.repeat(attempts, 1)\n", " runtime = max(np.array(view['times']).min(axis=1))\n", " else:\n", " runtime = None\n", " \n", " runtimes = runtimes.append({'N' : N, 'iterations' : iterations, 'mode' : mode, 'suite' : suite, 'run time' : runtime})" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 9.31853e-09\n", " \n", "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 9.31853e-09\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 0.12792\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 0.12792\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 3.45931e-09\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 3.45931e-09\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: StagnatedSolverWarning: The solver stagnated. Iterations: 283. Relative error: 3.83173e-12\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: StagnatedSolverWarning: The solver stagnated. Iterations: 283. Relative error: 3.83173e-12\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 52.6294\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 52.6294\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 0.000650014\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 0.000650014\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 401. Relative error: 1.63231e-11\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 401. Relative error: 1.63231e-11\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: StagnatedSolverWarning: The solver stagnated. Iterations: 401. Relative error: 1.31603e-11\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: StagnatedSolverWarning: The solver stagnated. Iterations: 401. Relative error: 1.31603e-11\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 1222.68\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 1222.68\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 0.381838\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 0.381838\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 401. Relative error: 5.15039e-09\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 401. Relative error: 5.15039e-09\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: StagnatedSolverWarning: The solver stagnated. Iterations: 546. Relative error: 6.1597e-12\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: StagnatedSolverWarning: The solver stagnated. Iterations: 546. Relative error: 6.1597e-12\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 2630.36\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 2630.36\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 6.97832\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 6.97832\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 401. Relative error: 1.30938e-05\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 401. Relative error: 1.30938e-05\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: StagnatedSolverWarning: The solver stagnated. Iterations: 667. Relative error: 2.05959e-11\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: StagnatedSolverWarning: The solver stagnated. Iterations: 667. Relative error: 2.05959e-11\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 9923.01\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 9923.01\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 88.8965\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 88.8965\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 401. Relative error: 0.00132848\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 401. Relative error: 0.00132848\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: StagnatedSolverWarning: The solver stagnated. Iterations: 782. Relative error: 6.23627e-11\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: StagnatedSolverWarning: The solver stagnated. Iterations: 782. Relative error: 6.23627e-11\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 15303.3\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 15303.3\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 725.629\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 725.629\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 401. Relative error: 0.01752\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 401. Relative error: 0.01752\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 801. Relative error: 5.58104e-07\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 801. Relative error: 5.58104e-07\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 101. Relative error: 17086.5\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 101. Relative error: 17086.5\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 201. Relative error: 1579.89\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 201. Relative error: 1579.89\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 401. Relative error: 0.623549\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 401. Relative error: 0.623549\n", " If -n is not given, a suitable number of loops is calculated by trying\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:24: MaximumIterationWarning: Iterations: 801. Relative error: 2.82057e-09\n", " \n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:30: MaximumIterationWarning: Iterations: 801. Relative error: 2.82057e-09\n", " If -n is not given, a suitable number of loops is calculated by trying\n" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "runtimes.to_csv('laptop_runtimes.csv')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "df = pd.read_csv('laptop_runtimes.csv', index_col=0)\n", "iterations_ = (100, 200, 400, 800)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "f = plt.figure(figsize=(15,5))\n", "ax1 = f.add_subplot(131)\n", "ax2 = f.add_subplot(132)\n", "ax3 = f.add_subplot(133)\n", "\n", "for iters in iterations_:\n", " parallel_df = df[(df['iterations'] == iters) & (df['mode'] == 'parallel') & (df['suite'] == 'trilinos')].sort('N')\n", " serial_df = df[(df['iterations'] == iters) & (df['mode'] == 'serial') & (df['suite'] == 'trilinos')].sort('N')\n", " pysparse_df = df[(df['iterations'] == iters) & (df['mode'] == 'serial') & (df['suite'] == 'pysparse')].sort('N')\n", " Ns = parallel_df['N']\n", " parallelTimes = np.array(parallel_df['run times'])\n", " serialTimes = np.array(serial_df['run times'])\n", " pysparseTimes = np.array(pysparse_df['run times'])\n", " ax1.semilogx(Ns**3, serialTimes / parallelTimes, label=iters)\n", " ax2.semilogx(Ns**3, pysparseTimes / serialTimes, label=iters)\n", " if iters == 800:\n", " ax3.loglog(Ns**3, parallelTimes, label='parallel Trilios')\n", " ax3.loglog(Ns**3, serialTimes, label='serial Trilinos')\n", " ax3.loglog(Ns**3, pysparseTimes, label='PySparse')\n", " \n", "ax1.set_ylabel(\"Speed Up\")\n", "ax2.set_ylabel(\"Speed Up\")\n", "ax1.set_xlabel(\"$N^3$\")\n", "ax2.set_xlabel(\"$N^3$\")\n", "ax1.set_title(\"Speed up, serial / parallel\")\n", "ax2.set_title(\"Speed up, PySparse / Trilinos (serial)\")\n", "ax3.set_title(\"Raw Times, 800 iterations\")\n", "ax3.set_xlabel(\"$N^3$\")\n", "ax3.set_ylabel(\"Time (s)\")\n", "\n", "ax1.legend(loc='upper left')\n", "ax2.legend(loc='upper left')\n", "l = ax3.legend(loc='upper left')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n/t9isWDq1KkDSk9XPYyhbtcu/Ofii/2/afNm4cnpe+8NeP/Pf/Y8nl7/NJrvbsbFwwMcwwf3eNiX\nXhK6aiaiW6dMwZyWFnStWYMzr70Ws2YBM2fKUf7iHPy5fh7GSjSYNCnN2+9Jv6jVNwm88YYwJrmo\nKN45iSnX8eN4efdu/H/2zjssqqOLwz/sFWmCXSn2DqhoNKKALZqo2GI3EVAxaoy9YldQ89kVjDVN\nBHswCiiiYEOwGxUWRLqUpUjfne+PkYWFBXYXts/7PPuwO/feuecCc3bOzClhlkqYVKpRI2DwYPoq\nIi6Org4+fAjs2UPdOgsLqXutjg79WfSq7HPLlkDTpop7PgaDUT08fQqMHg3eksVY1zMFZ67Oxsnv\nTmKYqfhlwHJz6V7H9et0OmwlftiexiAzI6+I0NBQWFhYoFc5tYsqO65p3ExNhW6tWujTuHH5J+3Z\nQ1PLSpDljBCCDbc3wPO1J+7OuYu2OpUUVxe6li6WHz0K+PoqdxmqVo0awaxWLdw5cwa2AwcCoJud\nhxdMgs9uF4z9+TYOLx9alWoTDDVHR0cHqampAIC0tDTo6+srWCJGGXJygHXrgL//1rigC4+4OIzQ\n00NbaQuRypsWLYCxY+kLoF8o2dnUTYvLpT+LXiU/JySUbZs4kf7dGQyG6nLzJjB9OhJ2rcd3vN9h\n8MkAYU5hMGwofhKpN29ost9Onah7pjKEDSkjMjfy/P39saOC9P4VHS9ZG8La2hrW1tbVLJ3ycSQu\nDvMrSrgSF0eXLMLDxe6Tx+fB2ccZIXEhuDfnHpo2FH8lNC8PcHKim4cPHtDva2VnfIcOuGBkBNv7\n96lvKYCaNWpi+/B12N9wM1avHooPH4BVqzRufqgQAgICVKJmE5fLhY6ODiZPnoyQkBDY2NggMjIS\ndnaiXZo1UT8pDfv2Uf8cDQu8yOfzsS82Fpe7dVO0KNKjpQU0bEhfCv5CURXdxGCoDadOgaxcies7\n52JW8masG7QOi/otEjv2jhDgxAk6f9uxg4YCs3lcBRAZcuzYMcF7Pz8/QgghaWlpFR4vQsaiKSUf\ncnKI7t27JKuwsPyTVq0i5KefxO4ztyCXTPScSIacGkLSc9MlkufTJ0IGDSJk3DhCsrIkulShvP38\nmTTz9SW8ESOE2gt4BcRsvxnxCgkgvXoR4uhISEGBgoTUYJRhbJ8/f57o6uoSDw8PQZuFhYXgvbu7\n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\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The graph on the left is the speed up when switching from serial to\n", "parallel. The center graph is the speed up when switching from\n", "PySparse to Trilinos. The graph on the right shows the raw run times\n", "with an iteration count of 800. The x-axis is the number of cells in\n", "the domain. The best parallel speed up is about 2.7 and occurs for 800\n", "iterations at ~30000 cells. The left graph shows that there is a drop\n", "off in parallel speed up as the domain size increases. This is\n", "consistent with a probable saturation of some aspect of the parallel\n", "communication. This has nothing to do with memory as the raw run times\n", "are not dramatically increased for larger numbers of cells.\n", "\n", "In this example the only communication occurs during the solver\n", "iterations. This fact supports the decreased speed up for larger\n", "system sizes as the iteration count increases. The communication\n", "requirement is probably a linear function of the number of iterations.\n", "\n", "An important consideration is the proportion of time spent in the\n", "solver. I ran a few quick tests to check this (not shown here). I used\n", "a system size of `N=60` and checked the run times for different\n", "numbers of iterations. A fairly consistent time per iteration count of\n", "0.00265 (s) was observed for the parallel simulations and 0.0035 (s)\n", "for the serial simulations. This is independent of the number of\n", "iterations. Outside of the solver, the speed up was over 2$\\times$\n", "faster." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Altering the number of parallel nodes\n", "\n", "The previous testing used a fixed process count of\n", "4. Unfortunately, with `mpi4py` and `PyTrilinos` there doesn't seem\n", "to be a way to decrease the number of parallel engines interactively\n", "without restarting the cluster. Even if we select a subview of the\n", "parallel engines (with `view = Client()[:3]` for example), FiPy is still\n", "using `mpi4py`'s value of `Nproc=4`. This issue needs to be ironed out\n", "in FiPy. It should be possible to modify FiPy so that some parallel\n", "nodes have zero elements. This already occurs for small test cases in\n", "parallel.\n", "\n", "Due to this issue, the parallel runs are executed externally using `!mpirun`. The following cell creates a script called `fipy_timing.py`, which takes the control parameters as command line arguments" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%%writefile fipy_timing.py\n", "\n", "\"\"\"\n", "Usage: fipy_timing.py [-h] [--N N] [--iterations ] [--suite ]\n", "\n", "Options:\n", " -h --help Show this screen.\n", " --N=N Cell number is N^3 [default: 30]\n", " --iterations= Number of iterations [default: 100]\n", " --suite= Solver suite [default: trilinos]\n", " \n", "\"\"\"\n", "\n", "from docopt import docopt\n", "import timeit\n", "import numpy as np\n", "import fipy as fp\n", "\n", "arguments = docopt(__doc__, version='Run FiPy timing')\n", "N = int(arguments['--N'])\n", "iterations = int(arguments['--iterations'])\n", "suite = arguments['--suite']\n", "\n", "attempts = 3\n", "\n", "setup_str = '''\n", "import fipy as fp\n", "import numpy as np\n", "np.random.seed(1)\n", "L = 1.\n", "N = {N:d}\n", "m = fp.GmshGrid3D(nx=N, ny=N, nz=N, dx=L / N, dy=L / N, dz=L / N)\n", "v0 = 1.\n", "for dim in range(3):\n", " x = np.linspace(0., L, N)\n", " fx = np.sum(np.array([np.sin(2 * x * np.pi * i * np.random.random()) / i for i in range(1, N)]), axis=0)\n", " v0 = np.outer(v0, fx).flatten()\n", "v = fp.CellVariable(mesh=m)\n", "v0 = np.resize(v0, len(v)) ## Gmsh doesn't always give us the correct sized grid!\n", "eqn = fp.TransientTerm(1e-3) == fp.DiffusionTerm()\n", "v[:] = v0.copy()\n", "\n", "import fipy.solvers.{suite} as solvers\n", "solver = solvers.linearPCGSolver.LinearPCGSolver(precon=None, iterations={iterations}, tolerance=1e-100)\n", "\n", "eqn.solve(v, dt=1., solver=solver)\n", "v[:] = v0.copy()\n", "'''\n", "\n", "timeit_str = '''\n", "eqn.solve(v, dt=1., solver=solver)\n", "fp.parallelComm.Barrier()\n", "'''\n", "\n", "timer = timeit.Timer(timeit_str, setup=setup_str.format(N=N, suite=suite, iterations=iterations))\n", "times = timer.repeat(attempts, 1)\n", "\n", "if fp.parallelComm.procID == 0:\n", " print min(times)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Writing fipy_timing.py\n" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following cell runs `fipy_timing.py` for different control parameters and collects the results into a data frame." ] }, { "cell_type": "code", "collapsed": true, "input": [ "import itertools\n", "\n", "runtimes = pd.DataFrame(columns=['iterations', 'N', 'np', 'run time', 'suite'])\n", "\n", "Ns = (10, 20, 30, 40, 50, 60, 70, 80)\n", "iterations_ = (100, 200, 400, 800)\n", "nps = (1, 2, 3, 4, 5, 6, 7, 8)\n", "suites = ('trilinos', 'pysparse')\n", "tmpfile = 'tmp.txt'\n", " \n", "for N, iterations, np_, suite in itertools.product(Ns, iterations_, nps, suites):\n", " if suite == 'pysparse' and np_ > 1:\n", " runtime = None\n", " else:\n", " !mpirun -np $np_ python fipy_timing.py --N=$N --suite=$suite --iterations=$iterations > $tmpfile\n", " runtime = float(open(tmpfile).read())\n", " \n", " runtimes = runtimes.append({'N' : N, 'iterations' : iterations, 'np' : np_, 'suite' : suite, 'run time' : runtime}, ignore_index=True)\n", " \n", "runtimes.to_csv('laptop_runtimes_nproc.csv')" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 9.31853e-09\r\n", " statement: statement to be timed (default 'pass')\r\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 9.31853e-09\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\r\n", " statement: statement to be timed (default 'pass')\r\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\r\n", " statement: statement to be timed (default 'pass')\r\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 142. Relative error: 1.97603e-12\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 0.12792\r\n", " statement: statement to be timed (default 'pass')\r\n", "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 0.12792\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 3.45931e-09\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 3.45931e-09\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 283. Relative error: 3.83173e-12\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 283. Relative error: 3.83173e-12\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 283. Relative error: 3.83173e-12\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 283. Relative error: 3.83173e-12\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 52.6294\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 52.6294\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 0.000650014\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 0.000650014\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 401. Relative error: 1.63231e-11\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 401. Relative error: 1.63231e-11\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 401. Relative error: 1.31603e-11\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 401. Relative error: 1.31603e-11\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 1222.68\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 1222.68\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 0.381838\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 0.381838\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 401. Relative error: 5.15039e-09\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 401. Relative error: 5.15039e-09\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 546. Relative error: 6.1597e-12\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 546. Relative error: 6.1597e-12\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 2630.36\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 2630.36\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 6.97832\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 6.97832\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 401. Relative error: 1.30938e-05\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 401. Relative error: 1.30938e-05\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 667. Relative error: 2.05959e-11\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 667. Relative error: 2.05959e-11\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 9923.01\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 9923.01\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 88.8965\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 88.8965\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 401. Relative error: 0.00132848\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 401. Relative error: 0.00132848\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: StagnatedSolverWarning: The solver stagnated. Iterations: 782. Relative error: 6.23627e-11\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: StagnatedSolverWarning: The solver stagnated. Iterations: 782. Relative error: 6.23627e-11\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 15303.3\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 15303.3\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 725.629\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 725.629\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 401. Relative error: 0.01752\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 401. Relative error: 0.01752\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 801. Relative error: 5.58104e-07\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 801. Relative error: 5.58104e-07\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 101. Relative error: 17086.5\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 101. Relative error: 17086.5\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 201. Relative error: 1579.89\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 201. Relative error: 1579.89\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 401. Relative error: 0.623549\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 401. Relative error: 0.623549\r\n", " \r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:23: MaximumIterationWarning: Iterations: 801. Relative error: 2.82057e-09\r\n", " statement: statement to be timed (default 'pass')\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "/home/wd15/anaconda/lib/python2.7/timeit.py:29: MaximumIterationWarning: Iterations: 801. Relative error: 2.82057e-09\r\n", " \r\n" ] } ], "prompt_number": 263 }, { "cell_type": "code", "collapsed": false, "input": [ "df = pd.read_csv('laptop_runtimes_nproc.csv')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "f = plt.figure(figsize=(20, 5))\n", "ax1 = f.add_subplot(141)\n", "ax2 = f.add_subplot(142)\n", "ax3 = f.add_subplot(143)\n", "ax4 = f.add_subplot(144)\n", "\n", "for iterations, ax in zip((800, 400, 200, 100), (ax1, ax2, ax3, ax4)):\n", " for N in (10, 20, 30, 40, 50, 60, 70, 80):\n", " sub_df = df[(df['iterations'] == iterations) & (df['N'] == N) & (df['suite'] == 'trilinos')].sort('np')\n", " nprocs = sub_df['np']\n", " speed_up = np.array(sub_df[sub_df['np'] == 1]['run time']) / np.array(sub_df['run time'])\n", " ax.semilogx(sub_df['np'], speed_up, label='$N={0}$'.format(N))\n", "\n", " ax.semilogx((1, 8), (1, 8), 'k--')\n", " ax.set_ylabel(\"Speed Up\")\n", " ax.set_xlabel(\"Parallel Processes\")\n", " ax.legend(loc=\"upper left\")\n", " ax.set_ylim(ymax=3)\n", " ax.set_title(\"iterations={0}\".format(iterations))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nuDor9GMrtEHEURkG7NljFpICAsDPzzbPowKSiDgkZ+/Lzh6/iJis0Jet0AYRV2eFfmyFNoi4utvt\nx/m8VZOIiIiIiIiIiDgbFZBERERERERERCRbKiCJiIiIiIiIiEi2VEASEREREREREZFsqYAkIiIi\nIiIiIiLZUgFJRERERERERESypQKSiIiIiIiIiIhkSwUkERERERERERHJlgpIIiIiIiIiIiKSLRWQ\nREREREREREQkWyogiYiIiIiIiIhItlRAEhERERERERGRbNm0gLR48WLCw8MJCQnJ8v5+/foB3PB+\nEZG8oFwkIo5AuUhEHIFykYjcLpsVkCIiIgBo1aoVANu2bbvue0JCQqhduza+vr62CkNEXJxykYg4\nAuUiEXEEykUikhs2KyCFhobi6ekJgI+PD6tWrbrue0JCQvjnn39o2bKlrcIQERenXCQijkC5SEQc\ngXKRiOSGzQpIcXFxeHl5Xf38zJkz131PbGws4eHhfPbZZ7YKQ0RcnHKRiDgC5SIRcQTKRSKSGzbd\nA8kwjGzv79GjB61ateLMmTOEh4fbMhQRcWHKRSLiCJSLRMQRKBeJyO0qaKsH9vDwIDY2FoCzZ8/i\n7e2d4f6QkBC8vLwIDAzE29ubqKioq2tx0wwZMuTq7RYtWtCiRQtbhSsieWTt2rWsXbvW3mFcpVwk\n4pqsmItA+UjE2SgXiYgjyKtc5GbcrAR9m7Zt28aWLVvo0aMHn332GW3atKFhw4bExcXh4eFBeHg4\n/v7+lClThv79+9O5c2caNmx4LTA3t5tWx0XE8dm7LysXiQjYvy/nNheB/dsgIrln736sXCQicPv9\n2GZL2Bo1agRAeHg4Hh4eVxNP69atAXPn/1WrVrF48WLKli17XWISEckLykUi4giUi0TEESgXiUhu\n2GwGUm6psi1iDc7el509fhExWaEvW6ENIq7OCv3YCm0QcXUONwNJRERERERERESsQQUkERERERER\nERHJlgpIIiIiIiIiIiKSLRWQREREREREREQkWyogiYiIiIiIiIhItlRAEhERERERERGRbKmAJCIi\nIiIiIiIi2VIBSUREREREREREsqUCkoiIiIiIiIiIZEsFJBERERERERERyZYKSCIiIiIiIiIiki0V\nkEREREREREREJFsqIImIiIiIiIiISLZUQBIRERERERERkWypgCQiIiIiIiIiItlSAUlERERERERE\n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\nAuUi5SIRR6BcpFzkDFRAckHpp0emiYuLY+XKlaxcuRLIOH2wdevWAHh6et7we9KLiIggKirqahXZ\n09PzluJzc3O7+pyZE0WbNm0AM0lFR0df9xw3inHbtm307t0bgEaNGl19vKCgIEaOHElAQAA+Pj6M\nHj36lmIVkdunXKRcJOIIlIuUi0QcgXKRcpEz0BI2AWDUqFE0adKE6dOn89xzz2VZib7R92T+3iZN\nmtC4cWNCQ0MJDQ3NMB0xt9Key9/fP8vnuFGMjRs3vpqwIiIirj5eaGgonTp14pdffsHHx4fg4OA8\ni1VEbp1ykXKRiCNQLlIuEnEEykXKRY5GM5BcUFZV6U6dOtGvXz9WrlyJj48P0dHRbNu2DTc3t6vf\nn933pH/sHj160LFjRwICAoiNjWXAgAFX77tRRTzz1zM/Zuafv9FzZBXj9u3b+fDDD+nQoQNhYWF4\neHhc3eHf39+fDh064OHhgZubG2FhYbf1OxWRW6dcpFwk4giUi5SLRByBcpFykTNwM3K66FFERERE\nRERERFySlrCJiIiIiIiIiEi2VEASEREREREREZFsqYAkIiIiIiIiIiLZUgFJRERERERERESypQKS\niIiIiIiIiIhkSwUkERERERERERHJlgpIIiIiIiIiIiKSLRWQREREREREREQkW/8HbsAvcJZUlDEA\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "A few things from the graphs:\n", "\n", " * `N=10` is slow because the overlap is such a high proportion of the number of cells\n", " * `N=80` is slow because the global communication cost is becoming excessive.\n", " \n", "The graphs above really just confirm that there is an issue with communication. The load average when the laptop is not running Python jobs is about 0.5." ] } ], "metadata": {} } ] }