[Numpy-discussion] strange runtimes of numpy fft

Max Linke max_linke at gmx.de
Thu Nov 14 11:18:26 EST 2013


Hi

I noticed some strange scaling behavior of the fft runtime. For most
array-sizes the fft will be calculated in a couple of seconds, even for
very large ones. But there are some array sizes in between where it will
take about ~20 min (e.g. 400000). This is really odd for me because an
array with 10 million entries is transformed in ~2s. Is this typical for
numpy?

I attached a plot and an ipynb to reproduce and illustrate it.

best Max
-------------- next part --------------
{
 "metadata": {
  "name": ""
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "%matplotlib inline\n",
      "import numpy as np\n",
      "import matplotlib.pyplot as plt\n",
      "import timeit"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 1
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "x_length = np.logspace(2, 7, 25)\n",
      "times = np.empty((25,2))\n",
      "for i, length in enumerate(x_length):\n",
      "    setup = 'import numpy as np\\ntrj=np.random.uniform(low=-1,high=1,size=%i)' % (length)\n",
      "    times[i] = timeit.repeat(stmt='fft=np.fft.fft(trj)', setup=setup,\n",
      "                             repeat=2, number=2)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 2
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.plot(x_length, times[:, 0], marker='o');\n",
      "plt.plot(x_length, times[:, 1], marker='o');\n",
      "#plt.yscale('log');\n",
      "plt.xscale('log');\n",
      "plt.xlabel('elements in array');\n",
      "plt.ylabel('execution time in seconds');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x44f7650>"
       ]
      }
     ],
     "prompt_number": 34
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "np.__version__"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 4,
       "text": [
        "'1.8.0'"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Check if fft produces correct results"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "trj = np.sin(np.arange(x_length[-1]))\n",
      "fft = np.fft.fft(trj)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.plot(np.abs(fft) ** 2)\n",
      "plt.title('fourier spectra of sin(x)');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\ngg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x39a2b50>"
       ]
      }
     ],
     "prompt_number": 21
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "acf = np.fft.ifft(np.abs(fft) **2) / x_length[-1]\n",
      "acf = np.real(acf[:acf.size / 2] / acf[0])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 9
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.plot(acf, marker='o');\n",
      "plt.xlim(0, 10)\n",
      "plt.title('acf of sin(x)');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n",
       "text": [
        "<matplotlib.figure.Figure at 0x12b31750>"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "trj = np.random.uniform(low=-1, high=1, size=x_length[-1])\n",
      "fft = np.fft.fft(trj)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 11
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.plot(np.abs(fft) ** 2)\n",
      "plt.title('fourier spectra of noise');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\nAElFTkSuQmCC\n",
       "text": [
        "<matplotlib.figure.Figure at 0x3e59990>"
       ]
      }
     ],
     "prompt_number": 15
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "acf = np.fft.ifft(np.abs(fft) ** 2) / x_length[-1]\n",
      "acf = np.real(acf[:acf.size / 2] / acf[0])"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 13
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "plt.plot(acf, marker='o');\n",
      "plt.xlim(0, 10);\n",
      "plt.title('acf of noise');"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n7e5nFQAAAABJRU5ErkJggg==\n",
       "text": [
        "<matplotlib.figure.Figure at 0x3a60110>"
       ]
      }
     ],
     "prompt_number": 18
    }
   ],
   "metadata": {}
  }
 ]
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fft.png
Type: image/png
Size: 15564 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20131114/cae7e80f/attachment.png>


More information about the NumPy-Discussion mailing list