From: John Larkin on
Hi,

Does anybody have an estimate of how long it might take to do a
million-point FFT on a modern Intel PC? Google is no help.

Our data would be from a 16-bit ADC, but I get the impression that, on
an Intel machine, a floating-point fft might be faster than
fixed-point.

John

From: linnix on
On Apr 18, 7:42 pm, John Larkin
<jjlar...(a)highNOTlandTHIStechnologyPART.com> wrote:
> Hi,
>
> Does anybody have an estimate of how long it might take to do a
> million-point FFT on a modern Intel PC? Google is no help.
>
> Our data would be from a 16-bit ADC, but I get the impression that, on
> an Intel machine, a floating-point fft might be faster than
> fixed-point.
>
> John

If I did the test right, 15 to 20 seconds on a Pentium 200.
From: Antonio Pasini on
Il 19/04/2008 4.42, John Larkin ha scritto:
> Hi,
>
> Does anybody have an estimate of how long it might take to do a
> million-point FFT on a modern Intel PC? Google is no help.
>
> Our data would be from a 16-bit ADC, but I get the impression that, on
> an Intel machine, a floating-point fft might be faster than
> fixed-point.
>
> John
>

Have a look at http://www.fftw.org; it's one of the fastest free fft
library on PC. They maintain an huge benchmark suite.


From: Andrew Holme on

"Antonio Pasini" <removethis_antonio.pasini(a)alice.it> wrote in message
news:480999E2.1010602(a)alice.it...
> Il 19/04/2008 4.42, John Larkin ha scritto:
>> Hi,
>>
>> Does anybody have an estimate of how long it might take to do a
>> million-point FFT on a modern Intel PC? Google is no help.
>>
>> Our data would be from a 16-bit ADC, but I get the impression that, on
>> an Intel machine, a floating-point fft might be faster than
>> fixed-point.
>>
>> John
>>
>
> Have a look at http://www.fftw.org; it's one of the fastest free fft
> library on PC. They maintain an huge benchmark suite.
>

I use FFTW. A one-million point FFT in double precision arithmetic takes
172 ms on my 1.7 GHz Pentium.

See code and output below.


Time = 172 ms
0, -2.8582e-011
1, -2.8871e-011
2, -2.9773e-011
3, -3.1409e-011
4, -3.4026e-011
5, -3.8109e-011
6, -4.4659e-011
7, -5.6043e-011
8, -7.9395e-011
9, -1.5043e-010
10, 0.5
11, 1.3611e-010
12, 6.4959e-011
13, 4.1423e-011
14, 2.9773e-011
15, 2.2866e-011
16, 1.8322e-011
17, 1.5123e-011
18, 1.276e-011
19, 1.0951e-011
Press any key to continue


#include "fftw3.h"
#include <windows.h>
#include <stdio.h>
#include <math.h>

#define LEN 1000000

fftw_complex *t, *f;
fftw_plan t2f;

#define PI 3.1415926535

int main()
{
int i;

t = (fftw_complex *) fftw_malloc(sizeof(fftw_complex) * LEN);
f = (fftw_complex *) fftw_malloc(sizeof(fftw_complex) * LEN);

t2f = fftw_plan_dft_1d(LEN, t, f, FFTW_FORWARD, FFTW_ESTIMATE);

for (i=0; i<LEN; i++) {
t[i][0] = cos(2*PI*10*i/LEN);
t[i][1] = 0;
}

long start = GetTickCount();
fftw_execute(t2f);
printf("Time = %d ms\n", GetTickCount() - start);

for (i=0; i<20; i++) printf("%d, %0.5g\n", i, f[i][0]/LEN);

fftw_destroy_plan(t2f);
fftw_free(t);
fftw_free(f);

return 0;
}




From: John Larkin on
On Sat, 19 Apr 2008 09:19:04 +0100, "Andrew Holme" <ah(a)nospam.co.uk>
wrote:

>
>"Antonio Pasini" <removethis_antonio.pasini(a)alice.it> wrote in message
>news:480999E2.1010602(a)alice.it...
>> Il 19/04/2008 4.42, John Larkin ha scritto:
>>> Hi,
>>>
>>> Does anybody have an estimate of how long it might take to do a
>>> million-point FFT on a modern Intel PC? Google is no help.
>>>
>>> Our data would be from a 16-bit ADC, but I get the impression that, on
>>> an Intel machine, a floating-point fft might be faster than
>>> fixed-point.
>>>
>>> John
>>>
>>
>> Have a look at http://www.fftw.org; it's one of the fastest free fft
>> library on PC. They maintain an huge benchmark suite.
>>
>
>I use FFTW. A one-million point FFT in double precision arithmetic takes
>172 ms on my 1.7 GHz Pentium.


Cool! I had no idea if it was milliseconds or minutes. We'd only have
to do it every second or so, so we have lots of time.

(I'm getting ready to make a proposal/presentation next week, and I
have to simulate intelligence.)

Thanks, guys.

John




>
>See code and output below.
>
>
>Time = 172 ms
>0, -2.8582e-011
>1, -2.8871e-011
>2, -2.9773e-011
>3, -3.1409e-011
>4, -3.4026e-011
>5, -3.8109e-011
>6, -4.4659e-011
>7, -5.6043e-011
>8, -7.9395e-011
>9, -1.5043e-010
>10, 0.5
>11, 1.3611e-010
>12, 6.4959e-011
>13, 4.1423e-011
>14, 2.9773e-011
>15, 2.2866e-011
>16, 1.8322e-011
>17, 1.5123e-011
>18, 1.276e-011
>19, 1.0951e-011
>Press any key to continue
>
>
>#include "fftw3.h"
>#include <windows.h>
>#include <stdio.h>
>#include <math.h>
>
>#define LEN 1000000
>
>fftw_complex *t, *f;
>fftw_plan t2f;
>
>#define PI 3.1415926535
>
>int main()
>{
> int i;
>
> t = (fftw_complex *) fftw_malloc(sizeof(fftw_complex) * LEN);
> f = (fftw_complex *) fftw_malloc(sizeof(fftw_complex) * LEN);
>
> t2f = fftw_plan_dft_1d(LEN, t, f, FFTW_FORWARD, FFTW_ESTIMATE);
>
> for (i=0; i<LEN; i++) {
> t[i][0] = cos(2*PI*10*i/LEN);
> t[i][1] = 0;
> }
>
> long start = GetTickCount();
> fftw_execute(t2f);
> printf("Time = %d ms\n", GetTickCount() - start);
>
> for (i=0; i<20; i++) printf("%d, %0.5g\n", i, f[i][0]/LEN);
>
> fftw_destroy_plan(t2f);
> fftw_free(t);
> fftw_free(f);
>
> return 0;
>}
>
>
>