{
 "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": "markdown",
   "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": "markdown",
   "metadata": {},
   "source": [
    "## Tutorials"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* [Data Publication API](Data%20Publication%20API.ipynb) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Examples"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* [Monitoring an MPI Simulation - 1](Monitoring%20an%20MPI%20Simulation%20-%201.ipynb)\n",
    "* [Monitoring an MPI Simulation - 2](Monitoring%20an%20MPI%20Simulation%20-%202.ipynb)\n",
    "* [Parallel Decorator and map](Parallel%20Decorator%20and%20map.ipynb)\n",
    "* [Parallel Magics](Parallel%20Magics.ipynb)\n",
    "* [Using Dill](Using%20Dill.ipynb)\n",
    "* [Using MPI with IPython Parallel](Using%20MPI%20with%20IPython%20Parallel.ipynb)\n",
    "* [Monte Carlo Options](Monte%20Carlo%20Options.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Non-notebook examples"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This directory also contains examples that are regular Python (`.py`) files."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<a href='customresults.py' target='_blank'>customresults.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/customresults.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='dagdeps.py' target='_blank'>dagdeps.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/dagdeps.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='dependencies.py' target='_blank'>dependencies.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/dependencies.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='fetchparse.py' target='_blank'>fetchparse.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/fetchparse.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='iopubwatcher.py' target='_blank'>iopubwatcher.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/iopubwatcher.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='itermapresult.py' target='_blank'>itermapresult.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/itermapresult.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='nwmerge.py' target='_blank'>nwmerge.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/nwmerge.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='phistogram.py' target='_blank'>phistogram.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/phistogram.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='task_profiler.py' target='_blank'>task_profiler.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/task_profiler.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<a href='throughput.py' target='_blank'>throughput.py</a><br>"
      ],
      "text/plain": [
       "/Users/bgranger/Documents/Computing/IPython/code/ipython/examples/Parallel Computing/throughput.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%run ../utils/list_pyfiles.ipy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "More substantial examples can be found in subdirectories:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/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>"
      ],
      "text/plain": [
       "daVinci Word Count/\n",
       "  pwordfreq.py\n",
       "  wordfreq.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/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>"
      ],
      "text/plain": [
       "interengine/\n",
       "  bintree.py\n",
       "  bintree_script.py\n",
       "  communicator.py\n",
       "  interengine.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "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>"
      ],
      "text/plain": [
       "pi/\n",
       "  parallelpi.py\n",
       "  pidigits.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/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>"
      ],
      "text/plain": [
       "rmt/\n",
       "  rmt.ipy\n",
       "  rmt.ipynb\n",
       "  rmtkernel.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/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>"
      ],
      "text/plain": [
       "wave2D/\n",
       "  communicator.py\n",
       "  parallelwave-mpi.py\n",
       "  parallelwave.py\n",
       "  RectPartitioner.py\n",
       "  wavesolver.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/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>"
      ],
      "text/plain": [
       "workflow/\n",
       "  client.py\n",
       "  job_wrapper.py\n",
       "  wmanager.py"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%run ../utils/list_subdirs.ipy"
   ]
  }
 ],
 "metadata": {},
 "nbformat": 4,
 "nbformat_minor": 0
}