Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FFT App Implementation (WIP) #12

Open
wants to merge 24 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
01c50a4
Add Grappa_memcpy, move memset out to Array.hpp, add test cases, upda…
bholt Nov 14, 2012
036c11b
Add FFTW for reference (and possibly using it as subroutine)
bholt Nov 13, 2012
15750fa
Skeleton of grappa fft, doing random generation of complex doubles.
bholt Nov 13, 2012
e8672a9
Started implementing fft as forall_local (intermediate)
bholt Nov 14, 2012
1528116
More work on FFT, need forall_local to support extra argument.
bholt Nov 14, 2012
42e4a7f
Implemented most of FFT (without compiling) but need memcpy.
bholt Nov 14, 2012
cd5a10d
Make forall_local_async work for complex<double>
bholt Nov 14, 2012
48c9506
First complete *running* version of FFT, not verified correct.
bholt Nov 14, 2012
8a2ea4c
Ignore autogenerated fftw files.
bholt Nov 16, 2012
5fe2128
Verify Grappa FFT against local FFTW (Grappa impl. is incorrect)
bholt Nov 16, 2012
5e252e0
Fix syncronization for forall_local_blocking.
bholt Nov 16, 2012
b91e485
Working version of FFT (was missing weird bit reversing stuff)
bholt Nov 16, 2012
bf6d6c8
Clean up FFT stuff (do real verify, get rid of extra prints)
bholt Nov 16, 2012
8c03ac1
Fix size printout.
bholt Nov 19, 2012
9cebf12
Be less picky in verify.
bholt Nov 19, 2012
3c82d3c
Fix dump_stats call.
bholt Nov 19, 2012
19a295f
fft: (exp. scripts)
bholt Nov 19, 2012
b4b4c50
FFT performance metric (scales as O(N*log(N))
bholt Nov 24, 2012
8194941
Implement MPI version of FFT with FFTW-MPI.
bholt Nov 24, 2012
1da29be
Extra include for compiling on OSX.
bholt Nov 27, 2012
870ec8b
Minor changes to MPI FFT output.
bholt Nov 27, 2012
85f8ba8
Starting version that uses FFTW locally.
bholt Nov 27, 2012
b595fb3
Start writing version which uses FFTW locally.
bholt Dec 6, 2012
be14bab
X10 FFT implementation (example of PGAS using FFTW).
bholt Dec 6, 2012
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 15 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,18 @@ config.cache
^/tools*

# documentation
/system/doxygen/*
/system/doxygen/*

# fftw
/applications/fft/fftw
/applications/fft/fftw-3.3.2/Makefile
/applications/fft/fftw-3.3.2/*/Makefile
/applications/fft/fftw-3.3.2/*/*/Makefile
/applications/fft/fftw-3.3.2/*/*/*/Makefile
/applications/fft/fftw-3.3.2/*/*/*/*/Makefile
*.f03
libtool
/applications/fft/fftw-3.3.2/tests/bench
applications/fft/fftw-3.3.2/tools/fftw-wisdom-to-conf
applications/fft/fftw-3.3.2/tools/fftw_wisdom.1

14 changes: 14 additions & 0 deletions applications/fft/fftw-3.3.2/AUTHORS
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
Authors of FFTW (reachable at [email protected]):

Matteo Frigo <[email protected]>
Stevenj G. Johnson <[email protected]>

Stefan Kral <[email protected]> wrote genfft-k7/*.ml*, which was
added in fftw-3.0 and removed in fftw-3.2.

Support for the Cell Broadband Engine was graciously donated by the
IBM Austin Research Lab, which was added in fftw-3.2 and removed in
fftw-3.3.

Support for MIPS64 paired-single SIMD instructions was graciously
donated by CodeSourcery, Inc.
65 changes: 65 additions & 0 deletions applications/fft/fftw-3.3.2/CONVENTIONS
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
Code conventions used internally by fftw3 (not in API):

LEARN FROM THE MASTERS: read Ken Thompson's C compiler in Plan 9.
Avoid learning from C++/Java programs.

INDENTATION: K&R, 5 spaces/tab. In case of doubt, indent -kr -i5.

NAMES: keep them short. Shorter than you think. The Bible was written
without vowels. Don't outsmart the Bible.

Common names:

R : real type, aka fftw_real
E : real type for local variables (possibly extra precision)
C : complex type
sz : size
vecsz : vector size
is, os : input/output stride
ri, ii : real/imag input (complex data)
ro, io : real/imag output (complex data)
I, O : real input/output (real data)
A : assert
CK : check
S : solver, defined internally to each solver file
P : plan, defined internally to each solver file
k : codelet
X(...) : used for mangling of external names (see below)
K(...) : floating-point constant, in E precision

If a name is used often and must have the form fftw_foo to avoid
namespace pollution, #define FOO fftw_foo and use the short name.

Leave that hungarian crap to MS. foo_t counts as hungarian: use
foo instead. foo is lowercase so that it does not look like a DOS
program. Exception: typedef struct foo_s {...} foo; instead of
typedef struct foo {...} foo; for C++ compatibility.

NAME MANGLING: use X(foo) for external names instead of fftw_foo.
X(foo) expands to fftwf_foo or fftw_foo, depending on the
precision. (Unfortunately, this is a ugly form of hungarian
notation. Grrr...) Names that are not exported do not need to be
mangled.

REPEATED CODE: favor a table. E.g., do not write

foo("xxx", 1);
foo("yyy", 2);
foo("zzz", -1);

Instead write

struct { const char *nam, int arg } footab[] = {
{ "xxx", 1 },
{ "yyy", 2 },
{ "zzz", -1 }
};

and loop over footab. Rationale: it saves code space.
Similarly, replace a switch statement with a table whenever
possible.

C++: The code should compile as a C++ program. Run the code through
gcc -xc++ . The extra C++ restrictions are unnecessary, of
course, but this will save us from a flood of complaints when
we release the code.
340 changes: 340 additions & 0 deletions applications/fft/fftw-3.3.2/COPYING

Large diffs are not rendered by default.

19 changes: 19 additions & 0 deletions applications/fft/fftw-3.3.2/COPYRIGHT
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/*
* Copyright (c) 2003, 2007-11 Matteo Frigo
* Copyright (c) 2003, 2007-11 Massachusetts Institute of Technology
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
Loading