{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Using vectorized doubles\n", "(by Dario Izzo)\n", "\n", "In this notebook we show how to use vectorized gduals and their performance gain.\n", "\n", "Vectorized gduals compute on numpy arrays or iterables as polynomial coefficients. This allows to perform the same computation over $n$ different reference points without having to pay $n$ times for overheads during the polynomial multiplication algorithm powering audi and to make use of parallelization when possible." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing stuff" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from pyaudi import gdual_vdouble as gdualv\n", "from pyaudi import gdual_double as gduald\n", "from pyaudi import sin, cos\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The test case" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# This is a simple computation to be performed. Can be as complex as you want it to be. For this tutorial we use\n", "# a fairly simple case.\n", "def my_computation(x,y):\n", " return 1. / (x - y + 2.3)**10\n", "# These are the reference points where we want to compute our Taylor expansion.\n", "n = 2000\n", "order = 20\n", "x0 = np.linspace(0,1,n)\n", "y0 = np.linspace(-1,1,n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Operating on doubles\n", "To compute *my_computation* for all of the point defined above we need to loop over the data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- 7.584710597991943 seconds ---\n" ] } ], "source": [ "import time\n", "start_time = time.time()\n", "for i in range(n):\n", " x = gduald(x0[i], \"x\", order)\n", " y = gduald(x0[i], \"y\", order)\n", " res = my_computation(x,y)\n", "print(\"--- %s seconds ---\" % (time.time() - start_time))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Operating on vectorized doubles\n", "To compute *my_computation* for all of the point defined above we only perform once the computation directly on the numpy array" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "--- 0.20646977424621582 seconds ---\n" ] } ], "source": [ "import time\n", "start_time = time.time()\n", "x = gdualv(x0, \"x\", order)\n", "y = gdualv(y0, \"y\", order)\n", "res = my_computation(x,y)\n", "print(\"--- %s seconds ---\" % (time.time() - start_time))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A deeper look into the speedup\n", "The speedup obtained with respect to the algebraic computation performed on floats is dramatic and needs further explanation. It is important to recognize that:\n", "\n", " * Most of the speedup is due to inefficiencies in the gdual_double rather than tricks in the gdual_vdouble\n", " * The gdual_vdouble is able to exploit more efficiently the underlying CPU architecture and thus the results may vary greatly between architectures.\n", " * When operating with gdual_double the python overhead (i.e the interface between c++ code and python) is paid multiple times. Using gdual_vdouble this overhead is paid only once. As a limit case, there are situations where gdual_vdouble (at order 0) are more efficient than double (yes double, not gdual_double).\n", "\n", "Lets build a better picture of the speedup one can obtain varying the order and the number of points" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# We compute the speedup for different data sizes\n", "n = [1, 50, 100, 500, 1000, 5000, 10000]\n", "# And order of truncation\n", "order = np.arange(1, 20, 2)\n", "speedup = np.zeros([len(n),len(order)])" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data size: \n", "1, 50, 100, 500, 1000, 5000, 10000, " ] } ], "source": [ "# We perform again the computations and measure speedup for each order, data size value.\n", "print(\"Data size: \")\n", "for i in range(len(n)):\n", " # We define the points\n", " x0 = np.linspace(0,1,n[i])\n", " y0 = np.linspace(-1,1,n[i])\n", " for j in range(len(order)):\n", " # First we compute on doubles for all points\n", " start_time = time.time()\n", " for k in range(n[i]):\n", " x = gduald(x0[k], \"x\", int(order[j]))\n", " y = gduald(x0[k], \"y\", int(order[j]))\n", " dummy = my_computation(x,y)\n", " res = (time.time() - start_time)\n", " start_time = time.time()\n", " x = gdualv(x0, \"x\", int(order[j]))\n", " y = gdualv(y0, \"y\", int(order[j]))\n", " dummy = my_computation(x,y)\n", " res = (res / (time.time() - start_time))\n", " speedup[i,j] = res\n", " print(n[i], end = \", \")\n", "\n" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# And we plot the results\n", "from mpl_toolkits.mplot3d import Axes3D\n", "import matplotlib.pyplot as plt\n", "from matplotlib import cm\n", "from matplotlib.ticker import LinearLocator, FormatStrFormatter\n", "import numpy as np\n", "\n", "# Make data.\n", "X, Y = np.meshgrid(order, n)\n", "Z = speedup\n", "\n", "# Prepare the plot\n", "fig = plt.figure(figsize=(12, 9))\n", "ax = fig.gca(projection='3d')\n", "\n", "# Plot the surface.\n", "surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,\n", " linewidth=0, antialiased=False)\n", "ax.set_xlabel('gdual order')\n", "ax.set_ylabel('data size')\n", "ax.set_zlabel('Speedup')\n", "plt.xlim([1,19])\n", "plt.ylim([0,10000])\n", "plt.show()\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }