{
 "metadata": {
  "name": "",
  "signature": "sha256:1e9336d35cc07875300c5b876df6ce1f1971c2ee94870788c6ea32bbb789c42b"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "<img src=\"../images/ipython_logo.png\">"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "Back to the main [Index](../Index.ipynb)"
     ]
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Parallel Computing"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "IPython includes an architecture and library for interactive parallel computing. The enables Python functions, along with their arguments, to be run in parallel a multicore CPU, cluster or cloud using a simple Python API."
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Tutorials"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "* [Data Publication API](Data Publication API.ipynb) "
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Examples"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "* [Monitoring an MPI Simulation - 1](Monitoring an MPI Simulation - 1.ipynb)\n",
      "* [Monitoring an MPI Simulation - 2](Monitoring an MPI Simulation - 2.ipynb)\n",
      "* [Parallel Decorator and map](Parallel Decorator and map.ipynb)\n",
      "* [Parallel Magics](Parallel Magics.ipynb)\n",
      "* [Using Dill](Using Dill.ipynb)\n",
      "* [Using MPI with IPython Parallel](Using MPI with IPython Parallel.ipynb)\n",
      "* [Monte Carlo Options](Monte Carlo Options.ipynb)"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Non-notebook examples"
     ]
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "This directory also contains examples that are regular Python (`.py`) files."
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%run ../utils/list_pyfiles.ipy"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "<a href='customresults.py' target='_blank'>customresults.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/customresults.py"
       ]
      },
      {
       "html": [
        "<a href='dagdeps.py' target='_blank'>dagdeps.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/dagdeps.py"
       ]
      },
      {
       "html": [
        "<a href='dependencies.py' target='_blank'>dependencies.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/dependencies.py"
       ]
      },
      {
       "html": [
        "<a href='fetchparse.py' target='_blank'>fetchparse.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/fetchparse.py"
       ]
      },
      {
       "html": [
        "<a href='iopubwatcher.py' target='_blank'>iopubwatcher.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/iopubwatcher.py"
       ]
      },
      {
       "html": [
        "<a href='itermapresult.py' target='_blank'>itermapresult.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/itermapresult.py"
       ]
      },
      {
       "html": [
        "<a href='nwmerge.py' target='_blank'>nwmerge.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/nwmerge.py"
       ]
      },
      {
       "html": [
        "<a href='phistogram.py' target='_blank'>phistogram.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/phistogram.py"
       ]
      },
      {
       "html": [
        "<a href='task_profiler.py' target='_blank'>task_profiler.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/task_profiler.py"
       ]
      },
      {
       "html": [
        "<a href='throughput.py' target='_blank'>throughput.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/throughput.py"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "markdown",
     "metadata": {},
     "source": [
      "More substantial examples can be found in subdirectories:"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%run ../utils/list_subdirs.ipy"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "html": [
        "daVinci Word Count/<br>\n",
        "&nbsp;&nbsp;<a href='daVinci Word Count/pwordfreq.py' target='_blank'>pwordfreq.py</a><br>\n",
        "&nbsp;&nbsp;<a href='daVinci Word Count/wordfreq.py' target='_blank'>wordfreq.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "daVinci Word Count/\n",
        "  pwordfreq.py\n",
        "  wordfreq.py"
       ]
      },
      {
       "html": [
        "interengine/<br>\n",
        "&nbsp;&nbsp;<a href='interengine/bintree.py' target='_blank'>bintree.py</a><br>\n",
        "&nbsp;&nbsp;<a href='interengine/bintree_script.py' target='_blank'>bintree_script.py</a><br>\n",
        "&nbsp;&nbsp;<a href='interengine/communicator.py' target='_blank'>communicator.py</a><br>\n",
        "&nbsp;&nbsp;<a href='interengine/interengine.py' target='_blank'>interengine.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "interengine/\n",
        "  bintree.py\n",
        "  bintree_script.py\n",
        "  communicator.py\n",
        "  interengine.py"
       ]
      },
      {
       "html": [],
       "metadata": {},
       "output_type": "display_data",
       "text": []
      },
      {
       "html": [
        "pi/<br>\n",
        "&nbsp;&nbsp;<a href='pi/parallelpi.py' target='_blank'>parallelpi.py</a><br>\n",
        "&nbsp;&nbsp;<a href='pi/pidigits.py' target='_blank'>pidigits.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "pi/\n",
        "  parallelpi.py\n",
        "  pidigits.py"
       ]
      },
      {
       "html": [
        "rmt/<br>\n",
        "&nbsp;&nbsp;<a href='rmt/rmt.ipy' target='_blank'>rmt.ipy</a><br>\n",
        "&nbsp;&nbsp;<a href='rmt/rmt.ipynb' target='_blank'>rmt.ipynb</a><br>\n",
        "&nbsp;&nbsp;<a href='rmt/rmtkernel.py' target='_blank'>rmtkernel.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "rmt/\n",
        "  rmt.ipy\n",
        "  rmt.ipynb\n",
        "  rmtkernel.py"
       ]
      },
      {
       "html": [
        "wave2D/<br>\n",
        "&nbsp;&nbsp;<a href='wave2D/communicator.py' target='_blank'>communicator.py</a><br>\n",
        "&nbsp;&nbsp;<a href='wave2D/parallelwave-mpi.py' target='_blank'>parallelwave-mpi.py</a><br>\n",
        "&nbsp;&nbsp;<a href='wave2D/parallelwave.py' target='_blank'>parallelwave.py</a><br>\n",
        "&nbsp;&nbsp;<a href='wave2D/RectPartitioner.py' target='_blank'>RectPartitioner.py</a><br>\n",
        "&nbsp;&nbsp;<a href='wave2D/wavesolver.py' target='_blank'>wavesolver.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "wave2D/\n",
        "  communicator.py\n",
        "  parallelwave-mpi.py\n",
        "  parallelwave.py\n",
        "  RectPartitioner.py\n",
        "  wavesolver.py"
       ]
      },
      {
       "html": [
        "workflow/<br>\n",
        "&nbsp;&nbsp;<a href='workflow/client.py' target='_blank'>client.py</a><br>\n",
        "&nbsp;&nbsp;<a href='workflow/job_wrapper.py' target='_blank'>job_wrapper.py</a><br>\n",
        "&nbsp;&nbsp;<a href='workflow/wmanager.py' target='_blank'>wmanager.py</a><br>"
       ],
       "metadata": {},
       "output_type": "display_data",
       "text": [
        "workflow/\n",
        "  client.py\n",
        "  job_wrapper.py\n",
        "  wmanager.py"
       ]
      }
     ],
     "prompt_number": 2
    }
   ],
   "metadata": {}
  }
 ]
}