Created
January 31, 2016 10:16
-
-
Save jfpuget/60e07a82dece69b011bb to your computer and use it in GitHub Desktop.
How To Quickly Compute The Mandelbrot Set In Python: an experiment with parallelism and gpu computing using Numpy, Numexpr, Numba, Cython, PyOpenGL, and PyCUDA.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"# How To Quickly Compute The Mandelbrot Set In Python\n", | |
"\n", | |
"## An experiment with parallelism and gpu computing using Numpy, Numexpr, Numba, Cython, PyOpenGL, and PyCUDA.\n", | |
"\n", | |
"## Author: [Jean-François Puget](https://www.ibm.com/developerworks/community/blogs/jfp?lang=en)\n", | |
"\n", | |
"Motivation and explanation for the code is available at [How To Quickly Compute The Mandelbrot Set In Python](https://www.ibm.com/developerworks/community/blogs/jfp/entry/How_To_Compute_Mandelbrodt_Set_Quickly?lang=en)\n", | |
"\n", | |
"Timings depend heavily on the machine and Python version used. The timings below are for a Windows laptop (Lenovo Thinkpad W520) with Anaconda 64 bits and Python 3.5. A more recent machine could be way faster for gpu computing for instance." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's import some useful packages first." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"from matplotlib import pyplot as plt\n", | |
"from matplotlib import colors\n", | |
"%matplotlib inline" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Display\n", | |
"\n", | |
"In order to check code correctness we will display the images. \n", | |
"\n", | |
"The display code is taken from [How To Make Python Run As Fast As Julia.](https://www.ibm.com/developerworks/community/blogs/jfp/entry/Python_Meets_Julia_Micro_Performance?lang=en)\n", | |
"\n", | |
"We use small image sizes to enable quick check on all code, including the slowest ones." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 2, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot_image(xmin,xmax,ymin,ymax,width=3,height=3,maxiter=80,cmap='hot'):\n", | |
" dpi = 72\n", | |
" img_width = dpi * width\n", | |
" img_height = dpi * height\n", | |
" x,y,z = mandelbrot_set(xmin,xmax,ymin,ymax,img_width,img_height,maxiter)\n", | |
" \n", | |
" fig, ax = plt.subplots(figsize=(width, height),dpi=72)\n", | |
" ticks = np.arange(0,img_width,3*dpi)\n", | |
" x_ticks = xmin + (xmax-xmin)*ticks/img_width\n", | |
" plt.xticks(ticks, x_ticks)\n", | |
" y_ticks = ymin + (ymax-ymin)*ticks/img_width\n", | |
" plt.yticks(ticks, y_ticks)\n", | |
" \n", | |
" norm = colors.PowerNorm(0.3)\n", | |
" ax.imshow(z.T,cmap=cmap,origin='lower',norm=norm) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Baseline\n", | |
"\n", | |
"Let's set a base line, using code from [Julia GitHhub](https://github.com/JuliaLang/julia/blob/master/test/perf/micro/perf.py)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot(z,maxiter):\n", | |
" c = z\n", | |
" for n in range(maxiter):\n", | |
" if abs(z) > 2:\n", | |
" return n\n", | |
" z = z*z + c\n", | |
" return maxiter\n", | |
"\n", | |
"def mandelbrot_set(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width)\n", | |
" r2 = np.linspace(ymin, ymax, height)\n", | |
" return (r1,r2,[mandelbrot(complex(r, i),maxiter) for r in r1 for i in r2])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We use two images for the benchmark" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 11 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 3min 56s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# Numpy\n", | |
"\n", | |
"Let's replace lists with Numpy arrays." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 6, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot(c,maxiter):\n", | |
" z = c\n", | |
" for n in range(maxiter):\n", | |
" if abs(z) > 2:\n", | |
" return n\n", | |
" z = z*z + c\n", | |
" return 0\n", | |
"\n", | |
"def mandelbrot_set(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width)\n", | |
" r2 = np.linspace(ymin, ymax, height)\n", | |
" n3 = np.empty((width,height))\n", | |
" for i in range(width):\n", | |
" for j in range(height):\n", | |
" n3[i,j] = mandelbrot(r1[i] + 1j*r2[j],maxiter)\n", | |
" return (r1,r2,n3)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 8.25 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-2.0,0.5,-1.25,1.25,1000,1000,10)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 6min 10s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's check these images are correct. We check with a small size image given the code is really slow." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nprLQmIKeo20pNzvwrW99kuUtazjzUZczL6+icH+U7gNzKNo6yU2nkWxuo667jl1d9eMeY1qTaThK\nXuijhlPahq8Y5jPk1pzoNxxEBruBqLGSEC7ytKMSU91BIRZDdbBdleC0TaQfugjfl0kXzcM0GhYz\nj+MpZIomPZmxi/mkw14ECddXyFoKiVAeSWJwzdSbjSKRJZWJkIiAmstAl83dd9/NFVdccbgDz2qc\na9zBGb+fSy4zl84HLsHxFAbyItEsWwjRet56tnc0zmwHBIgapG7ErHAssLf0bwRhzsHE+XoWwkER\nQpiMRV9F931MxUeRfZqr+qmr62bT995JuK6b/vYmHF8mla+s0fB4COkWunqoDsFws244UoUwybDI\nEs9ZJomwqOaSFQ9Jc6A1BYsSJzyRTmmO8PH/aeffXnI754TeidtXTV8uImJ0iOTlrnsuFw6jCYK4\n055MBT5CmG+SBqqYupy8sZBjqHiwnGBbxdiNqsv7xhCu+KKviC7tqksQSDyxZTlZy6B/98JJdZ+b\nCAXboGAfmkQV0sWaLazbKKMSMS1HxdCGCCjLPqFEis/s/CnvPrOGO373+ykZ20zGW1ev4aNXns53\nf9fFSlOjNxMTa01fEtktnkk6H6bgTCxKM22DtmXY/A8gbtwXUnkuXdoOAvsRLvqxkEF4/FK+Qp+j\n82xnIxv2zmdPTy3tA8nDEinnKvTa+mG3zARPxDLJ+nMRerMRssUhwhUcbTBfD0Cv6sc4YwO37L2X\nqpft5bxLhYSzJMFzdy7ijWe1VnJ5Zg1+9J5zoL0J/6GLeFvs9fS0N5VSiCSyloHlaqRKRLJ9maI/\nvmTctJ+ZhsNBmFYvJMoE7i9tcxFPIGXUPr1AbyDTaBukeupJqjbaBNoBvfbkZquCJ1Mo6U7U6EUk\nOERY0w9kCCBvKyiyX9KlEPJlsiT0KVRbR2pvoiVUhXkwzJdql/GlJ/ez4JJ9LH/oHSw27+WB27u5\n5LrZ3S6ntgbWfWc1S+YG+L3XkestmXalh18qHyJAImfpFEszUhAIUdLxMG0rbYf/P8Lv0bgagNXH\nZUQjoTGUZREf4/Oy+/1IstArHoPkYSo+puxN6JRIhPKDZl51NMMZpz+NoduE5u0Tza7NohDPzEaR\nFA8usFj+X5/iosvTbN26mIce2nQMz+L44Y7/beZPvzX59qp3E7Q30d/RSOdAknQhTN7S6cnE8EqO\n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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x78dfc88>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,maxiter=80,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x57f6470>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_image(-0.74877,-0.74872,0.06505,0.06510,maxiter=2048,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Numba\n", | |
"\n", | |
"Compiling code with Numba is easy, we simply need to annotate the functions with `@jit`." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from numba import jit\n", | |
"\n", | |
"@jit\n", | |
"def mandelbrot(c,maxiter):\n", | |
" z = c\n", | |
" for n in range(maxiter):\n", | |
" if abs(z) > 2:\n", | |
" return n\n", | |
" z = z*z + c\n", | |
" return 0\n", | |
"\n", | |
"@jit\n", | |
"def mandelbrot_set(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width)\n", | |
" r2 = np.linspace(ymin, ymax, height)\n", | |
" n3 = np.empty((width,height))\n", | |
" for i in range(width):\n", | |
" for j in range(height):\n", | |
" n3[i,j] = mandelbrot(r1[i] + 1j*r2[j],maxiter)\n", | |
" return (r1,r2,n3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Timing it shows it is pretty fast" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 167 ms per loop\n", | |
"1 loops, best of 3: 3.84 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-2.0,0.5,-1.25,1.25,1000,1000,80)\n", | |
"%timeit mandelbrot_set(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Checking if it is correct" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nprLQmIKeo20pNzvwrW99kuUtazjzUZczL6+icH+U7gNzKNo6yU2nkWxuo667jl1d9eMeY1qTaThK\nXuijhlPahq8Y5jPk1pzoNxxEBruBqLGSEC7ytKMSU91BIRZDdbBdleC0TaQfugjfl0kXzcM0GhYz\nj+MpZIomPZmxi/mkw14ECddXyFoKiVAeSWJwzdSbjSKRJZWJkIiAmstAl83dd9/NFVdccbgDz2qc\na9zBGb+fSy4zl84HLsHxFAbyItEsWwjRet56tnc0zmwHBIgapG7ErHAssLf0bwRhzsHE+XoWwkER\nQpiMRV9F931MxUeRfZqr+qmr62bT995JuK6b/vYmHF8mla+s0fB4COkWunqoDsFws244UoUwybDI\nEs9ZJomwqOaSFQ9Jc6A1BYsSJzyRTmmO8PH/aeffXnI754TeidtXTV8uImJ0iOTlrnsuFw6jCYK4\n055MBT5CmG+SBqqYupy8sZBjqHiwnGBbxdiNqsv7xhCu+KKviC7tqksQSDyxZTlZy6B/98JJdZ+b\nCAXboGAfmkQV0sWaLazbKKMSMS1HxdCGCCjLPqFEis/s/CnvPrOGO373+ykZ20zGW1ev4aNXns53\nf9fFSlOjNxMTa01fEtktnkk6H6bgTCxKM22DtmXY/A8gbtwXUnkuXdoOAvsRLvqxkEF4/FK+Qp+j\n82xnIxv2zmdPTy3tA8nDEinnKvTa+mG3zARPxDLJ+nMRerMRssUhwhUcbTBfD0Cv6sc4YwO37L2X\nqpft5bxLhYSzJMFzdy7ijWe1VnJ5Zg1+9J5zoL0J/6GLeFvs9fS0N5VSiCSyloHlaqRKRLJ9maI/\nvmTctJ+ZhsNBmFYvJMoE7i9tcxFPIGXUPr1AbyDTaBukeupJqjbaBNoBvfbkZquCJ1Mo6U7U6EUk\nOERY0w9kCCBvKyiyX9KlEPJlsiT0KVRbR2pvoiVUhXkwzJdql/GlJ/ez4JJ9LH/oHSw27+WB27u5\n5LrZ3S6ntgbWfWc1S+YG+L3XkestmXalh18qHyJAImfpFEszUhAIUdLxMG0rbYf/P8Lv0bgagNXH\nZUQjoTGUZREf4/Oy+/1IstArHoPkYSo+puxN6JRIhPKDZl51NMMZpz+NoduE5u0Tza7NohDPzEaR\nFA8usFj+X5/iosvTbN26mIce2nQMz+L44Y7/beZPvzX59qp3E7Q30d/RSOdAknQhTN7S6cnE8EqO\n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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x5ac3d30>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Removing square root computation within abs" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 14, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"@jit\n", | |
"def mandelbrot(c,maxiter):\n", | |
" z = c\n", | |
" for n in range(maxiter):\n", | |
" if z.real * z.real + z.imag * z.imag > 4.0:\n", | |
" return n\n", | |
" z = z*z + c\n", | |
" return 0\n", | |
"\n", | |
"@jit\n", | |
"def mandelbrot_set(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width)\n", | |
" r2 = np.linspace(ymin, ymax, height)\n", | |
" n3 = np.empty((width,height))\n", | |
" for i in range(width):\n", | |
" for j in range(height):\n", | |
" n3[i,j] = mandelbrot(r1[i] + 1j*r2[j],maxiter)\n", | |
" return (r1,r2,n3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"It is faster." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 115 ms per loop\n", | |
"1 loops, best of 3: 2.74 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-2.0,0.5,-1.25,1.25,1000,1000,80)\n", | |
"%timeit mandelbrot_set(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Checking if it is correct" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nprLQmIKeo20pNzvwrW99kuUtazjzUZczL6+icH+U7gNzKNo6yU2nkWxuo667jl1d9eMeY1qTaThK\nXuijhlPahq8Y5jPk1pzoNxxEBruBqLGSEC7ytKMSU91BIRZDdbBdleC0TaQfugjfl0kXzcM0GhYz\nj+MpZIomPZmxi/mkw14ECddXyFoKiVAeSWJwzdSbjSKRJZWJkIiAmstAl83dd9/NFVdccbgDz2qc\na9zBGb+fSy4zl84HLsHxFAbyItEsWwjRet56tnc0zmwHBIgapG7ErHAssLf0bwRhzsHE+XoWwkER\nQpiMRV9F931MxUeRfZqr+qmr62bT995JuK6b/vYmHF8mla+s0fB4COkWunqoDsFws244UoUwybDI\nEs9ZJomwqOaSFQ9Jc6A1BYsSJzyRTmmO8PH/aeffXnI754TeidtXTV8uImJ0iOTlrnsuFw6jCYK4\n055MBT5CmG+SBqqYupy8sZBjqHiwnGBbxdiNqsv7xhCu+KKviC7tqksQSDyxZTlZy6B/98JJdZ+b\nCAXboGAfmkQV0sWaLazbKKMSMS1HxdCGCCjLPqFEis/s/CnvPrOGO373+ykZ20zGW1ev4aNXns53\nf9fFSlOjNxMTa01fEtktnkk6H6bgTCxKM22DtmXY/A8gbtwXUnkuXdoOAvsRLvqxkEF4/FK+Qp+j\n82xnIxv2zmdPTy3tA8nDEinnKvTa+mG3zARPxDLJ+nMRerMRssUhwhUcbTBfD0Cv6sc4YwO37L2X\nqpft5bxLhYSzJMFzdy7ijWe1VnJ5Zg1+9J5zoL0J/6GLeFvs9fS0N5VSiCSyloHlaqRKRLJ9maI/\nvmTctJ+ZhsNBmFYvJMoE7i9tcxFPIGXUPr1AbyDTaBukeupJqjbaBNoBvfbkZquCJ1Mo6U7U6EUk\nOERY0w9kCCBvKyiyX9KlEPJlsiT0KVRbR2pvoiVUhXkwzJdql/GlJ/ez4JJ9LH/oHSw27+WB27u5\n5LrZ3S6ntgbWfWc1S+YG+L3XkestmXalh18qHyJAImfpFEszUhAIUdLxMG0rbYf/P8Lv0bgagNXH\nZUQjoTGUZREf4/Oy+/1IstArHoPkYSo+puxN6JRIhPKDZl51NMMZpz+NoduE5u0Tza7NohDPzEaR\nFA8usFj+X5/iosvTbN26mIce2nQMz+L44Y7/beZPvzX59qp3E7Q30d/RSOdAknQhTN7S6cnE8EqO\n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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x8c2dfd0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Decomposing complex into two floats." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"@jit\n", | |
"def mandelbrot(creal,cimag,maxiter):\n", | |
" real = creal\n", | |
" imag = cimag\n", | |
" for n in range(maxiter):\n", | |
" real2 = real*real\n", | |
" imag2 = imag*imag\n", | |
" if real2 + imag2 > 4.0:\n", | |
" return n\n", | |
" imag = 2* real*imag + cimag\n", | |
" real = real2 - imag2 + creal \n", | |
" return 0\n", | |
"\n", | |
"\n", | |
"@jit\n", | |
"def mandelbrot_set4(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width)\n", | |
" r2 = np.linspace(ymin, ymax, height)\n", | |
" n3 = np.empty((width,height))\n", | |
" for i in range(width):\n", | |
" for j in range(height):\n", | |
" n3[i,j] = mandelbrot(r1[i],r2[j],maxiter)\n", | |
" return (r1,r2,n3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Slightly faster." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 112 ms per loop\n", | |
"1 loops, best of 3: 2.44 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set4(-2.0,0.5,-1.25,1.25,1000,1000,80)\n", | |
"%timeit mandelbrot_set4(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAANMAAADDCAYAAAAY0SRCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXecXWWd/9+nn9vv9JaekEwSSAi9CatIEVkXsPOzr113\nbdssq1hwLauirmsBu6soioKigiBCgIQWICGkkF6mt9vv6b8/nnunZWZyJ5mQmUk+r9d55ebec899\nzpnzOc/3+ZbPVwqCgJM4iZM4esjHewAncRKzBSfJdBInMUU4SaaTOIkpwkkyncRJTBFOkukkTmKK\noB7vAYwFSZJOuhhPYlojCAJp9HvTkkwvNML8FJ03HNcxLAB0IHRcRzEzkQKyQM8L9HsDHMIjAKTp\nGGd6IWemMD9G441I41ygY4kosLD0+qS9fXQIShvApmP8WwNIY85MJzSZdN5MmB+9ED8FgASES68X\nl/5/okECjHE+K07h7/QDvaXXuSk8LoxPphPYzIuh8aoX7NfqEDdRzQv2i8cfCQ6dcVUgNs7+/eO8\nnwL8Sf52VWkLgC4gDeQneYzJ4oSdmWJsROG0Y/0zRIEmwOTEMOVahr3WmJpzthky4Xo5shnMBlzg\n+SkYz0kzbxhiPI3C6mN2fAlxE516zH5heqBMlAWT/E6cYHB2CkYZu1nELAITz0ZFoKOC/cZCH9AG\neJP8XhknzbwSFNYgUXXMjp9EmDfJY/YLxx9RhMmamMR3dMTNVif5NIRzaFJAztbJuBqOL+GXqBkt\nbQHCO2eNczyTIRJ3Ac4E+45GdWnbV/pedhLnMRFOqJlJZgURfoXCymNxeOYwe9dEKgw+gsZb84wH\no/RdFWgI5Tj/9KcZ6KvmQEcjiuLh+DK9uSgpRx/xPRdBkErWTA5ituphyCSsBA5wgKHZsBKcNPMA\nlZcQ5b4pP24SsVZQmJ0eurkI80w5gu82MWT21uhFTNVlcWMHZ535JFpjB/ufOAvL0di6ZwEHU0kG\nRhEKBJHaKvw9D7E+ap/EGD0EATdXuP8JTyaFNcTYMKXHNIDWKT3i9IEOROCIDWIF4cEcvo6o04to\nikcinKcpOcDCpnaSi3ey6ZELaB9I0plOUPBkCp74lhsMuS88hDlX6Tong5jR7EmOO40w/yb6nRN+\nzRTlsSk7loa4yWqn7IjTCzEEEY4UCmJNMtbN5foKRUcjbxlkslHiHY3Iso+pOZiaDeiEFJsggFyJ\nVAVPQUGiGuE+dys8hxjC2eBQeawpjjDXCwjyTgYnBJlM/osjM1LGxkJmZ9qPgSDBeEHVSlGLeOAM\nR0RxDtlv0cLdyKECc9NxooZFumhSLJl5kgRRVdDGkD28QCLt6tQAnZMYSzVDZlylcaZkadMR66lK\ncQKEPmQUVk9JutBCYDWzk0iLEOu+EEd3U0gcSiQAVQqQRv0Jtmxfir5yM3Pffgt1Vf3Mq+mlPp5C\nV1yGEoQCGmIZWhIpEpqFRsCcSbkYxGO0cZxxTYQaxN87WuH+s3xmihDiq2i87KiOEh+2zSZICPJM\nVaBAB+or3DdrmZxevRt//1wkTyFZ00tz0cRyNAzVxQsk3JKZp8oeS+fuZ5Xs8/DmlRzIRakDuic5\nvrkIE7GDya2lFgO7S9+daHab1WSSacbgnUd1jEagYWqGM+1QR+VP3cOh7P6eDGxXpXPjKqLblxJf\ntIuadJy+TAy9ZN7Zrrg9Y6ECixo76M7EiBgWMcvEczUMKo8tlaEiCN/F5Ai1sLT/PmBggmPPWkS5\n96i+30jlT9qZhGqEp26yZs94UEvHrGRVqsoeId0mrFvs7GgkHipQFckRLZpE6rtozEXoTMeJ6DbJ\nSI5kLIMUSPi2Tkd3Ha6nEFI8JAIkV6eLyhwSw6Ej/rb7juB7C4CD453bJI83YyAxH5l5R/RdE1g2\ntcOZFlARWetTnZ2hMjGRTNnFUETYVZF9ZAlkKcDzZVxfpmDreANJ9KXbafAUzI5GfM2hbs4BgqXb\n8bYsp9DUTuezp2KVZitZCpARpGhn8qlBKmKduHeS352IMLOWTFHuP6LvJZhcrtlMQYRjY66GEbPS\neJAI0GVBJFOziYeKIz4t2jpRw2IgHadq3zz0U5+ltqYXFA/XsOj908voycTofvjCQU8fgCyBKvm4\ngUwDIgF2siYfQDPCOzjZeNRYmJVk0nkP8hHcOuVMhtmGCMcmJhbl8Pl5EmCWZqWYOX6+t+WqWOk4\nWiqBZFj4OxfT01dNbzZKzjIoOsIojRgWtquiSqDLPq4nIyMI3cfkCaUhTPkOJm8ujsasdI0rrEIa\nLMOrDCFgHrPv6bIQcbNMXZRNIIQg0uECDjW6uL3joSE/mKnZKLKPREAinEdTSoaW4kEiBYFENhfB\ndlUcb2SSlqaMnaWnIB4YR3JD6whP39FilpFJxuATGLy74m8YiCf3UmZXXp2GMFclpv68JEQM5nDH\nVSUfSRLkMTW3FGcKkEsxJ0XxRHpRLENVNEu0uY1bn3+SDZkdRAyrtL4KyBRMJAlkSRBJL5Evqrqo\n0hC5JITZdiSOFQmYf4TfHTzG7MrNM0lSqHjv8mxkHtmPTVsYCLf3oSmjU4MEh88c12WPuOqgSAHx\ncB5D9TA1G1X2iZTMvepYhnmLdhFtakdJx2HpdmjsgHAe/9evwjKLdGRiHNzaSt42cH2JvGXgBzJd\naRH167P1ETl8IBwKR2LygcjpO1z86oFxcvNm1cwUY13F+yqIJ/dsI1ILwtFwrIhUxeGJpEk+cdVB\nlhBub8MiahaYX9tDMpIjHipQG8tQFcmRWL4FZdk2+Fgb2+ffy5rP/I7HNhWRWw4SOvdRkoCpC/eA\nKgdEDAsIiJnjPzTLuYFHEtYIc+QZLrNmiSCRROH0ivZVmH1VsBKCSMeKRCBmpMhh9pEJqCrd/NWR\nLIbmUBXJURvLsOL6n9N/zxX0DSQwdRtVCvCfPRW5r5pTv/RxNu8XVUX7I9s450Ib/voSTLNIVTiP\n78uDSUQh3aZ9IAkEVOs2Xdahj0SltLUgyjcqNXUURNnIfkSC7GQwa8gU4Y6K9gsx+1zf5XKHY0Wk\nEGItMdGMpEg+mhQQ18QtqMoeEcNi0SnPoxZNqqv6kTauovqSvxF75AI8CYxkP7JuQ00vzz4UR5ov\nyPSqT2wl+MalkEqg5CKEjZLBFsmhyz7NNb2sf2Y1BVsnbxsYsoflj+1ikRDXJovIBK+UVHOBXRXu\nW8asIVMlMBBrpGP59D4eqOfYJd+W3d8TORviqo0iBWiyuFVV2aM2lmHNgj3MOeV5XF9Gr+8CVwXL\nQItl0DQHaf5eqOkDzYYDcyjnaH/0o/8PbB1iGTRXJeHLxEMF1JaD6Ks2Ejx2DorsEzWLFB2NmOpg\n2eP7K3WE2VdgSP6rElQxvmLSWJgVDgiDD2LyJaTD+GKiiKTF2YIyiaba7V1GGHFDTUSkas1ClYf/\nuQJqYxkiuk1DIsWC+i7qqvpB9pEuvQ+yUZACKIToCx1k6Wd+Lr4m+/SmxawWj0dIta2GDRKsP49g\n4yrIRWDePiQgs3klG/fNoycTo+BodKfjFH2FjHt4X5yHSFZNVXD+AYJMo3PxxnNAzIKZKYzMksMS\nKcTsIZKEuMmnKkl1NFSG8u1GQ5F8JETAtFxvNPiZ7FETHSrDG8hH2NdTi+VoVIXzRDavJPvGb/PB\nb2/n3WeeyTkfeHTM30+nc0jRRwD4xut8/umTf4CfXw9mESyD2OKdNOUi9GRiyBJoiockgRdI5L2J\nxQMUhLnqIbx9E62LyuUkEpWZhzOeTArLMXjfhPskEDGE2YJqJqcMNBmUCwRHz3YyAabiEVJclDHu\nVVVxiYcO9bAFgYTtqliuSiQfpnfdJWzdEeGH4coqn+8ZeIzMZ1tJtvyQ957fSvDnK8kOJPHkofhS\nMpynJxsjqrpIBOS8w89Q5fzEPiYuq4gxpJR0OMx4MoX43oSfJxBlyLMlIFvPsZuRypoNo4mU0Gxk\nhtZEoyFLPolQAaX0uSJ7Q1kNIGJLoQI4GgusFl4871lu/E5llvwf/uzxBzazsMnkvYuuIL1jCd09\ntXSlhh4nkhQQ1i3ytkFE9ZAlKjL5QJAqwsTl8HFOCDKZqJwxwaezx3MnIdJljhWR5hzyTkBI9ohp\nh8tYC6iNZUf8X5YC5GHEMzQHY9k2pGiWh3ft4Iu3rZ30+J774Dvg8dVogF9aroR0B9dT8JCJmhZ+\nIFF0NEKKR0jxGLA17EBmokepjJiNG5m4RH0BsOcwY5zRQdv4YSr0Z0sZRQSRYzdZvbrDobz2Gk4k\nRfLRZY96w5qQSLLko6sOtbHMoeM1RJxJkT1kKSA8dz9SNAvn19K97GGuuWry/tQV//UzWLyT8Hnr\nqY0Pqdypw2bAeKjIcN9VUneo0y102UOXy0oQ46MZ8QAey6Ejc/is+xk+M42PxuM9gClCgmMjbBln\nqL6pDEXySajOKO/coYiaBVTZR1cPrQQKleJMmuIS0m1MzcGzdbwDc1B6lrD2Dwl+/bfJRnCAiAyn\nxWBdQCo/NOqQ7iBJwWB5RtSwyBSHAgWSBMnSmIqejF+apQqegjcqDUlGzP5FhAt99FXQmThjZsaS\nyeSrSOOUuc2WCtk4E9cKHQlMxDphtM9LZHcHYzoXQMSOEmGxVFfGIVtYt9BVD6VUTStJoKke+fYm\njEiOUOedfO6ti7EWbuVbP6w8hxIQXoL76yjsrMN2NOKhAo6nYLtCMwKg6OiEdAdZCkgVDq0aMIdl\nnBuyx2jzr9cWukwmYhbqYCQ0Jo5RzlAyxVBYjDTGhCwjTnimOxymsgZJLm2HztYBihSQ1Gx0Zcit\nXc7OlqQAwyxiWwa+P/6KQJZ9YoaFJAXESsV/EgHR0fVLpzzP5m1ZfnHb5CqHFsyV2fWlSwnaNpN/\n5mqxJpMCwrqNH0j4voypuZiaS6ZoYOo+huaSLpgjCgqHQyllsIvzFNnpixN5BoomKduAQKIBiW5G\nSjNP9DeZkWTSuAaNV4z5WTNTp7ZzPFBO3ZkqIkVKxxzLPIkoLgndpiaaJWoWSSYH6OmrRlPEWqem\nppfWs56g57kV7GxrHlQLGg1Dcwjr1oj1i654KHKApriYmoMq+/Dz6zmrdSvvubiPG//4dMXncPed\nb4ZbT4EdS1CkgHCJuOUOGmXHA0Dr6Vvo3bmYvlyERNhHyov4kz2Gdy+k2YPjjxgW5yzexZ7uWnZ3\n13EwHSfnaYNFh5V02piRZBoPC5nZclwhDpUUPlLEmLhHbky1CSk+YcPi9Pl7qZ2/F7UQYpckMhgy\nRZPq5ADhMzYwt7uO/lSCrGVQtHX8QBrMlwvrNouu/DPBk2ci13VjdTRSsIdmg5hZxNAcZNkXmQ+d\nDbxh4YWc95Nm/v5Nf6zsZP6yArqqwNHQFI+Q5qCXaqFkyccPpMFZcNk5j5Gq6WXnU2voz0UIaQ7Z\noonjHRqe1VVRY6UpLmHdpicT5bT5e4mHCmS3L0WyAU9DpbKy9hlHJol6wvxgzM9mMpHKQolHa54O\nL7sf71gx1cGUfRTZIx4qkLcMqnyZ4PJ7WLrpNPR0nGbFg/n7IJolmw9TFREmoCqXTUAI6RZVkRzJ\nXITgpg/C5pVw5ytId9ULd3hTO7z6Nrj5HaDbSGYRHI3W8CJae3Tad/2VpkXjl7JfdVUzv3vPdah/\nC0D2IZwnHM5jZmJIqkttNEuup5aBjPBzVjW3oeyfS/Urf0OVFPDk1lb6u+uImkXy9vg6tYosihjD\nuk104W5WLtjDzq56nN4aAqDO08ZVJBqOGUcmAGnUsDWGGi3PNJRTd5qP4hjlauHDF+oHRBSXUMkc\n0xSPIJAYyIfZtm8eix66iFDLQajvguo+yIfhL5cR1W0sw0JTXfqyUazSDBHWbZLJAWjoRMqdCa/N\ngv8HEne+Aqr7WParT/HDVQuZX7OJ1/7px9zzltexvvYu2HQabC/Cd1/Ex16/g8//YvchI73vL2+G\new+y9s8HOe/cLtbfa9CyKou1sJaVG5YgezK3OD8l1HYW18RfiSIHGI0dSP9wB48N7OPsqxtp2rOA\ntOJhDvM8ZosjSRU1iyiyTyKcZ+7853l6p4XaczGup6ApHoovIxPQgnRYQs04Mpl88pD3qpiZksUa\nwqw7kgLF4SZcpfGnqOISVkfGZRxPxfaEIyefjpOo64bXZYGH4L5L4UU7kP/WKhSDZJ9EexNdfdXI\nUoCpOUSSA9DcxgP37OauX29C7tP5wrUvgl37QfZ42Uef4by5PTzctpuPP3MbN921A9h42LFeetmP\nB1+/3dK55Sc2p8+tJmu5bPz9AtrvWcn2PftJxkwiVRdBTS8s28ZnvjnAvFOjnDN3HrGqfmozMXKW\ngVs6R1MbabBJJUdGbSyDF07TlnueJdr5GJpDMpxHLoQoeCp2IFRFZpWi6+g8PIOZ243iSPSvYUgg\nZTLZ4nHVHuEaHg5N8ZhX08vj8lr27d3FG/52HlzSDO9cBft+BjsjSFV9sGgX4UV7afro5yjYOqbm\nIOXD0NbMY94v+fJXs8iyxBde8whctRFuyZLucbhnh5h5BJEmj1tuEQR4en8fAOe+fSP5rp287CrY\n1rkH/vsyeOgTfGL9H/jiH/q4LlfFW5oOoHqrMFQXCSg4OhGjSDyeJtHShhRA354F5C0DXXWJGhah\nXB1XnNFI2/0OtdEsyXAeNZWgsxBGQoQUJorAzSgySWOEL3WmTpn0hUC58dc8Kl8fyRyNJnhAVHEP\nIVJNNDP4uQRozW1ctNxGSsTgsQicZvG9m9/Puz7ey46bIDInzBcf6uDyH53LyyI5zKp+UqEO9Loi\niq3Dc6cB6/D9AOmqnx3RSCvFpk0AOf7nh+LfmjMX8pm3LeDG74lqpQeeyHNjZy8fXeSQSA6QSccx\nNYeQbgvhlnPXg24TX7WRzP0vBsUjJPvItT3IlsHcpnbmVveRtwwe3DaURyMzi0Qox5I7XnQcxnGk\nkBHZDJWYZTJD5t/RBG4jo0y70TBUF0Xx2PLUGup3LiYeyWHW9iDVd0HJ3bzkg3cN7n8T6wjesxKq\n+/jgw9/n9JhMMt/Mk5ltRzHKo0NfxuX9Xx+a9b54/SpO7ZuLfM5B7n3qDq7RPkQ+H0bTHMJLt0Nf\nNX/NPs4lLCS2dDvM2wc7F0NTOzR2IBsW+Y2r2N1dR182ii57OJ6Is02UrT+jyDQahyZnTl/UIC72\n4TQUQMxACkcv9hJTnUFnw3CYml2S2/LRStkDeVsnUzQJL9wNK56j51cv4Zbbx/aaUtfNura9PPB0\nmh/9rR/RI2L64C3ffox/v7afP+2tYknMIOIMiFhXIoV03e1gGdz0tb/xvX17uPVTrdz6QAfnXvQI\nCxvCwjnS1E7q0XPpz4dxPIWI6lVU1jFjyGTwSeRRMijHqqZnqlGDcNtPZNYNz1CYCq074f4ee0Yq\nF9NJMCIPL2cZSJkY0ovvJ7eumcd3jV3kPVC1m8u+8Aty9mQlR144fP2uHbhegPOdt4G1FvmJs2DB\nHnbvCTjz/Q+QLfg4znPc87btFCwf/UcBqQ/eQLBtGZhFGubvxc5F2NlZuTLwjCGTRHjQJa4wM9RX\nTSZ2eZefdeVZa2ow0v09GobqlPLX/FG63widhbpugrUvQl/8EPPrQ+ztOjSHrupDP5my0R4rFO1S\nqtA7fsCL5s/jtmsSdF68jdUveWTEfv0ZMTM//OmXEihpMn3VdAwkKboqe7vrJkyjGo3pfj+Oiene\neMwsbeOtdUKIC38sZtaI4hIZd40UYJQyqKOlDIZymYShuni+TOH5U9CzUZqyUW77Xg9v+o+DbN06\nFbL2xw9r9+7j7ffcxunaBEZ2WzP0nk6geFiuSudAknTRpDBObt9YmBFkUliDzvXHexgVoQlxUcey\nsMviiBrHppBsIvc3QFU4j6Z6GKooW5Akn7BuEzYsTM1BV12xlspF4GALZ9f8Pb95fSe94V1c/K+P\nH4MRv3D4w5addEQmcOWYFtJ1txP6zSvx2pvIWpPv7DsjyCSRQC5Jq6twhF2Xji0kxLjGiv1IiJT+\nY3WxddkbrNkZHwGa6qGX6ozioQK65tBY00vgqhBIqLKPaRaFeL7qQkHjP29/nNufOYL6o2mIJ57o\nG/P9z/+/FZyxwiDYNYeUL9OfiwwGecuo04t02xO7hGYEmYZjqqtNjxZlOd2xTDYTEVQ+lmM2ZI/E\nBESSJB9dEYKQuuJSF08TNYtUN7cRq+0h+erbsG59HW5PLWokh3HNdv6y569ctrqa3cs20/bLyfbX\nmxk4b2kVTYkw5MMsa47hrjuf7O6FHOg48rLSGUEmgw8Pvp4Os5LGEHnGWruV10zHSq8BQJM8TMUf\n12NXRtwsYpTKz6OhAq0rN2PqDqF5e5GlAJ48EyOaRZcCJMWDYjX//INnufjKFFu+uoT1Tx5t16Lp\niY9+IMTdd5p865K3E7Q10d/eROdAckSphiIF6Koz+F5Idin441NmRohQJktJHNOhxGIuJZfyOJ83\nItZDSdUeV80HoNc+8hLGGt1CIkCe4OtRsyACsqUxhHWL2liGhc1tNLRu5bzffon13z4dti2DS+9j\n0Yv3s+s9H+Ezj9zHJR98ir971WS0T2ce6utg7bdWsXSuif+1D5HrraEvF6EjlSRv6fRkYgRI5Cyd\nXEnL3PJkUq7OZ2dDF4zjkTZUdiZUIbItNA4lkopwb8/Hp0q3OLWmm6RZRFdcFCkYc6s3LOqNIhHF\nQZH8w24hxaXeKFJvFFGksYkkS6KsIqxbhHWnRKSAkGajqx6SFODqNkFzG/vzfVhz8vxH3zaks55i\nT7aHbRffzE7r4KwnEkBXNyx7zUZ++lOJL26/nUhVP831XUQNES5IhAtIkk/EsDFKybEiNjf+A3La\nm3l6KbE1zLGTAR4L5RmwnI0wHmIIk0+XxNplSUMni+u72NdbQ7Zo0peLTFhLE1E9IpNubzwSId0C\nJMK6dYg+g6k5g2YegN1fhfXkmbxt/qX0/bGWh++5FYAggNarZ4ejYTJ40/8+yuev1JFftJbv39HN\nKxrfxEAp8yFmWBRdlWTYJ50HHF2Y1eM4TKc9mUJ8FSjdsMf4tyIMOQsOVxtUdjyUyyDMUlaB5apI\nUsCZrVvZ197Esuo+ntm4CsdTxhT5mAxCujXYNW84jAkkucxRn/m+TCGV4IaFb0EJ7+SaV13NQ0/9\n6qjGNdPxo00bWNu5nQ//3RlEdtqD8mU5yySsO6hKgdpolt3ddWSc8Skz7ckE4iavO4bHn8+QvVvJ\nKsZgpKC9KXsYpQpUz5dpG0hiewqnvuNmNn7n3VRFcqSLJrp69It5aRLLrMSwPrIRYyjbwfcUAkeD\nrQnYk+bPf/4zV1555VGPbaZi+8EcP7thMWetv5ZcIYQq+9REsyilv2nULLL83Efp/9015Cxj3Br2\nGUEmmDq1ofIaqOkIvlvuzD18LDJDPYnKsBwdXfGQnz2VWKhATzZKIlQkWzSEmk4w1lI1EHEezcHQ\nHBY0dJJzVTp7avF9mUzRHOd74x+nTDxZ8lEVj5polnADJBpzqOkshH2o009oIpXxhHMdhX+o50U/\nyrBo9TMUslGqnltB0dFIthxELoRY2tROfy4yLpmmtQNC5y2AMiUijNUMtWacLJFkhsQgKyG1qdmE\ndBvquwjrNjGzCARETYuwYQ1KaQ1HSHOImhYh3aYpOUBjy0EWrn6GRKiAJEHEsEpVohN7X8vHUZWy\nVoMv6ngiOeLRHu5uuRn1sg2waBe0dMOc8TUYTiS89703sGnz99nABv7tL3/Bf/EfqJu7n5b6LhKn\nbSLV1kx3emJf8rSemTSuQ0I5YukulSFJ26PR0qtjfE9iclQZtKk5tDa3UX3247B3PrIUkCh1hyhr\nZGuKd0iEXZEDVMWlKpJj8SnPo8/dT2ZrK4lwHteXcT2FoqMPCuKLzhJa6btCj6F8nOGIGIKgDYkU\nwYv/yJ/u/x1v+cg7eOmNt9HVlaLHOlTe+ETFd3/2GF/c9yD7Myn+7YyHiB68Ddkswr55hBSPhkSK\nXV3jy5tOazIdCcqVrC0c/cnJiJlswurKUTev4ykc7KsmeOwcGi5+kETRpLBnAYrsk7UMPF9mTlU/\nra1beW5rK9miSZnm5VQfta4bemvQA4lkJEe2aKLKQlhRIiBTNIWgSUnTe3jIQ4ToxJhiZhFV8Qjr\nDql8mLm5Zn75oXP48Gdv4/5nd+P7lajBnTjYtLlz8HX9KRdx+QVR7r7hXHBV9D0LkLonXrlPezJN\nZlaKIpwDU5GNneTwGQz6qOwDQ3XwfJn+fBhN8WjYshw9nqZx7n4sV2VRTS/p3QvRZR9qe6gK56HU\nvwhAU12h/9behFTXjbnmKaRdi4jVd9G+dz6ZoknELNJU24OlOWS66rE9hfywpMwywcooa8tpikew\n6TSkaJavfuhKcL7N127dOgVXavbANA3OPvs01q59AoC7/+VSgvWnQncdXakEWw624E5QkjHtyVRp\nNW2SqdPlrqYS2Syh9jMcsZI553oqOVunraeWiKeIrOyGTqT5e6mq7YHmNphzgJqdi4klByjkIuSL\n5qDiD0UTCiGYux+jppfA0WiK5IjvXkg4nEd/3++xf3M2UiZGfoJMipBuYagequIJh0TrViiE+M5/\n3kNbfuykzxMZQRBw7oJq3nvpKbBrMR/9ag8fW7CU7rZm9uxZQM4ycMZRtYVpTCadt6NyRQX7CYfC\nVHlSajmycvGYWRhxS6fyYaSeWmqKJslwnkQugqo5SOevg3Aenj4dvakdXQoId9UPutbNsmdQ8WD3\nQljxHJKnEPJljGgW+d3fQXr0fPyBJBHDGnxSDg8MlztQlMejKx6xqn6kRbugqZ03vulJPvOi7iM4\ny9kNy7L5xs/v5aeXv5HXxK7kPCnKns1NdKcS9GYOn648bckEBgvRxyVJucNdyzifTxYSwjyslEgy\nweCEIEn+oCpoEEj4voQsi9eWo5EphFBkn6RlwPrz2Hb5KaSc73LOy58BW0d56CIS7U2QSEMoL8Qf\nl+zghnX38OkvbiAWkUj/ogflN6+E3/89NLVjXPYXkve/GLmrHh/IWwaepwy6z6VS79mwYREziyit\nWznni7+pDzU7AAAgAElEQVSlT82wc+ckO1CcQLA9HxsbNAfsGgqWQRBIg7rmE2Fau8bHg47w0k0V\nkUAQaTJZ3mHFRS3l4xqqO6gY6gcylquiKS4wJCgPQF81SAGP/v5Gzv38nXz29udYX0zAgqxQUF2w\nG165AxYcEM2QSx46fAXScTjnMWg5COevg7Mfx1zxHLVN7TS2bqW+toeIYaEp7qBYftiwS2NzYc8C\nHvvg9dz4ttOn5HrNaly0FprbkGV/sF1NJZjGM9PYKHdwm8qk1yM17YDBatXRGJ7toKsukXAeIjlo\n3crTd4vOP5/82fP84KEi9/3nCqLVy/n+Mw+S3+3z1we6QPLYPyA65OUtj0/8zSFa28/vf/Vb+FM3\nr7vu9fxTSxNypg2SA4T6qvEKoRFP0JBmi3iT7MNVJZH8jSfjSoeF4kN/1WDLmuYzNvDYvS/FciZ+\n3E5bMo2l0CMx9T1qq5k8kTTJK2nRBdSN6OcKEAxrBSn+Dek26lt+BJtXYmt5Nu1NDe69Z89+egbm\n4bz1jXys9aYxf8/zA2685ddDb+yCM+beS/YjTxH5x8UU77QINXSSeOgiIn3VI7x7iuxjJFJIZ32A\n6OqLyFmzsz5pKlF8dDXZFTsJN+6ietO5SM1tgw0LJsK0rWeay80s4u2D72kcuZzweKjE/T0WIopD\nXLdJhvOHBEkV2aM2miViFpGlgKpIjphZpCqeRqnu4w/ptfyw/W5uX982Jedw25fnc8tvBvjze/4e\nchGCdecTDCSFaQgge8jRLFywk1TTAyRf9dcp+d0TAWvqW9hw4xUEqss9n/o0B/urSBVNPuyYY9Yz\nTduZSR9GJBDZ3FNJpCoqE4QcjbKwY0hzxmxHGdJFKlHEsAiV8uxMzRGzrOJx9bIlXP3aLN9LGbzr\nXUcvI/zqf93LnDqDe/ufZO2jDp9e0iSUWLe2gi8jqS6ECnzh2b+w9YENR/17JxI+8Y8NkI3S9+DF\n5G2dvG1Q9MYvyJm2ZBoOg6mtsD1i93dJ2FFTXMxR66SQZqMpHrXxNItOfZYYkOuuIzpvH0osg9Rf\nxY7aR/m/59ezc32KB3blpuJUADjQbfGaT20lmwv49K1bkZIx2D8XPEU0GNMc3nx6Nc3vmaiHw0mU\n8bUrL+fa6ouZs28enU/WsWP/3MHA+kSYEWSaSvd3kskTSZGE1kJEdaiPC6eAoTkYw/TpJMknVjLt\nPE9BXbaNpOpCYwcs3M3z22XmtZoU5QZ++ptnp+iMhtCfKokuvupW/vHlDdxyQQ08f4og04rnuPYb\nf5vy35yNiMcjfPeZZ3nDaW9hX2oB+3pr6MnEcH0ZP2CwW/tYmLau8fJaZipnpASTM+00ySOkuNTo\nNgndpjk5wIK6bqqj2UEi6aqDroqeqJIkxB3ttmacp9YI1/bKzdwb+x3nfP977Eo+xhe+cN8UntHY\n2NzZw02b/optZkSAuKsessdS3mX24BUvbWXLzz9KdbVGNFQYdI3356I4vozlj2/mTVsyJUvbVJRf\nUDrO4W4nIZtlD25xzSGmuiTCOWqiWWpiGVa0HGTlol00J/uJmgVCupAbLq+fJEkEc31PgUwMtizn\nl/9Tx8AAvOtrUz8jjYX1T3h0125BbuoUZFqwB6KjvY4nMRb++sAmXvbZr5Gp20b8A08OdnOvBNOW\nTCDWSlNRFFjD2KadKXvU6cXBLa46GLI/uCmS6GNkqB6a6lKwdRxXpWbOAZKRHNWRHHFzKJsgHsqL\nOiYQC/9Snt1337uauXUGa9e+cGuW//pWhsIH/wMSKW74xXYe3ZJ+wX57JuPFlwbc9ZElxK+/A+t+\njZ5MjL5cZfbMtF0zTbYz3lgopwiVdRqE2eZNKCEMIrdNV10ipQxsWfIJ6w6yFDCQD5PwFOobO9B7\nanE8lUQ4T7KhE/JhAk9BVTz089bj9sf5zMA3yDyhUBxPheMYIQggnkgQfPO9vPGVIX65W2fr7pmt\nGX6soSkSnc808tcbL2CJdzl7e2twPBU/kAgCcA/1ho/AtJ2ZIhx9f6JyHMmUXaKKQ5XuHJZIIc2m\nKpIfJNJwmLpNwdbJ9leh1faQrO8iHsmSiOQwWrcSruonHCqghwpI25bhe5DQ61i3LkV393Fqv3LO\nXn5yT+dJIlUAVZF569kreekrcvTaOjnLIF0w8UrrpMP1aJq2M9PRIIYooTAISJYae00k2Agi2JoI\nFQZFNIajnPNWjoLnUgl0w0J/+V1o978YNAfJMqCxAykbFY4HV8WN9fPDO3bTljp+Luk3fPpJFsen\nm6j09EQIk4vrl9Hd0Ug6ExuRSVIJpi2ZahmaNifqcSQzOgPBBykgqToopbQeUS4+gUtT8qmJjh33\nkQjQVXew6E4uORgI5+HC9fipKOklG6jav4q28E5qu5dTdGTi6SYCs0B7OkN///HLMtm6K039mumX\n5TLdUFcHZCRi+y5g0zOr6UklsD1lUM21EkxbMqmIvLlDtfKCEfra8ZIunF4iz8L6LlTZpyOVoEyg\nvKWLOIEvYw8r7lJkD03xiJXUV0dDUTyS4TwRw8LzZQzNoa6ml5AUoFkGfOs9dK74C6/56Gbe9rJe\n3v+NHXz4zU+zsT3CzVddQrUs89rX6nz729aUXpvJ4MmteZ7cejJYezj8+Xvz+d/3nk1XqQjwSB4/\n05ZMBmOLTiZUB2PUukdXHeJmEVn2aazvQtccujOxQVt3qJRbSBMXHI2Q5iDL/qBAiT4sABvSLVTZ\np6mxA9nRKFgGquIRNSySzW2iEjaahWVbYdEuHn42zcPPCm/Zjd/rAXq4fvefuONTa44rkU6iMrxu\n1Qqqf/0u3l93Cft6o4PVy7ni5Fbt05ZMybHe0yz0UflwtbG0yDCXRIwnDMiewvLmNvb3HhqlMnUb\nXfFYvfoZNm5cRd7WcUuzla46g3pzmuKS1G2i0SzpXATXl0mE82AZSKc8L8oamttovXZsHYW/PttN\ny5uPfYD2JI4OF52l841rryD1u3Mp2NrgAxgYYcVUgmlLpoRmE9VsMq4qAqOKS0y30VWXoq3jBRIR\n3SYWKiBLARGzSF0sg163nX0Na1ldOB99+2lkiyYBkC2amPVdxAohkpEcRnMb89qasR1tsGRCuEAl\nlFCBEGCECqjz9pE82IKsl6ovl22DuUn2XryW9oeeI5Mb3yBI549OQ/wkjh2WJuupkhLcXfc1Ou6o\nYSAXIVMIY7vKhDoPE2HakqnKKBILFVkYyrOi5SBb2lrIFEwaEimKts6Shk46UwmQgsF1T008zX2R\nP3LdLbex64NhatsWEg8V8AMJz1doePOPyf/ydYR0C0W3qU2kCDwFrWQ22q6C7WrElm4j6GhEruuG\nK/+MfMc/iMpX1YP3/w88+hK++a1H+MpXZn+3iNmKL19wDa8wLqdvIHT4nSvEtK1n+rJmEdNs0p5K\nWLcxZW9oZnI0fF8mbFjEzSLSsJnJqN/Knvq1rClewMHSzASQKZqEGjqJFkIkw3nqznqCzsfPHjEz\nBYGEH0iooQKmFBCLpwnN34t/YM7QzNS6FeZWseeitbStfY4L37LzeF6qkzhCtCYbqJKT3HvuV+jo\nraEvG6UvF8V2lUFxmq5hCq5BwGAbzvH6M03bmSnl6KRLna4zJffk6DVTXy46tGbKxNnbU8vZUsCc\n3lPYXQgdsmbK75tHTrfpz0VIHGxhX0/t2GumTBxNcVmkOei7FpHKh3E9hUQ4j755JZK1gwW71rDg\ndIlIeBe5/NgPpGhIIVs4aepNR2wd6AQ6uaLnOn577fvwf/taHF8mUwjjeO4RmXrTNgNiYKz3HAPL\nGznknkycdCGE74v1Th6wFY8tbc2kCuFRW4ieTIydnQ388YFL6BhIkrcMbFcsOm1XI10I47gKlqOR\nsnUO9lfRnY6TLZqk8mEwLILnTyE42ALtTWy/Y9mY43/xyjraf3LpFF+Vk5hqPPS4zT/fejfq0kdL\nBZ9DDz9tjHDJRJi2M5OFaDYw2j2ecjVMf2ScyXI1gqLoQdrRVY8q+3jDMn0H40yBNNifdCAfGRFn\ncj13xP4APdkoVeE84VKcKWsZaG3NhKQAw5dFNat8gAtObeOtVzbyz9/cwYfeWM3Gjgi3vPwSjD6Z\nd79b5zvfOZnKM53xi43P8S+f/irfuf9h/rX5I+zqqidVUIiaRfpzlZeuTNs101sJkBFh14m6VozO\ngFBLcaPEJDMgag8RRimNhYDqaJaoKeJFVeEciUiOqvl70T/+Bbw/XUpq8QaqD57GAWMXdb2tFB2F\nRLqRXKyd+V/9Jr29x+8an9ka5kWnx7jp1s7D73wCo6EB/FSU51/+AzZtXEV7qcdWmUwzes3Ug0gp\nAjgw4Z6jzslTRcm4p1acm+cHMr3ZyGBu3vCGYgFCCzxvBYRK0k8EkhCKXHcO8oazqdp0OlT1M8df\nCtkoRik3T1IHqI/G8Lw8AwPHRxVo2YIYceLASTJNhM5OqNYDsvMfYdmcAzh3vZzedJyIUaw4pWja\nrpmOBhnErZNBos8xyLoqeXfigg7PV+jLRQe9f8NR1pguSxFHEim0ml7su15OtrOB/IE5eIYFHY0E\nnQ0Ebc2Qi6BmqnjHyxfS2np07TePBv/3mbOEbvlJHBYFivytawt1zW3EYxnCxuSyV6YtmXLA0col\nDgBZoOirZD2NAVuj6E18ygVHZyAXJmcdmsxUtHVCuk20qh+np5aBrnrSuSipXAR7ayv5/iryhRB2\nIUSwdDuyAr2FLs49N0Fd3fHoFQ88Op83XtZA68Jj3RF45sPzfX7yxBbuvTNKdUlhKm4WB50S4cM4\nJKYtmbzSdjQIEIQqlF7bgULa1emyTLosk7SjEQSM2ECkkeQsk650HM8XbTPztoYfSCTDeVzFo6uj\nkb5slHQ+xP6+GjZuWcHernr6cxF6MnHsR89FbZ/D56o+zNfOvhBTeuEvdTqVglSCn91eOFnPVAFs\nN6B+VTuXfmwdC77+AdZc9Sc01UWWApFiNkbHx+GYtmQC4c2biqV7L2PPckVfods2B7e0q2H58uDm\nBdCbjWG5Co6rEtJtNNWl72ALA/kwfbkI6eKQCZUuhCnYYgYIXFXo15lF3vm/G9nfZXHhhS+cufXx\nf4oTuukLkEpww/WncO7ykzVNleC++ySu/PJ2Uj//B4yXiM7r1ZHKZNmmrQOiHGfyGHJEHA16ObyC\nq+UrI9RnNMkTnQHzEXKy0IF47mAL6UJoRKBX/OuiyIHo4heArHgQy8DyLbxmRRe/3gw3/8tprHj4\nsSk4m4lx7pkK1V3L8J0GUGTRmiYbQ6wmT2IiXHrJafz0n99M8J1Gem6qEc6rCqSRYRrPTGVH9VTK\ngKQQa7FK4QQKBU+l19ZJ2Tpt/VXs6a6jLxvFGhbotV1N1MAEkLUM9OY2tNOfFjPT5pVclv8HHv3H\nd7Ko/xz+/d9fMoVnNDZObazlw6suRS/GhNexvuukOlGF+P1921h5/Zfo7XPJFkJYJfHJqkgWTfYx\n5PEXH9N2ZhqOg0xNQ7MA6EcItUymUsULZHKejCwFtA8k0VWXRDhPYdgyJKTZeJ5CbTyNorq4OxeT\n764joroo+TBL+6p5fuuDmDu7eMMlc/jbzhwHDvQf5RkNIRmXyOYDnFtfB1Ux+MGKIUXX51Zwxwf+\njsZ33zllvzdbkUpl+fQFF1Ko3s28Wo9wIsWOffM40FOLLB0a1xyOaRu0XUwwogVnNWPXOB0pKm21\nORplrfGoUTykfyyIDoI1sQwxs0hIF/2RYmaRcKggstDru+D0p7klY/KOd/z0qM8DYE6tzg8+sZi1\n6x0+c8obxHpty/IhrfHkAJ9Xf8TWnqf46e0nq24rxe0fP5Nray+k98GLeXDd+RzsrybjqHzM18YM\n2k5bM8/m+yP+nwWmUt+njyFTcjLIuBo5V6HgaHj+oZHgvK1TsAzylkF/NkrR0Sg6mnieeQp3bdvJ\nq7/+8JQR6ZdfnM/KJSEuqzqTz1zyEoI9CwiePZXA0Qk8Fd/RoBDiY6su55vXnzclv3mi4LM3d0A0\nS/Xf/56wbhPWLUxlBpp5XTxFLUPyyDYiE2LhFP7GAOJpMtkZyvZlEeTNRqmLj1zUe75MqhBCVURj\n5oFchGQ4j/zmH8Pmlby0yeFr/zsyGLjuvy8gcdXXWbHi7IrH8L5XNvD5D9cQO3cxL19iQXcIHr4Q\nb4z+TOFIDunSy5m75rOTPNMTE9+75mW8dsWpyJKMf9c5SCueA0Tnem2MzidlTFsyBRzqFg+APQgh\n/6kKgfYhCDWZNZQTKORdn7Dq0Z2JUhXJCa8fACJ7ffA1ULB1oj96C1p1H0ZdN6fNi3Pf06KwcP78\nOdRVxYj95P+48ZVryMd87nugC/A4kM5woLeAIkn8+z++kmiNwp2/uh/qelh69mXEn70Ifp0lkhzA\n23Qa2b5qssNSX0KaDUhYqQTGhq+TvuXV/HLjVl73paeO9rLNaoTOe4b4jmvoef4UeiyDaHJgROL0\neJi2ZBoPPiJVqA4hujIV6OHIG58FgUzeMoiHRkaybFdFVezB17l8mKRhwbZlnNG0CdjNDdefwuWX\nXcLi3oXQW8PHVkfgogyfW1gN0QFuePhePn37s4RNhRv/ToNUgo+++V1w3nqo3gJ3LcJva0XORSgU\nQuQsA8sRf1JN8Sg4OkbgoKsy3PVyOPtJiO85mkt1YsCXoaqfvK2TyofZ+cAlIx5S42HGkQmEydfJ\n1HZbLzfGrJRQeU9FV3xUKcByVWxXQVc9ZEk0FRbFZRamNmylV9UPvsxZV32MddXf5byzZbBTsCcq\nmkd7CnQWSt3Wi1AKACN7EE/DXy4TApePXACNHRSfW0G6swG/vemQbuuuL5dSgAMMV8VYsIfzvv4L\netWTmuOHxdqLoKYJ35cHXeOVYBqTyWY3DqvQxvSSuKXtAEKkcuIii8OjnHqkUpnJ5yOCs0hidvJ8\nmSDwkOQAWRZGqiQFGJpDLFQgGioIHYnz1rPc/yvoawjumgNSgN9dRzYTg/4qTM1BVTwU4IaVcW54\n9QrwZYLbXoLfW4P8nm8jPXoB1j2XM9BTS6oQElnt9tA8rSnuYNPqbDEEgURo2zLW/9s10NxG/tTH\nWXJhJ+2d08+Te7yhKTJaYICtI+t9hAy9lPx8+Gs1jb15N+Py5wr2E+uosSpzjwQ9iFy+ySJTDI24\n3Ilwnjk1vdQ0tROv60aZcwCa2wg2riLYPxdWP4Pd3kSuvYm+VIL+vKgEzpadB54CC3dDXw1Bdx0F\n2acvGyX/rffhnncALzlAzjIOIRKA46mkCmGcUstI21PI9FUT7FoET5zFj//5TC5qnYq8ktkFw9D5\nwOsvRbpgHb8K/YRv+Z9nwcrNzF+wh9oKgt7TeGYSOADMq2C/fsRMpSM6XxwNKkk9AlEzlZCHzLhM\n0aQ6kkNVPMK6TXNdN148jZ2NkutsIOqqZHYvRHvyTCLLt9BbIpHtCHeKprpC3tksQqgA++di7V6I\nZ+u075tHtmgSKYQwvvg6bM0hXQhhe8pgZTAwIvaVtw38wEaWfOGe39qKdP463vPZy9n537uA7qO8\nUrMLkiTx2L4B/vtn24HtBL+5huDZ54lW9RPVbQaeWlMSqBwb055M/VRGJhCZZxJilmrh6E5uoHS8\nugmOI/L4hshkOTqKnKEqnBPtOlu3Yu9cTMf+uTiuyq4dS/B9mYhh0dpTy0A+XDIhhgzUbNGExg6C\nfBjrqTWkslEO9NYIMxIJy9HI9NQSBNLgTBgEQwZGujD0OmYWcUrrKMdTkE59FlZt5CPf+DU3/XLX\nUVyd2Yli0eLBBx8f/P/Lvnovf/pkFrYto767juUtB+nfvnTc7097Mk0WASI5dh/i5BpL72tMfk3l\nAR1AA+O74l1fGuYWF160luo+qs95jOBgC6mDLRRtnVQhVCqfh/7+KvY8dNGI4yhygKq4SFKA21OL\nPnc/dlc9qVwEy1VxPYWiow8Gim1XxSrpWSiyN7hGUuThxAoTMwvkbZ/GZD+p6EHe9bVH+eV338HT\nG35FZ1eaXitDx8BJCWeAlcvrGdhf5GA2TdeOh6n7/S9hVxHamrH7qxgj6WEEpjWZHH6HylUMoBxR\nKlHZQQEifQiEc2GyfZ+6EW1qQhx6wQYcndphFZlFR2NrWzOLHrmAlkvvw9+xhFQhRLoQAiRcXyJv\nGYNetzJETAj6cxF27VjCPE9BampnYPdCssUQni/heApF59DHgucrZEqlICHdGtG4OmsZ+IFEZypB\n8r6ruPKUAmwwue/qt0Ey4Cs9a/mXL98zySsyO/G+t5zH2Y+u4Bc7Hif05Ofwn3g9fjaKesYG8p4i\nRE8nwLQmk80PCPFteo6QTMPRV/pXQ5z0RCIto+EjXOd5oJ7Dz3BFRxd1Td115G2dTMmUyxbFjT2a\nSAAFR8PxFExNpq2/Cl23ye+dT6oQIghE6fxY3zvkOLaO4/olr6BPEMgUbJ2BXARZCriy7d2493ah\nprLQmIKeo20pNzvwrW99kuUtazjzUZczL6+icH+U7gNzKNo6yU2nkWxuo667jl1d9eMeY1qTaThK\nXuijhlPahq8Y5jPk1pzoNxxEBruBqLGSEC7ytKMSU91BIRZDdbBdleC0TaQfugjfl0kXzcM0GhYz\nj+MpZIomPZmxi/mkw14ECddXyFoKiVAeSWJwzdSbjSKRJZWJkIiAmstAl83dd9/NFVdccbgDz2qc\na9zBGb+fSy4zl84HLsHxFAbyItEsWwjRet56tnc0zmwHBIgapG7ErHAssLf0bwRhzsHE+XoWwkER\nQpiMRV9F931MxUeRfZqr+qmr62bT995JuK6b/vYmHF8mla+s0fB4COkWunqoDsFws244UoUwybDI\nEs9ZJomwqOaSFQ9Jc6A1BYsSJzyRTmmO8PH/aeffXnI754TeidtXTV8uImJ0iOTlrnsuFw6jCYK4\n055MBT5CmG+SBqqYupy8sZBjqHiwnGBbxdiNqsv7xhCu+KKviC7tqksQSDyxZTlZy6B/98JJdZ+b\nCAXboGAfmkQV0sWaLazbKKMSMS1HxdCGCCjLPqFEis/s/CnvPrOGO373+ykZ20zGW1ev4aNXns53\nf9fFSlOjNxMTa01fEtktnkk6H6bgTCxKM22DtmXY/A8gbtwXUnkuXdoOAvsRLvqxkEF4/FK+Qp+j\n82xnIxv2zmdPTy3tA8nDEinnKvTa+mG3zARPxDLJ+nMRerMRssUhwhUcbTBfD0Cv6sc4YwO37L2X\nqpft5bxLhYSzJMFzdy7ijWe1VnJ5Zg1+9J5zoL0J/6GLeFvs9fS0N5VSiCSyloHlaqRKRLJ9maI/\nvmTctJ+ZhsNBmFYvJMoE7i9tcxFPIGXUPr1AbyDTaBukeupJqjbaBNoBvfbkZquCJ1Mo6U7U6EUk\nOERY0w9kCCBvKyiyX9KlEPJlsiT0KVRbR2pvoiVUhXkwzJdql/GlJ/ez4JJ9LH/oHSw27+WB27u5\n5LrZ3S6ntgbWfWc1S+YG+L3XkestmXalh18qHyJAImfpFEszUhAIUdLxMG0rbYf/P8Lv0bgagNXH\nZUQjoTGUZREf4/Oy+/1IstArHoPkYSo+puxN6JRIhPKDZl51NMMZpz+NoduE5u0Tza7NohDPzEaR\nFA8usFj+X5/iosvTbN26mIce2nQMz+L44Y7/beZPvzX59qp3E7Q30d/RSOdAknQhTN7S6cnE8EqO\n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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x8cb06d8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_set = mandelbrot_set4\n", | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Code from http://numba.pydata.org/numba-doc/0.21.0/user/examples.html" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"@jit\n", | |
"def mandel(x, y, max_iters):\n", | |
" \"\"\"\n", | |
" Given the real and imaginary parts of a complex number,\n", | |
" determine if it is a candidate for membership in the Mandelbrot\n", | |
" set given a fixed number of iterations.\n", | |
" \"\"\"\n", | |
" c = complex(x,y)\n", | |
" z = 0j\n", | |
" for i in range(max_iters):\n", | |
" z = z*z + c\n", | |
" if z.real * z.real + z.imag * z.imag > 4:\n", | |
" return i\n", | |
"\n", | |
" return 0\n", | |
"\n", | |
"@jit(nopython=True)\n", | |
"def create_fractal(min_x, max_x, min_y, max_y, width, height, iters):\n", | |
" image = np.empty((width,height))\n", | |
" pixel_size_x = (max_x - min_x) / width\n", | |
" pixel_size_y = (max_y - min_y) / height\n", | |
" for x in range(width):\n", | |
" real = min_x + x * pixel_size_x\n", | |
" for y in range(height):\n", | |
" imag = min_y + y * pixel_size_y\n", | |
" color = mandel(real, imag, iters)\n", | |
" image[y, x] = color\n", | |
"\n", | |
" return image\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"A tad slower than mine." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 120 ms per loop\n", | |
"1 loops, best of 3: 2.88 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit create_fractal(-2.0,0.5,-1.25,1.25,1000,1000,80)\n", | |
"%timeit create_fractal(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Cython" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"%load_ext cython" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"%%cython\n", | |
"import cython\n", | |
"import numpy as np\n", | |
"\n", | |
"cdef int mandelbrot(double creal, double cimag, int maxiter):\n", | |
" cdef:\n", | |
" double real2, imag2\n", | |
" double real = creal, imag = cimag\n", | |
" int n\n", | |
"\n", | |
" for n in range(maxiter):\n", | |
" real2 = real*real\n", | |
" imag2 = imag*imag\n", | |
" if real2 + imag2 > 4.0:\n", | |
" return n\n", | |
" imag = 2* real*imag + cimag\n", | |
" real = real2 - imag2 + creal;\n", | |
" return 0\n", | |
"\n", | |
"@cython.boundscheck(False) \n", | |
"@cython.wraparound(False)\n", | |
"cpdef mandelbrot_set(double xmin, double xmax, double ymin, double ymax, int width, int height, int maxiter):\n", | |
" cdef:\n", | |
" double[:] r1 = np.linspace(xmin, xmax, width)\n", | |
" double[:] r2 = np.linspace(ymin, ymax, height)\n", | |
" int[:,:] n3 = np.empty((width,height), np.int)\n", | |
" int i,j\n", | |
" \n", | |
" for i in range(width):\n", | |
" for j in range(height):\n", | |
" n3[i,j] = mandelbrot(r1[i], r2[j], maxiter)\n", | |
" \n", | |
" return (r1,r2,n3)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Almost as fast as Numba" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10 loops, best of 3: 115 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 2.8 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's check it" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nprLQmIKeo20pNzvwrW99kuUtazjzUZczL6+icH+U7gNzKNo6yU2nkWxuo667jl1d9eMeY1qTaThK\nXuijhlPahq8Y5jPk1pzoNxxEBruBqLGSEC7ytKMSU91BIRZDdbBdleC0TaQfugjfl0kXzcM0GhYz\nj+MpZIomPZmxi/mkw14ECddXyFoKiVAeSWJwzdSbjSKRJZWJkIiAmstAl83dd9/NFVdccbgDz2qc\na9zBGb+fSy4zl84HLsHxFAbyItEsWwjRet56tnc0zmwHBIgapG7ErHAssLf0bwRhzsHE+XoWwkER\nQpiMRV9F931MxUeRfZqr+qmr62bT995JuK6b/vYmHF8mla+s0fB4COkWunqoDsFws244UoUwybDI\nEs9ZJomwqOaSFQ9Jc6A1BYsSJzyRTmmO8PH/aeffXnI754TeidtXTV8uImJ0iOTlrnsuFw6jCYK4\n055MBT5CmG+SBqqYupy8sZBjqHiwnGBbxdiNqsv7xhCu+KKviC7tqksQSDyxZTlZy6B/98JJdZ+b\nCAXboGAfmkQV0sWaLazbKKMSMS1HxdCGCCjLPqFEis/s/CnvPrOGO373+ykZ20zGW1ev4aNXns53\nf9fFSlOjNxMTa01fEtktnkk6H6bgTCxKM22DtmXY/A8gbtwXUnkuXdoOAvsRLvqxkEF4/FK+Qp+j\n82xnIxv2zmdPTy3tA8nDEinnKvTa+mG3zARPxDLJ+nMRerMRssUhwhUcbTBfD0Cv6sc4YwO37L2X\nqpft5bxLhYSzJMFzdy7ijWe1VnJ5Zg1+9J5zoL0J/6GLeFvs9fS0N5VSiCSyloHlaqRKRLJ9maI/\nvmTctJ+ZhsNBmFYvJMoE7i9tcxFPIGXUPr1AbyDTaBukeupJqjbaBNoBvfbkZquCJ1Mo6U7U6EUk\nOERY0w9kCCBvKyiyX9KlEPJlsiT0KVRbR2pvoiVUhXkwzJdql/GlJ/ez4JJ9LH/oHSw27+WB27u5\n5LrZ3S6ntgbWfWc1S+YG+L3XkestmXalh18qHyJAImfpFEszUhAIUdLxMG0rbYf/P8Lv0bgagNXH\nZUQjoTGUZREf4/Oy+/1IstArHoPkYSo+puxN6JRIhPKDZl51NMMZpz+NoduE5u0Tza7NohDPzEaR\nFA8usFj+X5/iosvTbN26mIce2nQMz+L44Y7/beZPvzX59qp3E7Q30d/RSOdAknQhTN7S6cnE8EqO\n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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa7b9c88>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Numpy array operations" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Code from https://github.com/pyopencl/pyopencl/blob/master/examples/demo_mandelbrot.py" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot_numpy(q, maxiter):\n", | |
" # calculate z using numpy, this is the original\n", | |
" # routine from vegaseat's URL\n", | |
" output = np.resize(np.array(0,), q.shape)\n", | |
" z = np.zeros(q.shape, np.complex64)\n", | |
" for it in range(maxiter):\n", | |
" z = z*z + q\n", | |
" done = np.greater(abs(z), 2.0)\n", | |
" q = np.where(done, 0+0j, q)\n", | |
" z = np.where(done, 0+0j, z)\n", | |
" output = np.where(done, it, output)\n", | |
" return output\n", | |
"\n", | |
"def mandelbrot_set2(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width)\n", | |
" r2 = np.linspace(ymin, ymax, height)\n", | |
" q = np.ravel(r1 + r2[:,None]*1j)\n", | |
" n3 = mandelbrot_numpy(q,maxiter)\n", | |
" n3 = n3.reshape((width,height))\n", | |
" return (r1,r2,n3.T)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 3.28 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can check it is correct with the following." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 29, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nprLQmIKeo20pNzvwrW99kuUtazjzUZczL6+icH+U7gNzKNo6yU2nkWxuo667jl1d9eMeY1qTaThK\nXuijhlPahq8Y5jPk1pzoNxxEBruBqLGSEC7ytKMSU91BIRZDdbBdleC0TaQfugjfl0kXzcM0GhYz\nj+MpZIomPZmxi/mkw14ECddXyFoKiVAeSWJwzdSbjSKRJZWJkIiAmstAl83dd9/NFVdccbgDz2qc\na9zBGb+fSy4zl84HLsHxFAbyItEsWwjRet56tnc0zmwHBIgapG7ErHAssLf0bwRhzsHE+XoWwkER\nQpiMRV9F931MxUeRfZqr+qmr62bT995JuK6b/vYmHF8mla+s0fB4COkWunqoDsFws244UoUwybDI\nEs9ZJomwqOaSFQ9Jc6A1BYsSJzyRTmmO8PH/aeffXnI754TeidtXTV8uImJ0iOTlrnsuFw6jCYK4\n055MBT5CmG+SBqqYupy8sZBjqHiwnGBbxdiNqsv7xhCu+KKviC7tqksQSDyxZTlZy6B/98JJdZ+b\nCAXboGAfmkQV0sWaLazbKKMSMS1HxdCGCCjLPqFEis/s/CnvPrOGO373+ykZ20zGW1ev4aNXns53\nf9fFSlOjNxMTa01fEtktnkk6H6bgTCxKM22DtmXY/A8gbtwXUnkuXdoOAvsRLvqxkEF4/FK+Qp+j\n82xnIxv2zmdPTy3tA8nDEinnKvTa+mG3zARPxDLJ+nMRerMRssUhwhUcbTBfD0Cv6sc4YwO37L2X\nqpft5bxLhYSzJMFzdy7ijWe1VnJ5Zg1+9J5zoL0J/6GLeFvs9fS0N5VSiCSyloHlaqRKRLJ9maI/\nvmTctJ+ZhsNBmFYvJMoE7i9tcxFPIGXUPr1AbyDTaBukeupJqjbaBNoBvfbkZquCJ1Mo6U7U6EUk\nOERY0w9kCCBvKyiyX9KlEPJlsiT0KVRbR2pvoiVUhXkwzJdql/GlJ/ez4JJ9LH/oHSw27+WB27u5\n5LrZ3S6ntgbWfWc1S+YG+L3XkestmXalh18qHyJAImfpFEszUhAIUdLxMG0rbYf/P8Lv0bgagNXH\nZUQjoTGUZREf4/Oy+/1IstArHoPkYSo+puxN6JRIhPKDZl51NMMZpz+NoduE5u0Tza7NohDPzEaR\nFA8usFj+X5/iosvTbN26mIce2nQMz+L44Y7/beZPvzX59qp3E7Q30d/RSOdAknQhTN7S6cnE8EqO\n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\ngg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa824c88>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_set = mandelbrot_set2\n", | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"There is a better code from http://www.vallis.org/salon/summary-10.html" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot_numpy(c, maxiter):\n", | |
" output = np.zeros(c.shape)\n", | |
" z = np.empty(c.shape, np.complex64)\n", | |
" output[:] = maxiter\n", | |
" for it in range(maxiter):\n", | |
" notdone = (output == maxiter)\n", | |
" z[notdone] = z[notdone]**2 + c[notdone]\n", | |
" output[notdone & (z.real*z.real + z.imag*z.imag > 4.0)] = it\n", | |
" \n", | |
" return output" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"It is indeed way faster." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 1.31 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The code can be made faster by only performing computation where needed. There is no need to ravel the input array either." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot_numpy(c, maxiter):\n", | |
" output = np.zeros(c.shape)\n", | |
" z = np.zeros(c.shape, np.complex64)\n", | |
" for it in range(maxiter):\n", | |
" notdone = np.less(z.real*z.real + z.imag*z.imag, 4.0)\n", | |
" output[notdone] = it\n", | |
" z[notdone] = z[notdone]**2 + c[notdone]\n", | |
" output[output == maxiter-1] = 0\n", | |
" return output\n", | |
"\n", | |
"def mandelbrot_set2(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width, dtype=np.float32)\n", | |
" r2 = np.linspace(ymin, ymax, height, dtype=np.float32)\n", | |
" c = r1 + r2[:,None]*1j\n", | |
" n3 = mandelbrot_numpy(c,maxiter)\n", | |
" return (r1,r2,n3.T) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"It is about 3 times faster than the first Numpy array code." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 1.03 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 29.4 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We can check it is correct with the following." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 35, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\nqUWLBvH/BRQ0r7xXqxYAAAAASUVORK5CYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x8f68ac8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_set = mandelbrot_set2\n", | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Numexpr\n", | |
"\n", | |
"We can avoid temporary array creation with NumExpr." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"import numexpr as ne\n", | |
"\n", | |
"def mandelbrot_numpy(c, maxiter):\n", | |
" output = np.zeros(c.shape)\n", | |
" z = np.zeros(c.shape, np.complex64)\n", | |
" for it in range(maxiter):\n", | |
" notdone = ne.evaluate('z.real*z.real + z.imag*z.imag < 4.0')\n", | |
" output[notdone] = it\n", | |
" z = ne.evaluate('where(notdone,z**2+c,z)')\n", | |
" output[output == maxiter-1] = 0 \n", | |
" return output" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This is faster." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 749 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 20.7 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Check." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAANMAAADDCAYAAAAY0SRCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXeYHNWV/v+pXJ27JwdlCQVAIKJEMgsYME5rwDnnuF6H\nDV5j//wF7zrt2l6c1sbgiBO2sbENtslBgIgiCJAQymFGk6dzV/79cbt7ZqTJGqGZYd7nqWd6uqtv\n3aquUyfcc94jBUHAHOYwh8OHfLQnMIc5zBbMCdMc5jBFmBOmOcxhijAnTHOYwxRhTpjmMIcpgnq0\nJzAcJEmaCzHOYVojCALp4PempTC92AhzPTpvP6pzWALoQPiozmJmoh/IAZ0v2vEOkSMApOm4zvRi\naqYwP0PjHUgjXKAjiRiwtPx6zt4+PATlDeDJI3ysfqRhNdNLWph03kWYn74YhwJAAiLl18eU/3+p\nQQKMET4rTeFxeoHu8uvcFI4LIwvTS9jMi6Hx+hftaI2Im6juRTvi0UeCQzWuitDIw6FvhPfTgD/B\nY9eUtwDoKI+Rn+AYE8VLVjPFeBqF1Uf6MMSAVsDkpWHKtQ56rTE152wzYML1MDkNZgMusGUK5jNn\n5g1CjCdROPGIjS+XtxOO2BGmByqCsmiC34kTVLVTcJCxmwMy5dejaaMScGAc+w2HHmA/Qrgmgzkz\nrwyFk5BIHbHxU0Cy/He2IoowWRMT+I6OuNnqJZ+GSA5N9inYOllHx/Fl/ECujh1FaKJuwBphPJMB\nIe4EnFH2PRi15W1X+XvZCZzHaHhJaSaZY4nwWxSOOxLDMx+oPyIjH32oDDwgRvJ5RoJR/q4KNEZy\nrF3zBOmeWvYeaEJVPBxfpjcfIW2bQ77nIgRkPD6Tg9BW3QyYhOOBA+wpH2O8mDPzAJXziXLnlI+b\nAuYhbpbZGKGbjzDPlEl8txlxTWSg1ihiaA5Lmw5wyimPozZ2sP+xUym5Klt2LqY9naD/IIECIUht\n4zyeh/CP2icwR698jE3j3P8lL0wKJxFj45SOaQLHTumI0wc6Iow/WXNVQWjpwX5EvVlAVTziZomW\nVB9LW9qILt7Jsw+tY39fiu5snKKrUHQ1ANxgIHzhIcw5b5zHzyK0jT3BeacR5t9ox3nJ+0xRHpmy\nsXTETdYwZSNOL8Q4PHNVQYSlh7u5PF+h5KoUbZ3+bIxwRyOK7BPSHAzVASCkegQB5MtCVXRVFCRq\nEOHz8QQOYuWtF2HKjTcsngAWAAVESH0ieEkIk8lXmJyRMjyWMDvTfgyEEIy0qDpe1CHC4oMRUQ/V\nEYsX7UIJF5ifjRHWbTLFEFZZgCQJopoQLkPx8HyJjGNQy8Ru8hqElgkQAjIepMqbgfCnxouXwNKH\njMKJU5IutBQ4mdkpSEsQa0QhDu+mkDhUkABUOUAa9BMEwNZtyzCOf4aW919HU00vi+q7qI1m0RSX\ngQShgPpoluZ4hoReQiNg3oRCDOIx2jTCvEZDHeL3Hm/AZZZrpgghvonGJYc1SmLQNpsgIYRnqsL4\nOuM3fTPFMCcs3I23dz6KqxKv7aGpGMJyNEKag+vLOJ64PTXFZcX8vayWAjY8dyz7czHqga4Jzm8+\nwkQ8wMR8qWOA7QhzcTTtNquFSaYFgw8e1hjN5W02oh6xpjMVqIS/JwLHl+l46kRiW5cTXbKDunSC\nvmwMXRVeUckRuiQeKrKk6QCd2RhRs0TMMvEcHYPxry1VoCIEvpOJCdTS8rF2I7LURxp71iLKHYf1\n/WaEeTDbUIOI1E3U7BkJannM8Xiliuxhag4xs8jOA03EQkUsVyVcMgk3dtCUj9CRiRPSbWqjOeKx\nLHIg4Tsand11uJ5CSHWRCJAcg04mnsmgI37XifhDIB4YS4B9I3w+a4VJYiEyCyb13dka8lYR/l7y\nCIw7miCZioOhiGCzIvvIEshSgOfLeL5M3jLw+pPoy7fS4CmEDjThaw518/bhL9+K+9yxlJoO0L5p\ndVVbyVKAjBCKdsYfMh885yUITTOR744mMLNWmKLcPanvJREXebYhgshcn2qEEVppJEgE6LLIXzBU\nh6hpDfm0ZOuEdZtsJk5izwK045+hprYHZB/PLNHz11fSlY3T8+CZFO2BOKMsBaiSjxvINCLy7SZq\n8gG0IKKDE12PGg6zMpqn8xHkSdw6KZikLpveiHBkSj+ijO0nSVKAqYpnf8QY+Xa3XRUnnYD+JGgO\nwZ4F9Dy0jq5sjKKtVTVSWBc55KocoJe1nczkQ/oawoeaCq0yK4VJ4QSkCQaww4jEydmmqhcjbpap\nW2UTCCGim2MtONQaomAiag4UToR0C0X2kQiIh4qoZc2F6kKyH6SAQj6C7aq4njLkKKoyfJaegnhg\nTOaG1hGRvsPFLBMmGYPPY/DhcX/DRDxhVzK78uo0xMNBYurPS0JkXY81rip5SJIw7wzVRZKE2adI\nYs1JUTw0xSMVz5CI5gi1tPGbFzayMbuNsGGV/auAbNEU+X2SECStrJGimoMqDQiXhDDbJhNYkYCF\nk/xudYzZlZtnkqQ47r1DiBsuNLmDTVsYiLC3foTGTzD2QqYuu8R1G0UKiJoldNUjpFtosk80JH6j\nZCTPgiU7iLbuR87E4ZgXoOkARPIEv3sDtlniQDZG2/MrKNgGrieTK5l4gUxPTgT1e0vmkBw+EAGF\nXibnQ2UZe/3qrhFy82aVZoqxYdz7Koi1g9kmSK2IQMOREqQUYwuSJnvEdRtZEmtEUcMiESqwsLaH\nVDRHzCxRE8mL0Peqzcgrnof/6Gfrgjs46ao/8cjTFlJLG8a6h0gCpi7CA6riEwsVgYCIMXK9bSU3\ncDK5k2Emf0/MGhdBIonCmnHtq8ARrLM9OpAQgnSkhAiERoqMsY9MQKocaEiG8+iqS20sS000x6q3\n/Jr07RfS3ZciaggtxbPHQW8Nx3/1czy7V9TY7o1s4fSzLbjzAkyzRCJUxPflahJRSHfY35siT0CN\nWaKzeKh/rJS3VkT5xnhNHQWxvrgXkfEwEcwaYYrwp3HtF2KAXmu2oFLucKQEKYTwJUbTSIrko8k+\n8bIWUWSPiGGxdPlWtJJJKtWHtGk1qXPvJbbhDDzASPWBbkNtD8/cH0daKITp9Z/bSvDtCyETRymE\niVWCF5E8uhTQWt/FQ0+uodTeTNHRMRQXyxv+VpYQ1yYHCJ02PswHdoxz3wpmjTCNB5VS5yP59D4a\naODImatRxo7axTURLNBkcasqskddNMcpi3fSvGwbXiChNXSCq0LJRI1lUVUXFu2C2l7QbGhroZJb\n8NnPvg0cDWJZVFcl7stEQ0XUlja0E56GR09DkX2iZgnLVYlp9ojCBOL3rkEIU88Ezj3FyIxJw2FW\nBCAMPonJfyONEYuJIZIWZwsqQjTVYe8KwogbajRBqjGKqPLgnysgFckTNSyak/0sauikNtUHsg8X\n3AmZOCgeFEP0htpYfuWvxddkn56MMKzi8Qjp9rNgYw4eXgtProFiCOYJYStsXsXTexbQlYmTt3V6\nc1FKnkrWGfsx6SGSVcdTph4ghOngXLyRAhCzQDOFkVk2piCFmD2CJCFu8qlKUj0YKgP5dgdDkXwk\nQFe8ar1RBbLkk4oM5FX3FyLs6a7DtnWSkTzms8eRe8f3+eT/vcCHTz2F0z8+fMFmJpNHitwGwLff\n4vHxK/8Cv3wbGBZYBuGl22nOR+jKxJElUBWPkAReIFFwRycPUBAPVQ8R7RvNL6qUk0iMzzyc8cKk\nsAqDj426TxKxeDlbUMORKwepFAgerO1kfEzVI6S6KMMYDqrsDVmYrcAPZEquhu2qmPkIPQ9ewJYX\navhJ+MFxzee2/sfIXrWCZOtP+egZK+Bvl5DvS+HIA+tL8VCRvnyUqOYgEZB3x9ZQlfzEXkYvq4gx\nwJQ0Fma8MIX44aifJxEpQrNlQbaBI6eRKpwNBwtSQi8hS0HVJzoYsiT8F6X8uSp7GOpALrcqe5ih\nIrgqi0otnLfwWb70/fHN6ea/edzMcyxuNvno0ovIbV9KR2cD3dmBcIgEhDSboqMT0Vyx0OuML7ko\niYhQjlYOH+clIUwmKieP8unsSVqVEOkyR0qQ5h3yTkBIcYnpYwWIgyGmHQQio7sqeAG65mAs3wqx\nLA/s3MHXfnfPhOf33CffD4+egIow5wDCho3tKXi+Qtiw8QMJy1UJqR4htUC/ZWD7MqM9SmWENm5i\n5NIKEIGrXWPMcUYv2sZHPf3ZU0YRQZipE+WrGwsV32uwICmSjy67NISKowqSLPloiksqcihVSSwk\nzD1F9lCkgMiCPRDLwrp6ulas53WvnHg89div/BKW7MBc9xCNyYGQQCW1CCBqWgyOXSUNi3qziC67\n6HKlFH5ktCAewMMFdGTGzrqf4ZppZMyW6tgEIg9uqhFnoL6pAkXySejWQdG5QxExhNmnq4dWAlUy\nwzXFJaTb6KqLb+t4++ahdB/D+r+k+P09uyY+4YgCq2tgg01ffmDpOGLYyFJAoVyeEdZt8tYA954k\nQdIQa18lV8Eva6miq+IdlIYkI7R/CRFCP/gq6AhhGwkzVphMvok0QpnbbKmQjTN6rdBkYCL8hKG5\n2IIgEilAGcEiUmSvuniqjCBsUaOEobkoskdIt5EkoTmK7c0YkTzKgb/wX+9bjLV4M9/7yQTp9wsB\n3JXC2lmLbetEDQvHU7BdDbMcVSzYBqbmIktFsqVDV97MQcJvKC4cFN3uscR3TIQWOsBQaIy+RjlD\nhSmGwlKkYRRyxQae6QGHqaxBqjQSOPQBIzK4k4aFJntV36eSnS1JAYZZwrEMPH9kj0CRfRKhIpIU\nVE08iaBcezQIy7fy7JY8v/7dxOpiF82X2fH182D/MxQ3vQpJCpBln5Au/CTflwnpDiHdIV0IIWs+\nuuqRLRnY7vBLJooElE1CiQBJClia6qG/FCJdMiCQaUSii6HUzKP9JjNSmDReh8Zrh/1sHlP/NH8x\nUUndmSpBipTHHM48iagOccOiJpInapZIJvvp7qnFUF1k2aemtocVpz5Gz3PHsqOtBXeELANDdTB1\ne4j/oioeshygqy6G5qDIPvzqrZy6ajMfObeHL93y1LjP4da/vBduWATblqFIogYqbxkEgSBw8wOp\nWjy46uTN9GxbRm8+giz5ZEuiPN4ZZu6G6iBJAZoiwvprl25nd3cd2zsbaM/Eybs6NYjw+Xg6bcxI\nYRoJS5nZdFwhDqUUnixiCJNkpDSjmGYRUkX+3EmLdlG7cDdKMcROoD6RJl8ySSb7CZ+8kXBXPX39\nSfK2TsnW8QOJcNk3MjWHJZf8jeCxU5HrurE7Gqs3NkDMLGFoDnJlXaijkbcvPot1P1/Ca975x/Gd\nzO2roDMGjoamCEIWTfHQVRelZOL5clULHnP6IzTU9rDziZPoy0eIGBbpQhjXPzSYoikD9VZhw6I7\nF+W4hbuJGhaFbcsEz5+jozK+svYZJ0wSDYT58bCfzWRBqhAlHq55OrjZ2EhjxTQLU/GqflC+ZLLU\nlwlefgcrnjkeLZ1AUjxYuBuiOfKFMLXRHOSi1arYyk1YF82RyEcIvvUJkQF+0+vId9ehaw5aczu8\n/vdw3fuRVBfCBXA0VoYXs7Jbp32XTvOikW/TV75yATd95HLUezyRjmSWMMwSRj4CqogkFrvryJRr\nm+ItbSh751Nz2R+oATZuWUl/dx3xcIHcMD5UBRWSl5DmEF28k+MW7WJbZwNOX4oggHpXZ/84rv2M\nEyYA6aBp68zcTPBK6k7LYYxhIMy5sQv1AyKqQ6jsiKuyjx/IpIshnt+1iCWKh9G6Hxo7INUH+Qjc\nejER3cYyLBoUj95cFMtV0co+SzzVBw2dSLl18AYJ/D8T/fNroaaXFb+5ip+sXszCmmd4019/zm3v\neRMP1d0Cm1ZDwYIfnMMVb9nOl3+965CZ3nnHh+GOF1j/912sW9vOQ3eptK7JYi2ax3FPzEPxZK6z\nrye0/3Qui1+KIgfojR3wupt4pG8vp7+mmeZdi8gqHiHZxyifc7o41OBNhIrC5wsXWLDoBZ7cbmF0\nvwzXU1AVD8VTkAloRRpToGacMJl84ZD3apiZRX4awqwbLdw6EgabcONdf4pqDuFBmQlR08J2VWxX\n3AZWJo5W1w1vkkD6M9zxcjhnF9y3lJqaXpB9Egea6OypRZECQrpNKNkPrfu597Zt3PK7Z5D7NL76\nuvNh515QPC75j6dYt6CLB9p28bmnfsfVN29nPM1bLnj5D6qv329FuO6nedbMryFnOTx983Lab1/G\n1p37SMbChGrOgrpuWL6VL347zYLjY5w+fxGxml5qsjGKtl7mkgBTG6oJpfJ51MeyOKEMbbltHKOd\nIR4UnoIsBRQ9FdtXCDN66tGMyxpPHhT9NxEJrFNFqPhiYj6Tm3eFIGUi2eJxzRoSGgaE6QY0Jfs4\nfel2HpXXs1vaydvPORv+4Q5Y+jbY/Sv44ymQ7IMlO2BJJ84VV1C0dQzNQQ8XkNY8yf84V/Pv/5lH\nliW8v74dGp9ixWWb2bpzoiV2Y2P1aoVCl8kllwTs2RwlvTfGPf91Fp9/6Ga+dm0fl52f4oZL30jx\nr69kd3szjqdguRohzSaV7Cfa2obkS6R3LyRTDGFqDjWRPMnaHtyVW2i78wIO9CdxPIXOTJzNnY04\nvoKPSDv6zmzIGpeGWb7UmFmCVGn8NZF8QZnD4QQPiKrOIYKUDOern0uA2tLGWSsdzo7H4TEdTijx\nw7s+zIeu6GXbtywi82J8bX0vF/10NZdE8mjJftKhA6h1JZSSCc+dAGzA9wOkV1w/qZmOF5s2eUCe\n7/4EoEBNrJfvPQVfuqYXgHsfzfOljl4+t9ShpqaXdH8SQ3WJmiVS0RyhtQ+BbhPrT1K4+zxQPEzZ\nh7puVMtgQet+FtR1U7AM7tuysnpcmVlEQjkc3fFMKquQEdkM4zHLZAbMv8MJ9UdUh7A2MoGwqTmo\niseWjSfTtH0psUgeo64bGjpFgR6w7BN/q+5/NfcRfPR4qO3hk+t/wpqYRLKvhcezzx/GLA8PvVmX\nf7p6e/X/r73tBI7vnQ9rO7j18R9wmfpJSsUQiuYQWr4Vemq5K/so50pLCB/zAizYA9uXCjKX5nYw\nLEpPn8Curnr68hF02cPxhR0wWpBrRgnTwZhJhJG1iIs9FocCCA2kMDlfajAq4e+DYaiOSEaV/Gp2\nd8nRSBfChBbtwjjuWbpvuIDrbhw+akp9Fxva9nDvkxl+ek8fY6eAvrh49/89ymcu6+Nvu+pZFlcI\neX0Yuo2SSMNlfwDL5Opv3ssPd+/mN1eu4Df3HmDtOQ+yuDEkgiPN7WQeXktfPoLlqkQ0d1xlHTNG\nmAy+gMzxQ96bas7sI4VaRGrQaGbd4AyFqeC6q4S/h4NaXl+RpGAIqWPR0SAXhfPuJr+hlUd39A77\n/f6aHVz4lRvI21PvD00VvnXzdlxvG84P3w3FB5A3ngyLdrFzF5zy0fvIFX0c5zlue8/zFK0A/ScB\n6U9/AbashFCRuoW7sfMRXugYPzPwjBEmiXA1JK4wM9hXTUYPeVd8vYrWmhoMDX8fDF11MMv5c8nw\nUI7BqGGJaN76c9CXPsDCBpPdnYfm0KU+8Yspm+2RQskupwq976ecs3ABv3tdgo6zd3Pi+UPp4Pqy\n4jo9cNXLCbQs+b4U7TuWUHI09vTU4o+SRnUwpvv9OCyme+Mxs7yN5OuEEBf+SJxDRHWIjOgjDfBz\nDySteiIDXPHwfJnStmVo+QjNuSi/u7abd36mjS1bpoLW/uhh/e49vP+237JGGyWE09YCvWsIZB/b\nU+jKxEkXwtW2oOPBjBAmhZPQeevRnsa40Iy4qMP9BBVyRI0jU0g2XPh7yOehIpriY2qibEGSfMK6\nXS2VCOniffIR2N/KaTWv4ca3dtAT2cHL/uWxIzDjFw83b97Bgcgoba9DRaTLbyR04+X4B5rIFCe+\ncjkjhEkigVymVlcRJt50g4QIiAy39iMhUvqP1MXWZbdaszMyAjTFx1AdIoZFLFTE1Bwaa3sEBVcg\nocg+hllCSqQFiX5B5/+78TH+8NREGeSmJx57bHji4y+/fRUnH2cQbFtAvy/Tl4/geEN/yXqzQFdp\n9ByTGSFMgzHdzLsKne5w8zIRqT5TXSE7GIbskhhFkCREVnTYsDBUh8ZEmphZIt7cTrKum9gbfod9\nw5vwu+uQI3m0f9zG7bvu5MI19exc/hRtv919BGd/9LBueYrmZBjyYVa0RPEePJPszsXsPzD5SrgZ\nIUwGn66+XngU51GBxoDwxIf5vOIzHSm+BhB83qbiYSqjN6GskOYDxMMFVhz7HIZuE1qwR0QMHz8F\nPZoTtT2KB6U6/vlHz/KyVxTY/PWFPPTYRHvyzQx89pMmt/7Z4Hvnvg/amkkfaKK9t2ZIqYYsi9L8\nynshxaHojexDzYh0okoK0XQosZiPMNtGego1IfyhpG6hSSNXwfRYJpMNgNcaohBPHuXrEaOEpnjV\nqtioWaQ+lmVBczuNqzaz7g9f56HvnyhCwRfezpJz97HjY5/miw/cxbmf2sg/XDYRLtOZh4Z6WP+9\nE1i+UIf//RT5nlr68hEOpJMULJ2OdIIAiYKtVTsWWp5C2ja4cjZ0wTgaaUOVYEIKwXSkcaggqYjw\n9kLJJ6WXOLa+g8Sgm3m4rSFUpCFUIKLaKJI/5hZSHBpCBRpCBRR5eEGSJR9Z8glpdjn8HQABEd3C\nUD0kKcDVbYKWNvbme7HmF/mP3p1IJz/FrlwPz59zHdtLbbNekAA6u2DFG5/m+p/LfGXLTURSfTQ3\ndBHWRZ1WTTSPLPmEdQddFetpEgHSKKQs097M08sEkxFe3MlWzLdKNsJIiCG0pS57JHSLxfVdHNN0\ngD3ddWRLJv2FcJXsYzhENHeUUPb4UMmEDmnOIIotgbBuYw5iGXJ6a7AfP4X3Ljqf3lvqeOD23wAQ\nBLDyVTsPax4zEe/83iN8+RIdzr6fH9/Uzeua306mGMLxFOKhIiVHQ5Z8MkUATZjVI1i+016YQnwT\nKN+wR/hYEQaCBWPVBlUCD5UAqqmIzni2qyJLAaes3MLuthaMum6efOpEHE8ZluRjIjC1oaXhFQzH\nElRB6CC6Lj+QsNIJvrjkXUihHbzu8tdw/8bfHta8Zjp++vQTrO94gU+ft4bwdpuacjZ93jKJGDbx\nUJH6eIadnQ1k7ZHto2kvTCAc+SPRKbyChQzYu+PxYgyGEtqbiotRvsk9X6atP0nJ0TjuQ9ew6fsf\noTaao78QHlYQJgppAm5WKpKrvh7cHMz3FAJHQ9oah51p/v73v/OKV7zisOc2U7F1f55fXLWE0x6+\nlGIxhCr7JMMFwVuB0O4rz9hA/02vo2DrM1czVTBVbEMVH2gyvHqVztyD5yIz0JOoAsvRMbV+5E2r\nSYQL9OYjpCIFMkXBV+AHw7mqIoQd0m1MzWFBQyd5V6WrnNKSLobw/PFUMA2MU/GrZMlHVTxS4QJZ\nOlEjbSSjcQgFUGe8pAWpgsfsV1F8zWJe9vN+lpzwNKVclNzmVeQtg9S8fcjFEMc0HRDtP0dgKZvW\nAQiddwPKlDD11DDQmnGigiQzQAZ5qFAf+o6hOoR0Gxo7COk2UcMCAuKhEjGzVKXSGoyIYREPlQjr\nNi3Jfprn7WPxmieJh4pIkkj/CevWqA7w4HE0pcLVIMrLk+ECyXgnvwl/jfTJd4hCv5ZumDdB/rpZ\nio9+9KtsevYaHmcj/3bbHbjn/4Xa+XuZ13SA+OpNZNta6MqOvmI4rTWTxmVIKJOu51EZMA91Jq/d\n6hk5kpg8qLeqoTmsbN1P8tTHYPdCZCkQfVilgEo0VVO8Q1bYVcVHVVyS4QILj3kBY/5e8ltWkggV\n8XwZ11NQ5ABNFeSJlqtSKvcjUstd+irjDEbEsESmQyKNf/5f2XHnFla/4wJefvnP6Ozsp9vKTvKq\nzD5c84sNfG3PnezNpvn3NRuJ7v8JimHBngWEFI/GeIbto2SRT2thmgwqlaytHP7JyQhNNmp15UHR\nM8dT2NdbA4+eRt3Z9xMvmRR3LkaRfQq2ju/LtKT6WLHieTZvWSlscCpC5opivdoe6KlFDyRS0Rx5\nyxCpPpqLRECmGEJXXaKmEKDBSx5iiU7MKWaWUGQfU3PJFMK05lq54VNr+fR//oq7n9mJ74+HDe6l\ng03PtldfNxxzMhedGeHWq9aCq6LuWoTUOXrL6WkvTBPRSlFEcGAqFnaTjJ3BIMjgB/2vOsK/KYRR\nZZ+651egxTM0LdiD5WhE6rrJ7VyMLvvQ0EntvnlIuShWWUtpiifMugNN0NCJdtITxHcsYWVDJ+27\nF5IrmYR1m8baHizNIdtVj+spFKyB0Hv4oNQiVfFEv1nVhWeOh1iWb37qYnB+wP/+essUXKnZA9M0\nOO20Naxf/zAAt/7bBfDQ8dBdR1cmznP7W6sdOIbDtBem8VbTJpk6JtcaxkObxSGd8yqmluupFG2d\nts4GYp4i8uIaO2DRLhJ13dDSBvP2UbN9KdFEmmI+QrFkIksBpm4jWQYUwjB/L3pNL4Gr0hzJk9+5\nmFC4gP7RO7BvXI2UjQ3RbAfDVB001UNThcZj5RYohPnB52+nrTCR7q4vDQRBwNrFKT564TLYvpTP\nfrObKxYtp7u9mT07F5O3jBFZbWEaC5PO+1G5eBz7iYDCVEVS6phcuXjEKA25pTPFEHJPLVbJpCaa\nI5aPIOs2nLFBkDE+uQatuR1NCgh3NpAvh82NioCqLuxcDKs2I/kyhi9jRHPwwR8iPbKOoD9JzCyV\nfS+76j9BubnYIEHXFI9wsl8EHZrbece7HuWLZ42nfddLC5Zl8+1f3sb1F7+dN8Yv5iwpyu5nW+jJ\nxOnMDJeFORTTVpjAYCn6iEJS6XDXOsLnE4WEMA/HK0iDI3JSucGXJAlvxfMlFFm8Ljka6WIIWfaJ\nlUzYcAavuOV7XPVmWPuqp8AykB44i2hbCyTTYBZFM+QlO7jyoVu56itPEItIZH7TAzdeDre8Cprb\n0S68nfg9/4Dc2YAXSORKJr4vV8PnsuQLIn2zRNQsoa7cwulf+TO9ao7t2w/tqTQHAdvzsbFAc8Cp\nxSpzmgfTGl0YAAAgAElEQVTjCF9N69D4SNARUbqpEiQQgjSRLO+w4laDD7rqVrMQPF/BcjQ0xQVE\n1K2KvhTIPm99eT3rvnQz/3njZh4q1sLCgmBQXbgLLt8FC9sgVITK+pUviy7lpz8iTMQzNsBpj2Ks\n2kxtczsNqzbT1NApeL1VZ6BmybQwVFf4S7sX8sin3syX3jtyp8U5lHHOg9DSJrLG1fGnek1jzTQ8\nKh3cpjLpdbKmHQitFDq4dQpCwKqvFY9QuCDMuxXP8+TfReefL1y/jR+vt7nz/60kWreKHz25nsIO\nuOveAyB57O3PAFCwfD5/T0C0NsdffnsT/K2LN1/6Dj7e2gq5NkikMXtr8IshBvtPpmaLULnswyv/\nKt58ai4UPiZkF3prCes2frhA6ymP8+jtF9KdG/1xO22FaTiGHompr7KtYeKCpMlemYsuoCZ6sMkU\nDGoFGUA5qKC8+6ewaTW2WmDTnkx171279tDdOx/nXR/hipXfGvZ4nh/wpWtvGHhjB5w87+/k/vUR\nIu9dQ+nmLkJNB4je9zLC/UmKg6J7suyjJ9Jw8hVETzyZvDU765OmEqWHTyS3ajtG4w5Sz54GLW2o\n40gFm7b1TAu4lmW8v/qehqgVmkqNNJ7w93CIqDZxwyqv4wy9fqrs0RDPEDFEf9VUJE8iVCQezyDX\n9HJz//38pP1W/vBQ+wijTwy/+/oCrvt9P3//2KsFTdeDZwqTsJJ6JHsQzcGZu0k330nysnum5Lgv\nBZzU0MrGr1wIiscdV17J3t4aspbBJ6zwzKJHNgYJEohs7qkUpBTjI4Q8GDHNJqS6GKo7bDvKiGFh\n6jambhMxLEKag6E5QsvKPq9euYxXvyXLD/tSfOhD1x3mWcAb/nUP8+p17ujdyPqHHa46phlsTRT9\nBZKonjVLfHXTHWy559HDPt5LCZ9/fwPkovTeey45y6Dk6JTcGRgaHwyD4cvDJ4vJ+kgVYkdV9gZC\n2GWEdQtddWmIZ1h03LNEAKu7jtCCPcjRHFJ/km21j/DLrQ+xfUOae3cUhz/IJLCvy+aNX3ieXD7g\nqt9ugUQd7J0viFJkHzSHd50Uo+VDo/VwmEMF//uKi7i07mzm711A5+MNbN87H8sZ+1E+I4RpKsPf\nSSYuSIrkYyouEc2hNppDAqF9BhX1SZJf5aJzXBV15RYRCWrsgCU7eGGLyoKVIUryPK6/8ZkpOqMB\n9KXLpIuX3cD7Xt3AdWdF4IVjBLfDsc9x6dX3TfkxZyPi8QjXPPUM7zzxnexPL2J3Ty2d6UQ5259q\nt/bhMG1D4xVfZio1UoKJmXaa7BFSHGrNEnHDoimRZmljB3XxTFWQdFWUNQsfSdS+uAea8J5cI0Lb\nxz3LHdE/cfqPfsiO1EN89at/n8IzGh7PHujh6qfvxjZyIsTeVQ+5yRi1Lz289uUr2fzrz1GT0gmH\nilUu9nQxjOMrWDMxAyKF0CKTa6NyKGoZuyGaobhD2H5USfA1xEzBMVcfz7CqdT9ZT6GrXJZ+sN8k\nl1s6+p4C2RhsXsUNdz9Jf38PH/rms1N0NqPjocc8zj9jM3L9AcglYdEuEYSYw5i4695NXNL/v/xm\n9buIvimO+5nWUTvND8a01UwgfKWpKAqsZXjTzlRc6s1CdYtrNobiVzdFDkiG8+iqaEZctHVcV6Vm\n/l4S4QKJUHFIBWvUKJVrlxDpQKoLJZNrPnYC8xsM1q9/8XyWr3w3R/ETV0Cynyt/9QIPb55bXxoP\nzrsg4JZ/XUz8rTdh3e3Tk4vSXxxPpuY01kwT7Yw3HCopQhWNJMw2d1QKYRClEKriES7zJ8iST8QQ\n1MH9hTBRV6Wh6QChnlocT6U2kifR0ElQDBGUe6Fq6x7C7Unyxf5vkX00ROlFXoIIAognEgTf/Qjv\nuDzEDTt1tuyY2ZzhRxqaKtHxVCN3f/kMlnsXsbunFttTCAJxPV1/9Ef7tNVMEQ6/P1FlHclUXKKq\nTcoYnYsbRNaAqHg9tF2KqdvkSiaF/iRafRex+i6ikRyxSB5t5RbMZD+hUBEtVITnV+B7kNAb2bCh\nj66uo3Qjn97Oz2/rmBOkcUCVZd6z9lgueG2eHlsnXzLJDKILGKtH07TVTIeDGKKEwpB8krpVbuw1\n+ncU2SNqWFUSjcEQhPcuavmzQjqBpttor74Z7e7zRFKkrYvOc/mICDy4Km6ih5/8fCdt6aMXkn77\nlQ+zNDEXfBgPQpi8rGElXe3NZLIxsqWJPc6nrTDVMaA2R+txJDP05ldkHyTBqKqU03r8YPT2YZLk\nH9KraPBnuupWi+4q2eGEC3DmM3jpKJmlT5Dat5o2cyd13SsoOSrxTBOBWaQ9k6Wv7+hVtG7Zmabh\npLkUorFQXy9BTiK2+0yeffoEOvpSOJ5SZXMdD6atMKmIvLlDFWswpCNehRlIU1xkOWBJfSeq7NPW\nn6QiQEVbK68TSEO5pCUfTRH8CYZ6qFmnyD6pSJ6IYeEHEobq0ljXTVj20SwDvvtOOo67nTd+9jne\n+8oe/unq7Xz63U/wdFuSa199NjWSxJveFOb73z96kbTHNxd4fPPcYu1Y+Pu1y/jBR0+gZ/dC8pYx\nBm3N8Ji2wmQwPOlkQrerHHUV6IpLxLRQJJ+mxg50zaEjE6/auhUiRkny0WSfvK0T0W1k2a+absag\nBdiQLsy9pqYDKI5GvtzePmpYxFvaRCVsJC8qV5fu4IFNGR7YJJJXv3RND9DDW3dl+NOVJx5VQZrD\n+PDmE1ZRd+MH+eeGc9nTEyVviTiyqGIeP6atMA3Xrzapl9APYt9JRURGgiQBUkAokFAcjVUtbezv\nG7pKVclcaFE8Vp/4FM88fQIFW6+WIosWlQ6SJBJWE5pDPJojq9u4vkwiXICSCce8IHLeWvez8h+H\n7zJ+16YuWt9x9+FfiDkcUZx9ms53L7uI/j+uo2BrQ7gJnVEWaIfDtBWmuG4R02yyriaIGWWPiG5j\nqC4lRyNAcGsnwgUkKSBqlqiJ5DHqt7KrcT1rimdgPH9C9emSLZmYDZ1EiyFS4QJGSxvz97dScrSq\nNxUEEkEgoYSKRGUfM1xAnrePRHuzCCooHqzaDPNT7D5nPe3rN5PNj2wQZApzvsp0xfJkAyk5we0N\n3+DATXWkC2GyxTCWo2JPoPXmYExbYUqZRSKGzeJIF8e27mdzWyv9hRDNqT5Kts6yxo5y2w/BwJMM\nFalNpLkt/Dcuu/Z37PhkhIb2RTiegh9INPgKde/6GaUb3oypW8i6TW2yH8lTqlxztqvguBqR5c/D\ngSao7xJFdX/6RzAsUHz4p+/Cwxfwne9u4BvfmCMlman4n7Ney2vNi8j0Hx7/+2BM23qmb+ilqmYK\nl/2kiCY0k+WqBIGEOUgzxcwSNdEcRsMWdjas52TrDPZvObGqmXIlE6Oxg2ghTCpcoPa0R+l85PSh\nmgmJIKCqmcLxDOb8vaJ5sG6LjIZVm2Feil1n30/b+s2c9a7tR+9CzWHSWJlqICUlueuMr3Ogu47e\nfIS+fBTLUclZIiTeM6iyNgiotuEcqT/TtNVMGdsgWw5LZssnN5zPVCqnxndIIHX6nC4FLOhezo5i\niLaDfKb8ngUUdJv+fITo/lb29tQO7zPlYvTKHotUF33XIrL5SNVnUjatRiq9wKKda1i0BiLhHeQL\nwz+QoiGFXHHO1JuO2NLXCXRyYefr+dNlH8H745txfRkIY3vOpEy9aZsB0T/ce7ZZJWysoDcfFcw8\nARBIlKQAW3PY3NZCbz46ZOsrhOnOxtjW0cit955Le3+SvGVUSU9sVyNTDOO4CparknE02vtSHEgn\nyJVM0vkImCXYtgz2t0JbC1v/vHzY+Z93fB3tvzhviq/KHKYa9z9q80+/uQ19xcOENAdFHnj4aWO0\nOD0Y01YzWYDNoeHxtK0fss5keypByUSRfdo7GlEVb0im73DrTOlieMg6kzOo2C9XEhqxKxsjFS4Q\nMSzylkGuZKK2tYh1Jk+BzatA3seZx7fznksa+edvb+dT70zxdHuS6159FkaPzIc/HOEHP5ij1prO\n+PVTm/nXK7/HD+96gH9v/TSOp2C7KmHdJl0cv4hMW5/p/QTIiHD2aF0rDu4oociifCsxgQwIWfJJ\nRYZf2JQkn/pYtsrrHQ8VqI3miC/Yg/a5b+P9fR3pJU9Qs381+/Sd1Pcup2RrJLJN5GP7WfiN/6On\n5+hlQJyyMsw5J0W5+tedR20OMwGNjRJ+JsILr76OZ58+gf29NTieQrqcMT6jfaZuqLaS2Tfajgf3\nOvJkYkC+qI47N88PZPoLIaJmCaWSLlQZPpCxXZWCJSi9fF8WRPmFMGw4HmXjadRsWgOpPub5x0Au\nilHOzZO0EA3RKJ5XpL//0AyLFwMrFieIEwHmhGk0dHQE1OgBuYUPckzrftxbXkVnOkFIt8adUjRt\nfabDQRboALKBTK8VIufoFEYhwgBBHpkuRIZd9RY9TtWygwrhRBqtrhvnlleR72ikuG8evm5DezN0\nNIroXz6Cmq7lA69eysqVk+FAmhr88otrBUPsHMZEkRL3dGyhvqWNeDxTpSEYL6atMOUZsUHbuNEP\n5ICSp5JzdPotg5I3epVUydHJFE0Kw/QuLdk6UcMinOzH6aon21VPLh8lm4/gPL+CUn+SUjGEUwzB\n8q3ICvQU21m7NkV9/ZHuyDsCHm7mHRc2snLxUTr+DILn+/z80c3c+ecotbpNxCwRN0vVoER4mPzN\nwZi2Zp7HiK1Dx40AIVAKojbK9hVsW6FCAWkqLjFtaJ2PJIk0EsdTKdoGyXAeZJm8pRMxLJKRPJ7q\n0nmgiWwxRIBoJExvLVGjRDJcQJIg9fBa9GiO/2r5NMEpj/OHX+8/zLOZODLpNHzvy/ziziJbds7V\nM40F2w1oOOEA57/nQai9mcQv3s59N15eTVfThinPGYxpq5lARPOmIjzSw/BaruSpdJXC1S3j6Fie\nXN08X6K/EMF2RXQnpNtoqkvvvnmkC2HSxZAQpDJylkmuwqbqqmIzS3zwu0+zt9PirLNePHPrc/8c\nI/StL0N/kivftoy1x47eQnIOAnfeKfGKr+0g/cvXYVwgUxvNkQyPL+t+2mqmvvJfD6akp20PYzO4\nWp46hH1Gk72BgkBbR1NdNu9vJV0MDVnoFX8FKaVfpoSSFQ9iWVi1mTce18nvn4Nr//V4jn3gyBNB\nrj1FoaZjJb7TCIoiWtNkowhvcg6j4YJzj+f6T7wPflBP77dSolncGBqpgmmrmSqFC5lR95oY0ghf\nbLxwfIWiq9FTMslYBgf6k2zraKQ7G6PkDCz02q4mamACIXRq0wGUNU+K6tvnjuXC/D/y8Hs/wJK+\ndXzmM0e+s/nxzbV8es156FZMBB/qu+AQTvQ5DIe/3LmV4976ZXr7bPLFUHVBPxEqoMkexigLudNW\nMw3GfqamoVmA0HgVH2q88AKZvKsjSwFeJl5tl5m3BvaJ6Baup9AQz6BpDu62ZYLRVbeR8xGW96V4\nYcv9mNv38vZz53HP9gL79vUe5hkNIBmXyBUCnN++CZJ18OPjBhhdnzuWP33qXJo++JcpO95sRTqd\n46ozzyJft4vWOg8jnkHZO589nQ3IEsijOB7TdtH2GALmD3qvhuFrnCaL8bbaPBgxzSKkeoR1q1p0\nOBiJUIHaWJaIYREtdzqPmiXMUBGprhsaOmHNk1yXSfGBD1x72OcBMK9e58efX8L6hxy+uPxt4Ggi\nO6PCNZ7s58vKL9jS8yjX3zh1tMyzHX/4/ElcWn8Wvfeey30bzqC9P0XW1viMpw+7aDttzTyLHw35\nPwdM5bJnLwOm5ESQdQzyjorlqnjDUD/lLYOSrVNyNHryYt3KKtdf4cvc8vx23vCtB6dMkG74n/kc\nt9TkwpqT+eLLLoAdS+DZ48DVwCsHQUomV5x4Id9529opOeZLBf/5w06I5qh5zV/KD0Ybc5TmZ9NW\nmDp4gvSg/23GyISYBPqBybAj2L6C5yv0Fw7Vba4v018IYzkarlfeRwqQ3vUzWLSLl1/i0FcYGlvc\n8PUzee655yY0h49d3kh6wyre8KmzufEzpwvf6MEz8ftS5Ath8iWDfMmgWDKFhjr/Ncx/6/2TONuX\nHn546StIX/Fv3PfBt4m2p9uXAqI3sDZM55MKpq3PFHBoWDwAdiGI/KeqvUwv4okyER/K8RUKjkpY\nc+nNRURpRvUii2rdwa9Ltk70p+9GTfVhNHSyemGCO58U/tLChfOpr40Su/4avnT5SRRicOe9BwCP\nfZks+3qKKJLEZ973RqK1Kn/+7e1Q383y0y4h/syZ8Pt+Iok0/jPHU+itGRKqNzUbFQk7nUB/8stk\nfnw5Nzz1PG/+2pOHf+FmMULrniL+wqX0bV/KvpJJKNlfzX4ZDdNWmEaCj0gVqkeQrkwFupl847MA\niaKtVxNhK7BdFVURC6W2p1AshIkZFjy/gpObNwE7ufJty7jo5RewtHcB9NRwxZoInF3kv5bEIdrP\nlQ/cwVU3PkvYlPnSeRJkInz23R8UPW1TT8Mt86FtBeQjlIohCpZBsZy5oasuJUfHCBw0VRZP2FM3\nQqztsK7VSwK+ArU9FDavorcQpvfec8mMgyJ5xgkTCJOvg6nttl4xKccrUAVPRVc8VDnAdlVsVzSJ\nVsq9m0Sph1XtogCIJtC+zC9v7+LBK17FGafLYPXAEyuht0Y0gu4olbutWyK0DiIiF8/A7ReK8vkH\nz4TGDqznjiXf2YDb1nJIt3XHU0Q7UDNAc1X0hbtZd/Vv6FHn2JLGxP1nQW0zvi/jjJHTORjTWJhs\ntuNwEtqwjp1b3vYhSCpHL7IYG5XUI5XxmXz+oGz1AAk/ECXvEpRNPtHs3tQc4qEikVBRFBaesYG/\nX7ASnlwDt8wDKSDoqiefjUF/EkNzUBUPCbjyuNdz5RuOhUAi+P350FMLH7oG6ZEzcG67iExPLb35\nCI6nUHIGcu9U2cMs12f1FyJ4voyxZSUP/cdroaWNwvGPsuyMLto7pl8k92hDUyQ03wBbR9J7MQyD\nnGUgjSMXZ9oGIGyuxWXsXkY2wo8arjJ3MugGJhM8zlvmkMsdDxVpru2hrnU/sfou5Nb90NIGT58g\nuvqd+BROezP59mZ60gn68hHShXCZsw0RhVuyA3pqCbrqsWSf3lyU4vc/gruuCyfZT7ZkHiJIAK6v\nkLPMqp3veAqF/qSI9D16Gj/7+Kmcvap2UtdnNsMwdD7x1ouQztzAb83r+Y73FRYe9ywLFu6mIT52\n+sA01kwCexhfh/U+hKbSEZ0vDgfjST0CyDsaCWMggTRvGejhAqriEdJtWho68eIZ3FyUfEcjEU8h\nt3Mx+uOnYK7aTG86QW8+gl02JTTFQ1F84kYfUrgAe+dj71iC72i0715IrmQSzkcwvnYpluaQKwtT\nwRoQpvCg+ZQcHT9wUCSVkqMR37ISztjAR/7zIrZ/fQfi0TGHCiRJ4pHdab5+/QvACwR/fC1seoFY\nTS8Rw6J348kUR2nHOe2FqZfxCROIzDMJoaVaObyT6y+PVz/KOJavInSjgO1qyLJPIlSgMZGG5Vtx\ndi6mY88CLFeluH0pvi8T0m1WdDbQm4uSt3UGG6iZQoj6xg4omThPnEQmF2VfT21Zy0jYrkq2p3ZI\ntDMYZHJmigOvY2YJ11PwVE/Y/sc/A6s38S/f+gNX/2bHYVyd2YlSyeK++x6q/n/J1+/ib1fmYPMq\n6jsbOLZ1Pw9sHZ7zA2aAME0UASI5dg/i5JrK72tM3KfygANAIyOH4l1fQh209qApHvNre0ie+hhB\nezOZ/a0UbJ1syayGzPv6Uux+4Kwh46iKj6q4SOECbm8Nyvy92J0N9OWiWK6KWzbnPF+E2y1XrZp3\nqix4LMQ4A2NmimFiZpGSo9KSKpCO7ueD//swN1zzMZ7c+Cs6OtP0WFkO9A+NRL5UcdyqJvr3Fdif\nzdC57Qnqb/kRbLegvRm3Pzmm1zSthcnhJlReSR/KpNpxVgIUINKHQAQXJtr3qQvRpibEoRes3zKp\nCw14WZajsXl/K0tdlaYL7sTftoxsySRbDAESrieTLZlDAhgAEaOECfQXwuzetoz5nkLQ3E5m52Jy\npRCeL7RS0dbLoY1B5+kPcBVEjNKQxtU5y8APJDrTCZJ3vpIl3tM88/PnuPO174K4xDe61/Ov/3Pb\nBK/I7MTH3n0Wpz26jF9vfYzQxv8geOwt+LkoyklPUPQUOtKjOxDTWphsfkyI79M1SWEajEpKqYY4\n6dFIWg6GjwidF4AGDtZwhz6vLFejaOvQ2UDJ1smVTEAiUzTLLEmHxn3yllGtmWrrS6FqDoVdi0gX\nQwSBoHcezIM9EgaPoyk+QSBTtHX6CmGggTfx78Q3tkE0AU0Z6DzclnKzA9/73mdY1foPnPpohlMv\nTlG6J0LP3vkULIPUM8cTa2mjvque7R2NI44xrYVpMAKmpr+tU94GewwLGQhrjnYMB5HBbiBqrCTA\nRyZj68Q0u0rEYqiO4EM/4Wn67j8bv5xiNHqjYam8XqWShhGfgtKYF0HQmTlFlVQkJ5pVBzKup9BX\nCFMTaSSej+KTR85nocvi1ltv5eKLLx5r4FmNteZfOeWWJRSz82m/91zhm5abnWWLIVae+SAvHGiq\nkp4OhxkhTDnEIm3TWDtOErvLfyMIcw5Gzyi3EAGKEMJkLHkquuxhqqKQrCXVR21tD8/84MOEGzp5\n4UBT+cc5vEpbU7PRlEOL+fURWov25aPUlrus5y2TRFjUNMmKh6Q5sCIDi5IveUE6piXC577Twb+/\n/I+sC30At6eW/kK4mppVsAzuv+0i+vIRcjNZmIr8C2G+Q5qRmp9NHfIMFA/Gy39TDN+ourJvDBGK\nL3kqhiK6svuBxONbVpItmaR3LxySL3c4KDk6pWFS580yj0VIc5APSsQs2tqQUhFZCjASaa7c9gs+\nfHItf7rpz1Myt5mM95x4Ep+95ESu+WMXq0O6iLJaBp4vUXK0qpY6eD3vYEzbRdsKbL4LiBt3YmS1\nh4dMedsP7GWgjP5gZBERv7Sv0GuZbO5oZOOuRezqruNAOjGmIOUdlZ6SOeaWHYYtqQIhZDrpYoj+\nfHjIulPB1qtVwQBaTS/6yRu5btedpF65h3XnXwII8/G5mxfzjlNXjufyzBr89KOnCYq2+8/m/Yk3\n0d3eXF73k8gUQ9XrWnJ0bE+mNErPpmmvmQbjaNA4VgS4r7zNRzyBlIP26QF6Apkm2yTdZZLULTRp\nZO6AHksEJcaLoidTLAqBqjWKSMMQa1YCG0VHR5YF9bMiCxNPlooEgYRqGUjtzbSGU5j7Tf67fjH/\n/cQJLDpnH6vufz9LzTu5948dnHvpSI+P2YG6WtjwgxNZttCH3tdR6EnRm4+QLxNO9uYiBEgUbK1K\n4h8gHRJJHYxpW2k7+P8If0Hj1QCcfFRmNBQaA1kW8WE+r4TfjyT1pCZ7mIqLqXijBiViZrHqU9XH\n06w58SkM3Sa0YI+4LUJF0YsqHxFVuWd4rPryFzj7ogJbtizg/vs3HcGzOHr40/eb+dsfTb5/4oeg\nvZn0gSbayiUsBUunI53ACyTyJVNw2QeQczSKnjYiPfK0N/MALL5Rfb17lP1eLDiIRJxuRGAkfdDn\nJUSAoocjxwfk+ApZxyAzRt/VXMkkWzTxfIlMIczzzx3Lzi0r2b9pNdn2Zjh5I3YuSqmrHjsbg3AP\nV7/3OK59zSX87FqftaeMHY6fifja1RZdaZvX/+3H/LHle0SXbqe5rntI5wvfl7EHmXVFb/Qquhll\n5sGhN+7RRiUQ0QssYKj5VyxvGUQWxZG42Jav0m9B0hieZDJAwvZU7IKCIvt0pBPkLYOCrdPb3kxT\nWwuBo0EgoVgGid/qXFxfB10FlmxtodUtMnQhYXbgwecHyGxOWbOKSy98kMTS7bQ8cRLpR0+b1Jgz\nQjMFpPHLuQwuIkt8uiFAaM0ShwZKAkSQoh0RVp/qnhi2r9JZDFNyR9MiEo6nYLkaBcsgXQjTnYmz\nq62FznSC/kIY29GwSiZBf7JMoOnypctP5f5vnjrFMz46OPnk4RkYr/jFZjY+ayEds42U7JOK5FEP\nWoKodMAYDTNCmDyewOaXR3sa40Ibot/EcCReHiI1qY8jo2EzjkHBGVn/ZYohLEel6OjlZtgyBVuv\nkr4UbV2034nkoXU/jy38M5f+6ibO/vRjR2C2Ly5etWoxr75g0cg7FEMEv7+cYnddOVl54oU4M0KY\nDkaaqSWnnGpUfKaRCsSLCF+qs7xNZcg/52rkRxQoCbvcuCBTXt33fNFA2/aEGWgu24Z00hO0n3gr\nb/hAB1u2zHyO8nMWzOdHF72RSy8+ZuSdWtphzZNIvoyueNTHMyTCBYwxyPoHYwYJU5GgTOXvAdt4\ncdedJoMSwttIMzxnul3eDiAEzy9vhxdflci7OkVXYbhAre1qlBy1zK40NCMjZxk43XXwsvuwdzex\nq2P4p3Pft95OWJve7rahSagKBD96N/d95lU0ZpexZsNidvziDBJRBbU8/URUwdBkzv2vO5AycaKp\nPo459jmOO+1RTlywB3mc1Mgwg4SpxFX4DA3TTlV17ZFGD0KTjkYr5iMEqq283+G208k6I7fPcT0h\naEEgstgrCGkORHNw93mE967k1CU1w34/2buE29/1NhYnp5IWdGrxydcs5QsfW8dvN27Dv/9s3O46\ngq3LWbwI+v/8Mi65WOYNx62i/2ev4ScfPp2nr1kLL7sP1j4M6x6ie/dCdndPjOV+ej9exsAepobU\n/8VAD+LJVcfY6099DKUfG/6WHhtZx8APbCLaUB1uuRoh3UYK5CqXtqk5JMIF1K56eOZ46j/+HT4Q\n1Xjs/w0zcFc9ZzbLnLsmwcdPSJAstPC3nc/zuzunju75cPDjj5zK6t5zOXXJUn72yB8p9qUolUzU\nQpjEHy6DWJZ/XmFw3spz4e4wb1mwB9YvFbQCze2weyGxUJFUJI+hunTnI+M67owSphwXkTioneQ2\nYJqTgoUAABbrSURBVNnRmc6E4SMCED2IMPr/396ZR0lW1Xf8c9+rtaurep3umWFmenYGBmYYHFlc\nUInKJkRATqJAPKIsItF4OCcnmsXlgDl6EqM5ZqJijEdJ0BDBDVExQowJgjDDDIMMw+xb77Vvr95y\n88et6qpeqmuZ6p6upj7n1JnuWl69mq7fu/f+7vf3/c2mf3AojmRZlKi2njKUlOVGAG1TAqrw3tm8\nWeambbvQNu1DdMTgue0w1gvuIwDs/9KVBFYE+cL/DPOOQ5tgtA8iXXxx7T2E/AZ6u2RsDB7m6TrO\n8PTpCrr47G0D/OmXDwLwl9/dyz0r1rHdeANXpe7lVKQLiaDdm8WzfyP+dzzB25ethGiY9JNb4fAa\nfEKiCQnJdji8Bj8wsGSUY+M9HI4UL2ezJY6aKpgko9Puy6E2URtlSjnXFCqBD6OkSdWct8NkEW4/\n0yVN5REk800HfCXq8kg6kFeUK98de3AZ/zd8gGMizi1vykGXnztu/xp3vPNBeHQ7WGG+9JYcfOBF\nzE9cRybnoc3dhRZNwwUvwJY98APQNIH92M2wbDdnX/8y+w83fmW7ebNGeszHtdfA4ZcCRI8HueeC\nNzJ4Z4TPPxDhTdv8fPLGLjI/dRMe75nYEjAtHTw5rGcvQjga0WOriKfb8LlNugMpOsd6sXrHOHXy\nLIainViOqgUr4DD7Or2pggnAYAde7p74PYu62i8/Y2dUP0OoYsNazTSHUer5QvqgmjZmcdOLQ462\nGbyyTcvFkdElXLjkzVy2bjm8zQRxEr7+PCzdAsdXweBSePkcMkNLGYl0oWsOfstFV884Ytkgrz95\nIff+2YtoEQ/E3wwvLIfkCULeFBevXM4TB47wsWvW8eXHDtb4aeG22wJ885sptq7sJmWY/O5bGxn8\nxXp2HPw5l/av5RPn3AEvjXH/dhfuwZ2s3QLoq7F0WxmA5jxYto5hupRd9cmi26IQqvG3x2XhaRvj\nqeeHWW/rjCaCJDL+ieZ1BSu42RLmTRdMWT4zKZhA7el0UfxyNQsmKjDc1Fb5C8VMIKgLSoDKXT2S\nphspmVhDJbNeugMpPPkA84bi4MnBj9PQ/Sa1cfvrNRALEomHyFkuwsl2spYLt25juE188RCBwWW8\n9Qp460Ub4HspeLQduleCrfPY57ay+uWr+OP0t/ncBTfxrst/AnvPB48BnVF+dewgf/vQdJHYE7+4\nE/7rACSCXHqJj/daOivOSWAMrMDznytZ6wjOCb6E9/C5ZKw+9LFePIaXT3/sEM+Ej4NzlET4UsLJ\ndqQUEyLgeGayij/kz5CzXAigLxNkqbUOK7/nlsj6SOY8E5ZplXzpm0LoOukx+ggxiJghEbkQRLD1\nolN5HVUNpQ635Y4VdBv4dBuXbrO0I8ZA7xhbN7yKvOzX5F48H3esA6HbsPoIYsseUt+5lWisg/G8\nuQuokg2vy6S3PcmyrbuRd++AvefBD95NaqxXmWkuG4SbHoYHbke4LGhLKzFtRwxWnGTkxh30D5Tf\nx7r66lX86O73oD25FBEPQSKotg1SAXBZEEiRGeslnlQpnY6zTuJrS8O1P4ZHr2fnvk1Ex5aQs/RZ\nCzML7YEGekdZ97rnQQp++KPrOBXpIm25SFoeSjsSf6OM0LXpggnAza0E+Pa0+9czs4q7WfAzu7VY\nLQSZPBWcSsht4HPZhPxpLl1/gJ6Bo2gZP4ePr6QvFCeZ9dHVGaXnpofh51ew59UNpHIesnmVRFve\nDcnvNllz1ePw3HZE7xi54f5Jpd1BXxav28TrNpUXYHeYV1y/5+Alg1xzyyNVfZZXvvB3bHwlBOM9\nZDN+DNON7Sj1RjLrm2QHcPYf/pDYwXUc3rWNSCqAZevE0m0zGu+784p7r8ukzWuwtDPKmv5hjgz3\n8/SrG4jnvCRNDyOUGrqVD6amm+bNxgHU1b1Z0uVTyaDWf25O/zMU1OrtzOzIFDe92DKHrnnZdWQ1\ngaGldHZFGB/vYTjaiaY5JKTAv2sb42O9RNNtef90RXqipNtH8tHr8XtyuEr2ZVx5H3bb0VTKXbfV\nl61/mO889xvu/8ru6j/MO/dDeADiIcxkO1lTtT3N5PtgOVJMBPCBZy9i7OA6wsn2iQpZ29EmnXuB\nQoVyztKRQG97kr1HBzg00kfM8JKyPDNqLcvRlCMThAjwIG6unfaIhgqoevdmFgoBVNauEWj523QP\nDYkuJJ3eLB7NoTOgVgVavqhRCInXn8GccvWfip7XsgkhCfrVdrNA0ubJ4cq3LO0MpPDe9VWe25fi\nyvt/w3iiepnSmgGNQ1+4AU6sIPrTqxmNdSgn25yHlOHNN+VW5xdL+3Hya6Rk1othVc6XCiRCSAJe\ng1jWRzRvLW0iGGW6MLncyNQ0CojJxHE4OCEvKsVBKbMX3iWiNlKoeqlGfI5CSvdE/pjWxHEFttQY\nz7aRs3VGE+2MJ9sZTYQYTYQYiXdwfHgpQ7HOiQYBpq3jSG3SzbRdjCWDZHIeYuk2klnl1VeoWp3g\n1Q2ct6KT995U29fu8FGHtXc9Ccc3429P5hMKIp+lc2E7Gpmcm/FkO5ajq66NyfZZA8mRYDsC2xEq\ncGydg5EexjIBLEfHQjDM9ECazVC6aad5GT6Om1sRTDegH0QtvufKzWi+iKM+RyMt9rOolHwI9ccv\nZADHDT+6cOjwGJMcagsoLZ9SAgS8WTQhp7kiJQ0fkiw+N2RyHvyeHJat4182iKs9CX3X8tf/ci9f\nebIOsVSbgMsjeJ8exjPSRzjSNVFOnjXdpPOBa5gukmV8N7KWPlF2nrFcWDP4F4L6Pxqf4X6TyWun\nqTTpyFSZxdLSKwZTNB+NIY6SLaVK7rOlRiznJWbMXr2bMnykDC+JjA9HTn1MfalN20Xa8GJYLjRP\nDn3FCej7PZdeE+bGa+vwmErZ8GIY2tJ0BYpnnTI8E4EE5L3bi0gJMcNDzPAQNz0k8reZAslBjTwR\nyguTZ7sMNHUwxVk16+Mvz9N5zDVJlGKi0SXwEvXFKU372lLDcFyMZPyzOiI5UpV0R2bQrSXyezmW\noysfhWOrIBGEp0fo3/9mfvR47WUde//iZji0luwzFzMSLQpszRIxbzLrpXQpEzW8jGb9GI4r32Rh\n9o2HQVSwzORC6FD5otbUwQRpbMr3Zy0UXC/0Uo1qkKhMX6rSE+s89gnUWrP4RRJkbDcjmTZytoY1\nQ2f5wvMiqbaSzvNqPeOU/J4z3Rj7NyIPr+GNazbx5+95S83neN6XvwGv/x2moykNHZA2PNiOUsCn\nDU9+jSTIWLo6b0enUgAV1thDzL4+PVLhcWjiNVOBNB8iSPlK0Cjqv3M1jbFXPtMMo9ZQp9uDaiZG\nUdKmbibr/qI5H5pw8Ok2fpeFPiXZqjJnPtp9WXRNYjk6huWaML+0HI1sxo/HZXHEN8hTxy3uuhO+\n+rXK53TNFTqXdG+k86wUDBwluP4AWjCBPLWc0bjaVZQoezNQPoQpq/ppZJTKyoZqC1GbfGQCm5cx\n2DHrcyLAK/NzOvNCmLkzljFQQTU1a+VIjbTlJmp4CWe902yCLUcnnpm+Rawh8bksJVkKpOi59Jds\nXPdbbjuvOtOSK3q281efNrkn8AHYeSF0Rgl0h3GXpOoL75s03aSqSIWDCqJhKgdSgpmTETPRpPtM\nk/HycXx8HlFBgx0EZilcbjr6UAqHuTLjakNpHmcb0bu9mSnZP0l3IEWgoCjoG6GnK6KaXL/9lxAP\nKUlRuo2w/yTrP/WQepnmEEmoCXkw2EZ8+I2wMwm/vUT1/834YYUy1Um/fA57jq1iNB4ilVN2xlnb\nRaKCfTEUFfjVXIwKa8qpRai/WswKCIN/wM27cXHZrM8zUeuoZhPElqOwIF7G3HymNGrq0kH5gAob\nfkJuA11zcGuqV0ks48et2yzrjNK99pAqkekbgYPrVLf4A+vBZdG92kv4vrvAbcKFOxFveAaAj370\nBvjnXqXujnRhhLuRto4eD+Heupu20SVox1diWC5i6TYkVBVIGaofZUAFUS3V3IsimKoli7LjWsvc\nNgCYb0ZQmr7KZlS1k0RdzV2U1z3GTS+6cHBrDiFPDtvRGU+28/zhNcQ8OVwZP12nltPbO4bYtA8r\nEcQGvELCqeVw1kl1y3P//Q9y3z9+BBJBrNElxJPtqsdVzoPn2CqWLxnFdtQ6zZFaxUDK5T9HrX5D\ntRpEL5pgSnE9HVVcd9KolPnWOT+j+cNGzf/PYm4uEoV1haB87ZQtNWxbI5fR6PVnsRydlOFl3+/P\nZUkojml46Xnbk0R/+XbGI10EPDncyXZ6u8Pgy7LlsuIy/+H7NsK6g3B0ADvWQWKkj0gqgMyn4Q8d\nW8XJcPdEs2ZjFjP9Qha01sXM8RqfD4sgAVFAEsZmT1XPtYHdzL6b3WyUprfnaiug0D1xNhw0IoYX\nR0I0HSBruRhPBDkx3sPef7uZ/cdXkjK8RNJtmI6mmlZvfok9T3yKfd/ZzpaVnaxKbYKfXQmrj5DN\n+lR3j3SAWDpAONnOYLQzb1kmCGdnVjvYqL/vSWoLJBu131RPk4hFkYAo4qOzhsG8DdU1cLGsoQp4\nUdO+uZrKdlC5utejWYQ8OXQhafdl8bhs/B4Dt24T9CkdQWd7kpVrD9F+1km0WAdseBWWDkEghXz4\nJnL+DEPxEKdeOZt0zotlayQN78Q0EiCc9U1TM9ioKVo9Dk8JmMEcYTKLOgFRJEeGT+HnM1U9O41S\nFrhZXFk+g+K0by6mHnEqB1POcRE1BN0+g5zlwuOyyeS8ZJE4jobXbTEeD8GB9fSO9RLyZfG7Tb63\nbzcbfQNcYHgJD/cTTwRVmYUjJhprT62WncoY9Y0sNqdnH7dopnkKB4PPYvDVql+RRV2N9tH8SvNS\nTIq79o3+XBKVFat0XEsqdYJhuTHyppgSgS0FUir/PtPWicRDRJPtZE4t5482bmNbcB2pbKGZtiDo\nzyIp9p8qSIiSpnvSqCRRmsx6AqngFX86PcAWWTApbPYiK87uJ5NGffkWg/SolMOoacvMXW/rJ0N5\np9pSxvMK7mRJ2Xgm58V2NGS+O99EFazlgkgXSEGgPYnHZeHSJnvclppmlmKjRqR6miLkqC/hMJVF\nGUw5/gmH4ZpfF0EZWy42ksxeh3M6x62UPpZSTHTnKCjKZ8LjsnCH4tAZBdONWHWMnoufYUkojj9f\n9g6qrSgILKfom+6gVCFGHZ/BpHF+74symABSXF7X66IsHrV5KSnU1bfRQZWucEyJyAtO1XQvkfVO\netTnUTnVYCiOa+Ao5svnEHlpM2P7NqGP99B71eNsOP9Ftt7wCH5PMf/qSDExxRumvkACNS1sVFZ3\nkSUgijgcweEEGitqfm0G2Iny4utncQhkQV2FTdQfPUDjjDst1OhQ7sqctV14bRuvbufXQSoYdM1B\n1xwCXgO9M4o1tJSRowMMx0P4PTlk1kdouB8hBb7RJSzrChNL+zFtl1Kmo0aVeqawFvXNQhaVCWUt\nJLmcEPvrfn2hwLDZK3anEs7f+mhM391Cg+wuKn+h7HxZuSbg3FXHlLLCn0HzZUkcXsNQrINs3rdu\nMF+3FPRlOX/dQfp6xzgwtJSMpRM1vYSpb3qWo76CS4PZ28Au6mByOIXBA3i5ve5jnEJNkTpoXtej\ncoyi1j1d1O4qOxWDYoBWi0e36dv8EvryUxi7tzKWCBLP+Elm84YmeWVDLN1GoD2JJN+j1/RgUd/U\nzoJp1l3VcBA1qs+W1lrUwQQpMnwYjRW4uaruo8TyNw/N7cs3FYn6cqRResXTpaA4OKvSE4GQP81w\npItlq47B0iHiv7qcoUgXo/mAKq2g7WxLs+fQWoYSIWL5JEaljdWZOE6pmUz1vEp1Vc6LPJgAbGz2\n4OJKxGmufg7k/z2HxaeaOESxMNBL/ZkpycyNFCxH4NGUEyyodejZ6w9g7D2P8Z+8i/FkO0dGlxDL\nTJfrjiaDqlu86Z2wlK6FQvvTWveQxqhtXbXI5ETl6cBENOja4UF96ZbQPN03aiGI+mz1olMMylKW\n+NIIAX6PwbKOGCt6xlneP8z+owOMxkOMxEMT9lxSMlHol7FcKisINa+TwqggqqXcP4JKQg2VeTy6\nuHzzaifJxQ07VqF15qsNO+LCIoESzdZaglDApvyXXtdsfC4LvydHZzCB1j+sfO9MN4blJmPphLNe\nIoaPtOUmbbmVagKV5Kg2kAqfIUptgRRDjUblAmk2XjPBZLOTJH/Q0GNmUSn0w9Q3F1/I5FDBVDCk\nqVVZYKO+kHbJax0EQkj6OqNc8Lrn6dq2i+ED6wl2xJBSkLM1EqYXS+qTZEIOSsldTQrcpmgzXW2S\noWDSuROVaKhXLfKameYBaGwmwH+gc+5cHL6pfc4r4QYKBlvV9IMqxUsxbd4fSHLxBbuIhbs5PrgM\nl25jOhrhVIBYbrKA1UZl7KJUDmYTdXGr1QXXRI1EtXhqlJvmvaaCCUDnQgI8ilbBc69eulFp9Hpa\nZjYL7agAqcUhyYtaSy0RDn2BJG7NUV0sTA+mo2FPKaOQqMCoJv1dkAPVWnJxFDV61epH2AqmEoK8\ngD6HtbYFo/wtc/YOZx5BcY0wUMPrNCCEnBjd5JQMa5KitdZso1GWYlav1mnZOCqFX68erxVMUwjy\nIjrnzfXbEETtu/h4bSxQS/eYlCT19MlRnLqNU1/RXw4VPPsacD6tYJpGkAAP4eaauX8rlMbPy+Jd\nU81EB9NtyHTKr7nKFeZVs2Yqh0SNYDEa54bbkGASQpwN/Cuq4+UnpZRfLPO8B4HtqAvCs8CdUkpb\nCPEW4IeoJBHAI1LK+2Z4/bxEuIf308a35uOtADUyFbYkN7B4BLS1oFG+nL6eEaccYYpq9mQDjwuN\nC6Ze1BT53UBklmC6Ukr5s/zP/w78t5Tya/lguldKeV2F95m34bKNb+PmltNWR9RDEFiX//m1MAWc\nS0orisu7zzeGcsFUkyRASjkGjAkh3lXheT8r+fVZmFQHsaAuyGn+hDZ0PLxv3t87QfEPX/Dymwvv\nu8VOFDX6zEXrnVqY0wuiEMIF3AqUBtelQogXhBCPCSHmZsOnRtLcfKZPgUOosvnjNKaEerGTpfh/\ndYgzH0gw90LXHagp3v/mf38eWCWlTAshrgJ+AGyc43OoihQ3EuD7Z/QcshTXDaWdFzafgXNZiIRR\nSghQCYnTMT+pBZOnsHiq4vMqBpMQ4m7gdtSU9GopZVWyJSHE3wC9Uso7CvdJKZMlPz8uhNghhOiW\nUoarOeZcYvII0YU1A52gdjeLFmeCisEkpdwBM/ZsKfvNE0J8CLgCJhsxCCH6pZTD+Z8vQiVApgXS\nTIu7Fi0WOrVm8/qB51CJKAe17jtXSpkUQjwGfFBKOSSEKNi2JVEj2iNSyvuEEB8BPkyxIcXHpZTP\nNPIDtWhxpliQm7YtWjQjre2NFi0axBkNJiHE+4QQu/O33wghzi/zvNVCiN8KIfYLIR7Kp9xbtFhQ\nnOmR6RBwmZRyK3Af8ECZ530e+Hsp5UbUHt0H5+n8WrSomgWzZhJCdAIvSilXzvDYKNAvpXSEEJcA\nn5ZSXjnvJ9mixSyc6ZGplA8Bj0+9UwjRg9IBFoTDJ1Bmqy1aLCgWxNpDCPE24APAm870ubRoUS/z\nPjIJIe4WQuwSQuwUQiwVQmwBvg5cJ6WcZogjpRwHOoUQhXNdgSqUbNFiQTHvwSSl3CGl3CalvBAl\nlP4+cKuU8uAsL3sSuCn/8/tRNVEtWiwozmgCQgjxAHADyttCAKaU8qL8Y6WKijXAd1E+JbuAW6SU\n86VzbNGiKhZMNq9Fi2ZnIWXzWrRoalrB1KJFg2gFU4sWDaIVTC1aNIhWMLVo0SBawdSiRYNoBVOL\nFg3i/wHWvDSwPpmEiwAAAABJRU5ErkJggg==\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa372668>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## Numba vectorize\n", | |
"\n", | |
"An alternative to NumExpr." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 40, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"from numba import vectorize, complex64, boolean, jit\n", | |
"\n", | |
"@vectorize([boolean(complex64)])\n", | |
"def f(z):\n", | |
" return (z.real*z.real + z.imag*z.imag) < 4.0\n", | |
"\n", | |
"@vectorize([complex64(complex64, complex64)])\n", | |
"def g(z,c):\n", | |
" return z*z + c \n", | |
"\n", | |
"@jit\n", | |
"def mandelbrot_numpy(c, maxiter):\n", | |
" output = np.zeros(c.shape, np.int)\n", | |
" z = np.empty(c.shape, np.complex64)\n", | |
" for it in range(maxiter):\n", | |
" notdone = f(z)\n", | |
" output[notdone] = it\n", | |
" z[notdone] = g(z[notdone],c[notdone]) \n", | |
" output[output == maxiter-1] = 0\n", | |
" return output\n", | |
"\n", | |
"\n", | |
"def mandelbrot_set5(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width, dtype=np.float32)\n", | |
" r2 = np.linspace(ymin, ymax, height, dtype=np.float32)\n", | |
" c = np.empty((r1.shape[0], r2.shape[0]), dtype=np.complex64)\n", | |
" c[:,:] = r1 + r2[:,None]*1j\n", | |
" n3 = mandelbrot_numpy(c,maxiter)\n", | |
" return (r1,r2,n3.T) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Even faster!" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 629 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set5(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 17.8 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set5(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Check." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x8c303c8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_set = mandelbrot_set5\n", | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Try parallelism" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from numba import vectorize, complex64, boolean\n", | |
"\n", | |
"@vectorize([boolean(complex64)], target='parallel')\n", | |
"def f(z):\n", | |
" return (z.real*z.real + z.imag*z.imag) < 4.0\n", | |
"\n", | |
"@vectorize([complex64(complex64, complex64)], target='parallel')\n", | |
"def g(z,c):\n", | |
" return z*z + c \n", | |
"\n", | |
"def mandelbrot_numpy(c, maxiter):\n", | |
" output = np.empty(c.shape, np.int)\n", | |
" z = np.zeros(c.shape, np.complex64)\n", | |
" for it in range(maxiter):\n", | |
" notdone = f(z)\n", | |
" output[notdone] = it\n", | |
" z[notdone] = g(z[notdone],c[notdone]) \n", | |
" return output" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Not paying off." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 793 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 27.3 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We should parallelize the top loop. We can do it via guvectorize." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false | |
}, | |
"source": [ | |
"## Numba Guvectorize\n", | |
"\n", | |
"Let's try guvectorize too. It amounts to reusing the sequential code." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"from numba import jit, vectorize, guvectorize, float64, complex64, int32, float32\n", | |
"\n", | |
"@jit(int32(complex64, int32))\n", | |
"def mandelbrot(c,maxiter):\n", | |
" nreal = 0\n", | |
" real = 0\n", | |
" imag = 0\n", | |
" for n in range(maxiter):\n", | |
" nreal = real*real - imag*imag + c.real\n", | |
" imag = 2* real*imag + c.imag\n", | |
" real = nreal;\n", | |
" if real * real + imag * imag > 4.0:\n", | |
" return n\n", | |
" return 0\n", | |
"\n", | |
"@guvectorize([(complex64[:], int32[:], int32[:])], '(n),()->(n)',target='parallel')\n", | |
"def mandelbrot_numpy(c, maxit, output):\n", | |
" maxiter = maxit[0]\n", | |
" for i in range(c.shape[0]):\n", | |
" output[i] = mandelbrot(c[i],maxiter)\n", | |
" \n", | |
"def mandelbrot_set2(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width, dtype=np.float32)\n", | |
" r2 = np.linspace(ymin, ymax, height, dtype=np.float32)\n", | |
" c = r1 + r2[:,None]*1j\n", | |
" n3 = mandelbrot_numpy(c,maxiter)\n", | |
" return (r1,r2,n3.T) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Way faster than the sequential code compiled with Numba. " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 48, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10 loops, best of 3: 43 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 49, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 1.02 s per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Check" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 50, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xa847a20>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_set = mandelbrot_set2\n", | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Let's try Cuda target. Since there is a bug, we must pass the iteration max as an array too." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 51, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"import numpy as np\n", | |
"from numba import jit, vectorize, guvectorize, float64, complex64, int32, float32\n", | |
"\n", | |
"@jit(int32(complex64, int32))\n", | |
"def mandelbrot(c,maxiter):\n", | |
" creal = c.real\n", | |
" cimag = c.imag\n", | |
" real = creal\n", | |
" imag = cimag\n", | |
" for n in range(maxiter):\n", | |
" real2 = real*real\n", | |
" imag2 = imag*imag\n", | |
" if real2 + imag2 > 4.0:\n", | |
" return n\n", | |
" imag = 2* real*imag + cimag\n", | |
" real = real2 - imag2 + creal\n", | |
" \n", | |
" return 0\n", | |
"\n", | |
"@guvectorize([(complex64[:], int32[:], int32[:])], '(n),(n)->(n)', target='cuda')\n", | |
"def mandelbrot_numpy(c, maxit, output):\n", | |
" maxiter = maxit[0]\n", | |
" for i in range(c.shape[0]):\n", | |
" creal = c[i].real\n", | |
" cimag = c[i].imag\n", | |
" real = creal\n", | |
" imag = cimag\n", | |
" output[i] = 0\n", | |
" for n in range(maxiter):\n", | |
" real2 = real*real\n", | |
" imag2 = imag*imag\n", | |
" if real2 + imag2 > 4.0:\n", | |
" output[i] = n\n", | |
" break\n", | |
" imag = 2* real*imag + cimag\n", | |
" real = real2 - imag2 + creal\n", | |
" \n", | |
" \n", | |
"def mandelbrot_set2(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width, dtype=np.float32)\n", | |
" r2 = np.linspace(ymin, ymax, height, dtype=np.float32)\n", | |
" c = r1 + r2[:,None]*1j\n", | |
" n3 = np.empty(c.shape, int)\n", | |
" maxit = np.ones(c.shape, int) * maxiter\n", | |
" n3 = mandelbrot_numpy(c,maxit)\n", | |
" return (r1,r2,n3.T) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"Slightly slower." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 52, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"10 loops, best of 3: 53.7 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-2.0,0.5,-1.25,1.25,1000,1000,80)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 53, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"1 loops, best of 3: 906 ms per loop\n" | |
] | |
} | |
], | |
"source": [ | |
"%timeit mandelbrot_set2(-0.74877,-0.74872,0.06505,0.06510,1000,1000,2048)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Check" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 54, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/png": "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\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0xac85fd0>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"mandelbrot_set = mandelbrot_set2\n", | |
"mandelbrot_image(-2.0,0.5,-1.25,1.25,cmap='gnuplot2')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## TensorFlow\n", | |
"\n", | |
"Code from https://www.tensorflow.org/versions/master/tutorials/mandelbrot/index.html" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"Timings on my machine:\n", | |
"\n", | |
"5.29394221306\n", | |
"\n", | |
"34.6283330917" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": true | |
}, | |
"source": [ | |
"## PyOpenCl\n", | |
"\n", | |
"We reuse the boilerplate code from PyOpenCl documentation as much as possible." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 55, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"from __future__ import absolute_import\n", | |
"from __future__ import print_function\n", | |
"\n", | |
"import pyopencl as cl" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 56, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"%load_ext pyopencl.ipython_ext" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"We create a context interactively in order to select which device to use." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 57, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"[<pyopencl.Device 'Intel(R) Core(TM) i7-2760QM CPU @ 2.40GHz' on 'Intel(R) OpenCL' at 0x407ca20>]\n" | |
] | |
} | |
], | |
"source": [ | |
"ctx = cl.create_some_context(interactive=True)\n", | |
"devices = ctx.get_info(cl.context_info.DEVICES)\n", | |
"print(devices)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"The code is moving the heavy duty piece to a piece of C code thta gets compiled and run on the selected device.\n", | |
"\n", | |
"Input and output for that code is handled in Python." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 58, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot_gpu(q, maxiter):\n", | |
"\n", | |
" global ctx\n", | |
" \n", | |
" queue = cl.CommandQueue(ctx)\n", | |
" \n", | |
" output = np.empty(q.shape, dtype=np.uint16)\n", | |
"\n", | |
" prg = cl.Program(ctx, \"\"\"\n", | |
" #pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable\n", | |
" __kernel void mandelbrot(__global float2 *q,\n", | |
" __global ushort *output, ushort const maxiter)\n", | |
" {\n", | |
" int gid = get_global_id(0);\n", | |
" float nreal, real = 0;\n", | |
" float imag = 0;\n", | |
" output[gid] = 0;\n", | |
" for(int curiter = 0; curiter < maxiter; curiter++) {\n", | |
" nreal = real*real - imag*imag + q[gid].x;\n", | |
" imag = 2* real*imag + q[gid].y;\n", | |
" real = nreal;\n", | |
" if (real*real + imag*imag > 4.0f){\n", | |
" output[gid] = curiter;\n", | |
" break;\n", | |
" }\n", | |
" }\n", | |
" }\n", | |
" \"\"\").build()\n", | |
"\n", | |
" mf = cl.mem_flags\n", | |
" q_opencl = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=q)\n", | |
" output_opencl = cl.Buffer(ctx, mf.WRITE_ONLY, output.nbytes)\n", | |
"\n", | |
"\n", | |
" prg.mandelbrot(queue, output.shape, None, q_opencl,\n", | |
" output_opencl, np.uint16(maxiter))\n", | |
"\n", | |
" cl.enqueue_copy(queue, output, output_opencl).wait()\n", | |
" \n", | |
" return output\n", | |
"\n", | |
"def mandelbrot_set3(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width, dtype=np.float32)\n", | |
" r2 = np.linspace(ymin, ymax, height, dtype=np.float32)\n", | |
" c = r1 + r2[:,None]*1j\n", | |
" c = np.ravel(c)\n", | |
" n3 = mandelbrot_gpu(c,maxiter)\n", | |
" n3 = n3.reshape((width,height))\n", | |
" return (r1,r2,n3.T)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"Following code is faster on gpu, above code is faster on cpu." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 59, | |
"metadata": { | |
"collapsed": true | |
}, | |
"outputs": [], | |
"source": [ | |
"def mandelbrot_gpu(q, maxiter):\n", | |
"\n", | |
" global ctx\n", | |
" \n", | |
" queue = cl.CommandQueue(ctx)\n", | |
" \n", | |
" output = np.empty(q.shape, dtype=np.uint16)\n", | |
"\n", | |
" prg = cl.Program(ctx, \"\"\"\n", | |
" #pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable\n", | |
" __kernel void mandelbrot(__global float2 *q,\n", | |
" __global ushort *output, ushort const maxiter)\n", | |
" {\n", | |
" int gid = get_global_id(0);\n", | |
" float real = q[gid].x;\n", | |
" float imag = q[gid].y;\n", | |
" output[gid] = 0;\n", | |
" for(int curiter = 0; curiter < maxiter; curiter++) {\n", | |
" float real2 = real*real, imag2 = imag*imag;\n", | |
" if (real*real + imag*imag > 4.0f){\n", | |
" output[gid] = curiter;\n", | |
" return;\n", | |
" }\n", | |
" imag = 2* real*imag + q[gid].y;\n", | |
" real = real2 - imag2 + q[gid].x;\n", | |
" \n", | |
" }\n", | |
" }\n", | |
" \"\"\").build()\n", | |
"\n", | |
" mf = cl.mem_flags\n", | |
" q_opencl = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=q)\n", | |
" output_opencl = cl.Buffer(ctx, mf.WRITE_ONLY, output.nbytes)\n", | |
"\n", | |
"\n", | |
" prg.mandelbrot(queue, output.shape, None, q_opencl,\n", | |
" output_opencl, np.uint16(maxiter))\n", | |
"\n", | |
" cl.enqueue_copy(queue, output, output_opencl).wait()\n", | |
" \n", | |
" return output\n", | |
"\n", | |
"def mandelbrot_set3(xmin,xmax,ymin,ymax,width,height,maxiter):\n", | |
" r1 = np.linspace(xmin, xmax, width, dtype=np.float32)\n", | |
" r2 = np.linspace(ymin, ymax, height, dtype=np.float32)\n", | |
" c = r1 + r2[:,None]*1j\n", | |
" c = np.ravel(c)\n", | |
" n3 = mandelbrot_gpu(c,maxiter)\n", | |
" n3 = n3.reshape((width,height))\n", | |
" return (r1,r2,n3.T)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"This is way faster than the rest" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"collapsed": false | |
}, | |
"source": [ | |
"Let's check it is correct" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 60, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"C:\\Users\\IBM_ADMIN\\Anaconda3\\lib\\site-packages\\pyopencl\\__init__.py:206: CompilerWarning: Non-empty compiler output encountered. Set the environment variable PYOPENCL_COMPILER_OUTPUT=1 to see more.\n", | |
" \"to see more.\", CompilerWarning)\n" | |
] | |
}, | |
{ | |
"data": { | |
"image/png": "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 |