{
 "metadata": {
  "name": "examples_project3"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def testParallelRuddell(nIterations):\n",
      "    import time\n",
      "    from scipy.stats.distributions import entropy, random\n",
      "# Set up parameters and input values here\n",
      "    params = random(10)\n",
      "#Start the timer\n",
      "    start_time = time.time()\n",
      "    #useParFor allows us to use the same function for testing both parfor and for\n",
      "    for i in nIterations:\n",
      "           results = -entropy(params)\n",
      "    tm=time.time() - start_time\n",
      "    return tm,results\n",
      "\n",
      "#Number of iterations to test for\n",
      "iters = (10000, 50000, 100000, 500000, 1000000)\n",
      "# Run multiple times to get an average\n",
      "for t in range(2):\n",
      "#Now test parallel ipython on available cluster\n",
      "      print  'Repeat sequential loop',t,'times'\n",
      "      #results=testParallelRuddell(iters)\n",
      "      results=map(testParallelRuddell,(iters,))\n",
      "      print results"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Repeat sequential loop 0 times\n",
        "[(0.0, -2.2279732080601287)]"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "\n",
        "Repeat sequential loop 1 times\n",
        "[(0.0, -2.0842001703934705)]\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "from IPython.parallel import Client\n",
      "\n",
      "rc = Client()\n",
      "view = rc[:]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "v = rc.load_balanced_view()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 3
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "@v.remote(block=True)\n",
      "def testParallelRuddell(nIterations):\n",
      "    import time\n",
      "    from scipy.stats.distributions import entropy, random\n",
      "# Set up parameters and input values here\n",
      "    params = random(10)\n",
      "#Start the timer\n",
      "    start_time = time.time()\n",
      "    #useParFor allows us to use the same function for testing both parfor and for\n",
      "    for i in nIterations:\n",
      "           results = -entropy(params)\n",
      "    tm=time.time() - start_time\n",
      "    return tm,results\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 4
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#Number of iterations to test for\n",
      "iters = (10000, 50000, 100000, 500000, 1000000)\n",
      "# Run multiple times to get an average\n",
      "for t in range(2):\n",
      "#Now test parallel ipython on available cluster\n",
      "      print  'Repeat sequential loop',t,'times'\n",
      "      ar=map(testParallelRuddell,(iters,))\n",
      "      print ar\n",
      "      "
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Repeat sequential loop 0 times\n",
        "[[0.0, -2.2166050162892783]]\n",
        "Repeat sequential loop 1 times\n",
        "[[0.0, -2.070844491333514]]\n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "@v.remote(block=False)\n",
      "def testParallelRuddell(nIterations):\n",
      "    import time\n",
      "    from scipy.stats.distributions import entropy, random\n",
      "# Set up parameters and input values here\n",
      "    params = random(10)\n",
      "#Start the timer\n",
      "    start_time = time.time()\n",
      "    #useParFor allows us to use the same function for testing both parfor and for\n",
      "    for i in nIterations:\n",
      "           results = -entropy(params)\n",
      "    tm=time.time() - start_time\n",
      "    return tm,results"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 42
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "#Number of iterations to test for\n",
      "iters = (10000, 50000, 100000, 500000, 1000000)\n",
      "# Run multiple times to get an average\n",
      "for t in range(1):\n",
      "#Now test parallel ipython on available cluster\n",
      "      print  'Repeat sequential loop',t,'times'\n",
      "      ar=map(testParallelRuddell,(iters,))\n",
      "      print ar"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Repeat sequential loop 0 times\n",
        "[[0.0, -2.1836608733912257]]\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "def testParallelRuddell(nIterations):\n",
      "    import time\n",
      "    from scipy.stats.distributions import entropy, random\n",
      "# Set up parameters and input values here\n",
      "    params = random(10)\n",
      "#Start the timer\n",
      "    start_time = time.time()\n",
      "    #useParFor allows us to use the same function for testing both parfor and for\n",
      "    for i in nIterations:\n",
      "           results = -entropy(params)\n",
      "    tm=time.time() - start_time\n",
      "    return tm,results"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 13
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#Number of iterations to test for\n",
      "iters = (10000, 50000, 100000, 500000, 1000000)\n",
      "# Run multiple times to get an average\n",
      "for t in range(1):\n",
      "#Now test parallel ipython on available cluster\n",
      "      print  'Repeat sequential loop',t,'times'\n",
      "      ar=v.map(testParallelRuddell,(iters,))\n",
      "      print list(ar)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Repeat sequential loop 0 times\n",
        "[(0.0, -2.1688719629748676)]\n"
       ]
      }
     ],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#Number of iterations to test for\n",
      "iters = (10000, 50000, 100000, 500000, 1000000)\n",
      "# Run multiple times to get an average\n",
      "for t in range(1):\n",
      "#Now test parallel ipython on available cluster\n",
      "      print  'Repeat sequential loop',t,'times'\n",
      "      ar=v.map_async(testParallelRuddell,(iters,))\n",
      "      print ar"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Repeat sequential loop 0 times\n",
        "<AsyncMapResult: testParallelRuddell>\n"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "result=ar.get()\n",
      "print result"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[(0.0, -2.0127953867760029)]\n"
       ]
      }
     ],
     "prompt_number": 16
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "ar=v.map_sync(testParallelRuddell,(iters,))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print ar"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "[(0.0010001659393310547, -2.0515640506288118)]\n"
       ]
      }
     ],
     "prompt_number": 18
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": "*"
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}