This commit is contained in:
2025-07-12 12:17:44 +03:00
parent c759f60ff7
commit 792e1b937a
3507 changed files with 492613 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
AM_CPPFLAGS = -I $(top_srcdir)
bin_SCRIPTS = fftw-wisdom-to-conf
bin_PROGRAMS = fftw@PREC_SUFFIX@-wisdom
BUILT_SOURCES = fftw-wisdom-to-conf fftw@PREC_SUFFIX@-wisdom.1
EXTRA_DIST = fftw-wisdom-to-conf.in
dist_man_MANS = fftw-wisdom-to-conf.1 fftw@PREC_SUFFIX@-wisdom.1
EXTRA_MANS = fftw_wisdom.1.in
fftw@PREC_SUFFIX@-wisdom.1: fftw_wisdom.1
rm -f $@
cp fftw_wisdom.1 $@
if THREADS
fftw@PREC_SUFFIX@_wisdom_CFLAGS = $(PTHREAD_CFLAGS)
if !COMBINED_THREADS
LIBFFTWTHREADS = $(top_builddir)/threads/libfftw3@PREC_SUFFIX@_threads.la
endif
else
if OPENMP
fftw@PREC_SUFFIX@_wisdom_CFLAGS = $(OPENMP_CFLAGS)
LIBFFTWTHREADS = $(top_builddir)/threads/libfftw3@PREC_SUFFIX@_omp.la
endif
endif
fftw@PREC_SUFFIX@_wisdom_SOURCES = fftw-wisdom.c
fftw@PREC_SUFFIX@_wisdom_LDADD = $(top_builddir)/tests/bench-bench.o \
$(top_builddir)/tests/bench-fftw-bench.o $(LIBFFTWTHREADS) \
$(top_builddir)/libfftw3@PREC_SUFFIX@.la \
$(top_builddir)/libbench2/libbench2.a $(THREADLIBS)

View File

@@ -0,0 +1,782 @@
# Makefile.in generated by automake 1.16.3 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2020 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = fftw@PREC_SUFFIX@-wisdom$(EXEEXT)
subdir = tools
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/acx_mpi.m4 \
$(top_srcdir)/m4/acx_pthread.m4 \
$(top_srcdir)/m4/ax_cc_maxopt.m4 \
$(top_srcdir)/m4/ax_check_compiler_flags.m4 \
$(top_srcdir)/m4/ax_compiler_vendor.m4 \
$(top_srcdir)/m4/ax_gcc_aligns_stack.m4 \
$(top_srcdir)/m4/ax_gcc_version.m4 \
$(top_srcdir)/m4/ax_openmp.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES = fftw_wisdom.1 fftw-wisdom-to-conf
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" \
"$(DESTDIR)$(man1dir)"
PROGRAMS = $(bin_PROGRAMS)
am_fftw@PREC_SUFFIX@_wisdom_OBJECTS = \
fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.$(OBJEXT)
fftw@PREC_SUFFIX@_wisdom_OBJECTS = \
$(am_fftw@PREC_SUFFIX@_wisdom_OBJECTS)
am__DEPENDENCIES_1 =
fftw@PREC_SUFFIX@_wisdom_DEPENDENCIES = \
$(top_builddir)/tests/bench-bench.o \
$(top_builddir)/tests/bench-fftw-bench.o $(LIBFFTWTHREADS) \
$(top_builddir)/libfftw3@PREC_SUFFIX@.la \
$(top_builddir)/libbench2/libbench2.a $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
fftw@PREC_SUFFIX@_wisdom_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(fftw@PREC_SUFFIX@_wisdom_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
SCRIPTS = $(bin_SCRIPTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = \
./$(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(fftw@PREC_SUFFIX@_wisdom_SOURCES)
DIST_SOURCES = $(fftw@PREC_SUFFIX@_wisdom_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
man1dir = $(mandir)/man1
NROFF = nroff
MANS = $(dist_man_MANS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
am__DIST_COMMON = $(dist_man_MANS) $(srcdir)/Makefile.in \
$(srcdir)/fftw-wisdom-to-conf.in $(srcdir)/fftw_wisdom.1.in \
$(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCA = @ALLOCA@
ALTIVEC_CFLAGS = @ALTIVEC_CFLAGS@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AR = @AR@
AS = @AS@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AVX2_CFLAGS = @AVX2_CFLAGS@
AVX512_CFLAGS = @AVX512_CFLAGS@
AVX_128_FMA_CFLAGS = @AVX_128_FMA_CFLAGS@
AVX_CFLAGS = @AVX_CFLAGS@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CHECK_PL_OPTS = @CHECK_PL_OPTS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CYGPATH_W = @CYGPATH_W@
C_FFTW_R2R_KIND = @C_FFTW_R2R_KIND@
C_MPI_FINT = @C_MPI_FINT@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DLLTOOL = @DLLTOOL@
DSYMUTIL = @DSYMUTIL@
DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
FGREP = @FGREP@
FLIBS = @FLIBS@
GREP = @GREP@
INDENT = @INDENT@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
KCVI_CFLAGS = @KCVI_CFLAGS@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBQUADMATH = @LIBQUADMATH@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MPICC = @MPICC@
MPILIBS = @MPILIBS@
MPIRUN = @MPIRUN@
NEON_CFLAGS = @NEON_CFLAGS@
NM = @NM@
NMEDIT = @NMEDIT@
OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OCAMLBUILD = @OCAMLBUILD@
OPENMP_CFLAGS = @OPENMP_CFLAGS@
OTOOL = @OTOOL@
OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
POW_LIB = @POW_LIB@
PRECISION = @PRECISION@
PREC_SUFFIX = @PREC_SUFFIX@
PTHREAD_CC = @PTHREAD_CC@
PTHREAD_CFLAGS = @PTHREAD_CFLAGS@
PTHREAD_LIBS = @PTHREAD_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHARED_VERSION_INFO = @SHARED_VERSION_INFO@
SHELL = @SHELL@
SSE2_CFLAGS = @SSE2_CFLAGS@
STACK_ALIGN_CFLAGS = @STACK_ALIGN_CFLAGS@
STRIP = @STRIP@
THREADLIBS = @THREADLIBS@
VERSION = @VERSION@
VSX_CFLAGS = @VSX_CFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
ac_ct_F77 = @ac_ct_F77@
acx_pthread_config = @acx_pthread_config@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AM_CPPFLAGS = -I $(top_srcdir)
bin_SCRIPTS = fftw-wisdom-to-conf
BUILT_SOURCES = fftw-wisdom-to-conf fftw@PREC_SUFFIX@-wisdom.1
EXTRA_DIST = fftw-wisdom-to-conf.in
dist_man_MANS = fftw-wisdom-to-conf.1 fftw@PREC_SUFFIX@-wisdom.1
EXTRA_MANS = fftw_wisdom.1.in
@OPENMP_TRUE@@THREADS_FALSE@fftw@PREC_SUFFIX@_wisdom_CFLAGS = $(OPENMP_CFLAGS)
@THREADS_TRUE@fftw@PREC_SUFFIX@_wisdom_CFLAGS = $(PTHREAD_CFLAGS)
@COMBINED_THREADS_FALSE@@THREADS_TRUE@LIBFFTWTHREADS = $(top_builddir)/threads/libfftw3@PREC_SUFFIX@_threads.la
@OPENMP_TRUE@@THREADS_FALSE@LIBFFTWTHREADS = $(top_builddir)/threads/libfftw3@PREC_SUFFIX@_omp.la
fftw@PREC_SUFFIX@_wisdom_SOURCES = fftw-wisdom.c
fftw@PREC_SUFFIX@_wisdom_LDADD = $(top_builddir)/tests/bench-bench.o \
$(top_builddir)/tests/bench-fftw-bench.o $(LIBFFTWTHREADS) \
$(top_builddir)/libfftw3@PREC_SUFFIX@.la \
$(top_builddir)/libbench2/libbench2.a $(THREADLIBS)
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
.SUFFIXES:
.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tools/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu tools/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
fftw_wisdom.1: $(top_builddir)/config.status $(srcdir)/fftw_wisdom.1.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
fftw-wisdom-to-conf: $(top_builddir)/config.status $(srcdir)/fftw-wisdom-to-conf.in
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do echo "$$p $$p"; done | \
sed 's/$(EXEEXT)$$//' | \
while read p p1; do if test -f $$p \
|| test -f $$p1 \
; then echo "$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n;h' \
-e 's|.*|.|' \
-e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) files[d] = files[d] " " $$1; \
else { print "f", $$3 "/" $$4, $$1; } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-e 's/$$/$(EXEEXT)/' \
`; \
test -n "$$list" || exit 0; \
echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
echo " rm -f" $$list; \
rm -f $$list || exit $$?; \
test -n "$(EXEEXT)" || exit 0; \
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
fftw@PREC_SUFFIX@-wisdom$(EXEEXT): $(fftw@PREC_SUFFIX@_wisdom_OBJECTS) $(fftw@PREC_SUFFIX@_wisdom_DEPENDENCIES) $(EXTRA_fftw@PREC_SUFFIX@_wisdom_DEPENDENCIES)
@rm -f fftw@PREC_SUFFIX@-wisdom$(EXEEXT)
$(AM_V_CCLD)$(fftw@PREC_SUFFIX@_wisdom_LINK) $(fftw@PREC_SUFFIX@_wisdom_OBJECTS) $(fftw@PREC_SUFFIX@_wisdom_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
$(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
done | \
sed -e 'p;s,.*/,,;n' \
-e 'h;s|.*|.|' \
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
if (++n[d] == $(am__install_max)) { \
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
else { print "f", d "/" $$4, $$1 } } \
END { for (d in files) print "f", d, files[d] }' | \
while read type dir files; do \
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
test -z "$$files" || { \
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
} \
; done
uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
files=`for p in $$list; do echo "$$p"; done | \
sed -e 's,.*/,,;$(transform)'`; \
dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.o: fftw-wisdom.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fftw@PREC_SUFFIX@_wisdom_CFLAGS) $(CFLAGS) -MT fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.o -MD -MP -MF $(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Tpo -c -o fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.o `test -f 'fftw-wisdom.c' || echo '$(srcdir)/'`fftw-wisdom.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Tpo $(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftw-wisdom.c' object='fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fftw@PREC_SUFFIX@_wisdom_CFLAGS) $(CFLAGS) -c -o fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.o `test -f 'fftw-wisdom.c' || echo '$(srcdir)/'`fftw-wisdom.c
fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.obj: fftw-wisdom.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fftw@PREC_SUFFIX@_wisdom_CFLAGS) $(CFLAGS) -MT fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.obj -MD -MP -MF $(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Tpo -c -o fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.obj `if test -f 'fftw-wisdom.c'; then $(CYGPATH_W) 'fftw-wisdom.c'; else $(CYGPATH_W) '$(srcdir)/fftw-wisdom.c'; fi`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Tpo $(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fftw-wisdom.c' object='fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(fftw@PREC_SUFFIX@_wisdom_CFLAGS) $(CFLAGS) -c -o fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.obj `if test -f 'fftw-wisdom.c'; then $(CYGPATH_W) 'fftw-wisdom.c'; else $(CYGPATH_W) '$(srcdir)/fftw-wisdom.c'; fi`
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
install-man1: $(dist_man_MANS)
@$(NORMAL_INSTALL)
@list1=''; \
list2='$(dist_man_MANS)'; \
test -n "$(man1dir)" \
&& test -n "`echo $$list1$$list2`" \
|| exit 0; \
echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \
$(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \
{ for i in $$list1; do echo "$$i"; done; \
if test -n "$$list2"; then \
for i in $$list2; do echo "$$i"; done \
| sed -n '/\.1[a-z]*$$/p'; \
fi; \
} | while read p; do \
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \
sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \
sed 'N;N;s,\n, ,g' | { \
list=; while read file base inst; do \
if test "$$base" = "$$inst"; then list="$$list $$file"; else \
echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \
$(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \
fi; \
done; \
for i in $$list; do echo "$$i"; done | $(am__base_list) | \
while read files; do \
test -z "$$files" || { \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \
done; }
uninstall-man1:
@$(NORMAL_UNINSTALL)
@list=''; test -n "$(man1dir)" || exit 0; \
files=`{ for i in $$list; do echo "$$i"; done; \
l2='$(dist_man_MANS)'; for i in $$l2; do echo "$$i"; done | \
sed -n '/\.1[a-z]*$$/p'; \
} | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
-e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
tags TAGS:
ctags CTAGS:
cscope cscopelist:
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) check-am
all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(MANS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-am
install-exec: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f ./$(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am: install-man
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am: install-binPROGRAMS install-binSCRIPTS
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man: install-man1
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/fftw@PREC_SUFFIX@_wisdom-fftw-wisdom.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS uninstall-man
uninstall-man: uninstall-man1
.MAKE: all check install install-am install-exec install-strip
.PHONY: all all-am am--depfiles check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool cscopelist-am ctags-am distclean \
distclean-compile distclean-generic distclean-libtool distdir \
dvi dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-binSCRIPTS install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-man1 install-pdf \
install-pdf-am install-ps install-ps-am install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags-am uninstall uninstall-am uninstall-binPROGRAMS \
uninstall-binSCRIPTS uninstall-man uninstall-man1
.PRECIOUS: Makefile
fftw@PREC_SUFFIX@-wisdom.1: fftw_wisdom.1
rm -f $@
cp fftw_wisdom.1 $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@@ -0,0 +1,91 @@
.\"
.\" Copyright (c) 2003, 2007-14 Matteo Frigo
.\" Copyright (c) 2003, 2007-14 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
.\"
.TH FFTW-WISDOM-TO-CONF 1 "February, 2003" "fftw" "fftw"
.SH NAME
fftw\-wisdom\-to\-conf \- generate FFTW wisdom (pre-planned transforms)
.SH SYNOPSIS
\fBfftw\-wisdom\-to\-conf\fR [< \fIINPUT\fR] [> \fIOUTPUT\fR]
.SH DESCRIPTION
.PP
.\" Add any additional description here
.I fftw\-wisdom\-to\-conf
is a utility to generate C
.B configuration
routines from FFTW
.B wisdom
files, where the latter contain saved information about how to
optimally compute (Fourier) transforms of various sizes. A
configuration routine is a C subroutine that you link into your
program, replacing a routine of the same name in the FFTW library,
that determines which parts of FFTW are callable by your program.
The reason to do this is that, if you only need transforms of a
limited set of sizes and types, and if you are statically linking your
program, then using a configuration file generated from wisdom for
those types can substantially reduce the size of your executable.
(Otherwise, because of FFTW's dynamic nature, all of FFTW's transform
code must be linked into any program using FFTW.)
FFTW is a free library to compute discrete Fourier transforms in one
or more dimensions, for arbitrary sizes, and of both real and complex
data, among other related operations. More information on FFTW can be
found at the FFTW home page:
.I http://www.fftw.org
.I fftw\-wisdom\-to\-conf
reads wisdom from standard input and writes the configuration to
standard output. It can easily be combined with the
.I fftw\-wisdom
tool, for example:
fftw\-wisdom \-n \-o wisdom cof1024 cob1024
.br
fftw\-wisdom\-to\-conf < wisdom > conf.c
will create a configuration "conf.c" containing only those parts of
FFTW needed for the optimized complex forwards and backwards
out-of-place transforms of size 1024 (also saving the wisdom itself in
"wisdom").
Alternatively, you can run your actual program, export wisdom for all
plans that were created (ideally in FFTW_PATIENT or FFTW_EXHAUSTIVE
mode), use this as input for \fIfftw\-wisdom\-to\-conf\fR,
and then re-link your program with the resulting configuration routine.
Note that the configuration routine does not contain the wisdom, only
the routines necessary to implement the wisdom, so your program should
also import the wisdom in order to benefit from the pre-optimized
plans.
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Display help on the command-line options and usage.
.TP
\fB\-V\fR, \fB\-\-version\fR
Print the version number and copyright information.
.SH BUGS
Send bug reports to fftw@fftw.org.
.SH AUTHORS
Written by Steven G. Johnson and Matteo Frigo.
Copyright (c) 2003, 2007-14 Matteo Frigo
.br
Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
.SH "SEE ALSO"
fftw-wisdom(1)

View File

@@ -0,0 +1,82 @@
#! /bin/sh
if test "x$1" = "x--help" || test "x$1" = "x-h"; then
cat <<EOF
Usage: fftw-wisdom-to-conf [OPTIONS] [< INPUT] [> OUTPUT]
Convert wisdom (stdin) to C configuration routine (stdout).
Options:
-h, --help: print this help
-V, --version: print version/copyright info
EOF
exit 0
fi
if test "x$1" = "x--version" || test "x$1" = "x-V"; then
cat <<EOF
fftw-wisdom-to-conf from FFTW version @VERSION@
Copyright (c) 2003, 2007-14 Matteo Frigo
Copyright (c) 2003, 2007-14 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
EOF
exit 0
fi
read preamble fftw_wisdom
case "$preamble $fftw_wisdom" in
\(@PACKAGE@-@VERSION@\ *_wisdom*)
prefix=`echo $fftw_wisdom | cut -d_ -f1`_
;;
*)
echo "fftw-wisdom-to-conf: invalid wisdom" 1>&2
exit 1
;;
esac
cat <<EOF
/* Automatically generated by fftw-wisdom-to-conf from @PACKAGE@ @VERSION@.
DO NOT EDIT! (Unless you really, really want to. Then it's okay.) */
void ${prefix}configure_planner(void *plnr)
{
struct solvtab_s { void (*reg)(void *); const char *reg_nam; };
extern void ${prefix}solvtab_exec(const struct solvtab_s s[], void *);
#define DECLARE(name) extern void name(void *);
#define STRINGIZEx(x) #x
#define STRINGIZE(x) STRINGIZEx(x)
#define SOLVTAB(s) { s, STRINGIZE(s) },
#define DO(X) \\
EOF
sed 's/ *(//' | cut -d" " -f1 | grep -v -- - | egrep -v '^ *\)*$' | sort | uniq | while read reg_nam; do
printf ' X(%s)\\\n' "$reg_nam"
done
cat <<EOF
/* end DO(X) */
DO(DECLARE)
const struct solvtab_s s[] = {
DO(SOLVTAB)
{ 0, 0 }
};
${prefix}solvtab_exec(s, plnr);
}
EOF

View File

@@ -0,0 +1,360 @@
/* Re-use libbench2 and the test program, but override bench_main so that
we can have different command-line syntax. */
#include "libbench2/my-getopt.h"
#include "libbench2/bench.h"
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "api/fftw3.h"
#include <string.h>
#include <time.h>
#if defined(HAVE_THREADS) || defined(HAVE_OPENMP)
# define HAVE_SMP
extern int threads_ok;
#endif
#define CONCAT(prefix, name) prefix ## name
#if defined(BENCHFFT_SINGLE)
#define FFTW(x) CONCAT(fftwf_, x)
#elif defined(BENCHFFT_LDOUBLE)
#define FFTW(x) CONCAT(fftwl_, x)
#elif defined(BENCHFFT_QUAD)
#define FFTW(x) CONCAT(fftwq_, x)
#else
#define FFTW(x) CONCAT(fftw_, x)
#endif
/* from bench.c: */
extern unsigned the_flags;
extern int usewisdom;
extern int nthreads;
/* dummy routines to replace those in hook.c */
void install_hook(void) {}
void uninstall_hook(void) {}
int verbose;
static void do_problem(bench_problem *p)
{
if (verbose)
printf("Planning transform: %s\n", p->pstring);
/* BENCH_ASSERT(can_do(p)); */
problem_alloc(p);
setup(p);
done(p);
}
static void add_problem(const char *pstring,
bench_problem ***p, int *ip, int *np)
{
if (*ip >= *np) {
*np = *np * 2 + 1;
*p = (bench_problem **) realloc(*p, sizeof(bench_problem *) * *np);
}
(*p)[(*ip)++] = problem_parse(pstring);
}
static int sz(const bench_problem *p)
{
return tensor_sz(p->sz) * tensor_sz(p->vecsz);
}
static int prob_size_cmp(const void *p1_, const void *p2_)
{
const bench_problem * const *p1 = (const bench_problem * const *) p1_;
const bench_problem * const *p2 = (const bench_problem * const *) p2_;
return (sz(*p1) - sz(*p2));
}
static struct my_option options[] =
{
{"help", NOARG, 'h'},
{"version", NOARG, 'V'},
{"verbose", NOARG, 'v'},
{"canonical", NOARG, 'c'},
{"time-limit", REQARG, 't'},
{"output-file", REQARG, 'o'},
{"impatient", NOARG, 'i'},
{"measure", NOARG, 'm'},
{"estimate", NOARG, 'e'},
{"exhaustive", NOARG, 'x'},
{"no-system-wisdom", NOARG, 'n'},
{"wisdom-file", REQARG, 'w'},
#ifdef HAVE_SMP
{"threads", REQARG, 'T'},
#endif
/* options to restrict configuration to rdft-only, etcetera? */
{0, NOARG, 0}
};
static void help(FILE *f, const char *program_name)
{
fprintf(
f,
"Usage: %s [options] [sizes]\n"
" Create wisdom (pre-planned/optimized transforms) for specified sizes,\n"
" writing wisdom to stdout (or to a file, using -o).\n"
"\nOptions:\n"
" -h, --help: print this help\n"
" -V, --version: print version/copyright info\n"
" -v, --verbose: verbose output\n"
" -c, --canonical: plan/optimize canonical set of sizes\n"
" -t <h>, --time-limit=<h>: time limit in hours (default: 0, no limit)\n"
" -o FILE, --output-file=FILE: output to FILE instead of stdout\n"
" -m, --measure: plan in MEASURE mode (PATIENT is default)\n"
" -e, --estimate: plan in ESTIMATE mode (not recommended)\n"
" -x, --exhaustive: plan in EXHAUSTIVE mode (may be slow)\n"
" -n, --no-system-wisdom: don't read /etc/fftw/ system wisdom file\n"
" -w FILE, --wisdom-file=FILE: read wisdom from FILE (stdin if -)\n"
#ifdef HAVE_SMP
" -T N, --threads=N: plan with N threads\n"
#endif
"\nSize syntax: <type><inplace><direction><geometry>\n"
" <type> = c/r/k for complex/real(r2c,c2r)/r2r\n"
" <inplace> = i/o for in/out-of place\n"
" <direction> = f/b for forward/backward, omitted for k transforms\n"
" <geometry> = <n1>[x<n2>[x...]], e.g. 10x12x14\n"
" -- for k transforms, after each dimension is a <kind>:\n"
" <kind> = f/b/h/e00/e01/e10/e11/o00/o01/o10/o11\n"
" for R2HC/HC2R/DHT/REDFT00/.../RODFT11\n"
, program_name);
}
/* powers of two and ten up to 2^20, for now */
static char canonical_sizes[][32] = {
"1", "2", "4", "8", "16", "32", "64", "128", "256", "512", "1024",
"2048", "4096", "8192", "16384", "32768", "65536", "131072",
"262144", "524288", "1048576",
"10", "100", "1000", "10000", "100000", "1000000",
"2x2", "4x4", "8x8", "10x10", "16x16", "32x32", "64x64", "100x100",
"128x128", "256x256", "512x512", "1000x1000", "1024x1024",
"2x2x2", "4x4x4", "8x8x8", "10x10x10", "16x16x16", "32x32x32",
"64x64x64", "100x100x100"
};
#define NELEM(array)(sizeof(array) / sizeof((array)[0]))
int bench_main(int argc, char *argv[])
{
int c;
unsigned i;
int impatient = 0;
int system_wisdom = 1;
int canonical = 0;
double hours = 0;
FILE *output_file;
char *output_fname = 0;
bench_problem **problems = 0;
int nproblems = 0, iproblem = 0;
time_t begin;
verbose = 0;
usewisdom = 0;
bench_srand(1);
#ifdef HAVE_SMP
/* do not configure FFTW with threads, unless the
user requests -T */
threads_ok = 0;
#endif
while ((c = my_getopt(argc, argv, options)) != -1) {
switch (c) {
case 'h':
help(stdout, argv[0]);
exit(EXIT_SUCCESS);
break;
case 'V':
printf("fftw-wisdom tool for FFTW version " VERSION ".\n");
printf(
"\n"
"Copyright (c) 2003, 2007-14 Matteo Frigo\n"
"Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology\n"
"\n"
"This program is free software; you can redistribute it and/or modify\n"
"it under the terms of the GNU General Public License as published by\n"
"the Free Software Foundation; either version 2 of the License, or\n"
"(at your option) any later version.\n"
"\n"
"This program is distributed in the hope that it will be useful,\n"
"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
"GNU General Public License for more details.\n"
"\n"
"You should have received a copy of the GNU General Public License\n"
"along with this program; if not, write to the Free Software\n"
"Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n"
);
exit(EXIT_SUCCESS);
break;
case 'v':
verbose = 1;
break;
case 'c':
canonical = 1;
break;
case 't':
hours = atof(my_optarg);
break;
case 'o':
if (output_fname)
bench_free(output_fname);
if (!strcmp(my_optarg, "-"))
output_fname = 0;
else {
output_fname = (char *) bench_malloc(sizeof(char) *
(strlen(my_optarg) + 1));
strcpy(output_fname, my_optarg);
}
break;
case 'm':
case 'i':
impatient = 1;
break;
case 'e':
the_flags |= FFTW_ESTIMATE;
break;
case 'x':
the_flags |= FFTW_EXHAUSTIVE;
break;
case 'n':
system_wisdom = 0;
break;
case 'w': {
FILE *w = stdin;
if (strcmp(my_optarg, "-") && !(w = fopen(my_optarg, "r"))) {
fprintf(stderr,
"fftw-wisdom: error opening \"%s\": ", my_optarg);
perror("");
exit(EXIT_FAILURE);
}
if (!FFTW(import_wisdom_from_file)(w)) {
fprintf(stderr, "fftw_wisdom: error reading wisdom "
"from \"%s\"\n", my_optarg);
exit(EXIT_FAILURE);
}
if (w != stdin)
fclose(w);
break;
}
#ifdef HAVE_SMP
case 'T':
nthreads = atoi(my_optarg);
if (nthreads < 1) nthreads = 1;
threads_ok = 1;
BENCH_ASSERT(FFTW(init_threads)());
break;
#endif
case '?':
/* `my_getopt' already printed an error message. */
cleanup();
return EXIT_FAILURE;
default:
abort ();
}
}
if (!impatient)
the_flags |= FFTW_PATIENT;
if (system_wisdom)
if (!FFTW(import_system_wisdom)() && verbose)
fprintf(stderr, "fftw-wisdom: system-wisdom import failed\n");
if (canonical) {
for (i = 0; i < NELEM(canonical_sizes); ++i) {
unsigned j;
char types[][8] = {
"cof", "cob", "cif", "cib", "rof", "rob", "rif", "rib"
};
for (j = 0; j < NELEM(types); ++j) {
char ps[64];
if (!strchr(canonical_sizes[i],'x')
|| !strchr(types[j],'o')) {
#ifdef HAVE_SNPRINTF
snprintf(ps, sizeof(ps), "%s%s", types[j], canonical_sizes[i]);
#else
sprintf(ps, "%s%s", types[j], canonical_sizes[i]);
#endif
add_problem(ps, &problems, &iproblem, &nproblems);
}
}
}
}
while (my_optind < argc) {
if (!strcmp(argv[my_optind], "-")) {
char s[1025];
while (1 == fscanf(stdin, "%1024s", s))
add_problem(s, &problems, &iproblem, &nproblems);
}
else
add_problem(argv[my_optind], &problems, &iproblem, &nproblems);
++my_optind;
}
nproblems = iproblem;
qsort(problems, nproblems, sizeof(bench_problem *), prob_size_cmp);
if (!output_fname)
output_file = stdout;
else
if (!(output_file = fopen(output_fname, "w"))) {
fprintf(stderr,
"fftw-wisdom: error creating \"%s\"", output_fname);
perror("");
exit(EXIT_FAILURE);
}
begin = time((time_t*)0);
for (iproblem = 0; iproblem < nproblems; ++iproblem) {
if (hours <= 0
|| hours > (time((time_t*)0) - begin) / 3600.0)
do_problem(problems[iproblem]);
problem_destroy(problems[iproblem]);
}
free(problems);
if (verbose && hours > 0
&& hours < (time((time_t*)0) - begin) / 3600.0)
fprintf(stderr, "EXCEEDED TIME LIMIT OF %g HOURS.\n", hours);
FFTW(export_wisdom_to_file)(output_file);
if (output_file != stdout)
fclose(output_file);
if (output_fname)
bench_free(output_fname);
cleanup();
return EXIT_SUCCESS;
}

View File

@@ -0,0 +1,196 @@
.\"
.\" Copyright (c) 2003, 2007-14 Matteo Frigo
.\" Copyright (c) 2003, 2007-14 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
.\"
.TH FFTW-WISDOM 1 "February, 2003" "fftw" "fftw"
.SH NAME
fftw@PREC_SUFFIX@\-wisdom \- create wisdom (pre-optimized FFTs)
.SH SYNOPSIS
.B fftw@PREC_SUFFIX@\-wisdom
[\fIOPTION\fR]... [\fISIZE\fR]...
.SH DESCRIPTION
.PP
.\" Add any additional description here
.I fftw@PREC_SUFFIX@\-wisdom
is a utility to generate FFTW
.B wisdom
files, which contain saved information about how to optimally compute
(Fourier) transforms of various sizes. FFTW is a free library to
compute discrete Fourier transforms in one or more dimensions, for
arbitrary sizes, and of both real and complex data, among other
related operations. More information on FFTW can be found at the FFTW
home page:
.I http://www.fftw.org
Programs using FFTW can be written to load wisdom from an arbitrary file,
string, or other source. Moreover, it is likely that many FFTW-using
programs will load the \fBsystem wisdom\fR file, which is stored in
.I /etc/fftw/wisdom@PREC_SUFFIX@
by default.
.I fftw@PREC_SUFFIX@\-wisdom
can be used to create or add to such wisdom files. In its most
typical usage, the wisdom file can be created to pre-plan a canonical
set of sizes (see below) via:
.ce
fftw@PREC_SUFFIX@\-wisdom \-v \-c \-o wisdom@PREC_SUFFIX@
(this will take many hours, which can be limited by the
.B \-t
option) and the output
.I wisdom@PREC_SUFFIX@
file can then be copied (as root) to
.I /etc/fftw/
or whatever.
The
.I fftw@PREC_SUFFIX@\-wisdom
program normally writes the wisdom directly to standard output, but this
can be changed via the
.B \-o
option, as in the example above.
If the system wisdom file
.I /etc/fftw/wisdom@PREC_SUFFIX@
already exists, then
.I fftw@PREC_SUFFIX@\-wisdom
reads this existing wisdom (unless the
.B \-n
option is specified) and outputs both the old wisdom and any
newly created wisdom. In this way, it can be used to add new transform
sizes to the existing system wisdom (or other wisdom file, with the
.B \-w
option).
.SH SPECIFYING SIZES
Although a canonical set of sizes to optimize is specified by the
.B \-c
option, the user can also specify zero or more non-canonical transform
sizes and types to optimize, via the
.I SIZE
arguments following the option flags. Alternatively, the sizes to
optimize can be read from standard input (whitespace-separated), if a
.I SIZE
argument of "\-" is supplied.
Sizes are specified by the syntax:
.ce
<\fItype\fR><\fIinplace\fR><\fIdirection\fR><\fIgeometry\fR>
<\fItype\fR> is either \'c\' (complex), \'r\' (real, r2c/c2r), or
\'k\' (r2r, per-dimension kinds, specified in the geometry, below).
<\fIinplace\fR> is either \'i\' (in place) or \'o\' (out of place).
<\fIdirection\fR> is either \'f\' (forward) or \'b\' (backward). The
<\fIdirection\fR> should be omitted for \'k\' transforms, where it is
specified via the geometry instead.
<\fIgeometry\fR> is the size and dimensionality of the transform,
where different dimensions are separated by \'x\' (e.g. \'16x32\' for
a two-dimensional 16 by 32 transform). In the case of \'k\'
transforms, the size of each dimension is followed by a "type" string,
which can be one of f/b/h/e00/e01/e10/e11/o00/o01/o10/o11 for
R2HC/HC2R/DHT/REDFT00/.../RODFT11, respectively, as defined in the
FFTW manual.
For example, \'cif12x13x14\' is a three-dimensional 12 by 13 x 14
complex DFT operating in-place. \'rob65536\' is a one-dimensional
size-65536 out-of-place complex-to-real (backwards) transform
operating on Hermitian-symmetry input. \'ki10hx20e01\' is a
two-dimensional 10 by 20 r2r transform where the first dimension is a
DHT and the second dimension is an REDFT01 (DCT-III).
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Display help on the command-line options and usage.
.TP
\fB\-V\fR, \fB\-\-version\fR
Print the version number and copyright information.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
Verbose output. (You can specify this multiple times, or supply a numeric
argument greater than 1, to increase the verbosity level.) Note that the
verbose output will be mixed with the wisdom output (making it impossible
to import), unless you write the wisdom to a file via the
.B \-o
option.
.TP
\fB\-c\fR, \fB\-\-canonical\fR
Optimize/pre-plan a canonical set of sizes: all powers of two and ten
up to 2^20 (1048576), including both real and complex, forward and
backwards, in-place and out-of-place transforms. Also includes two-
and three-dimensional transforms of equal-size dimensions
(e.g. 16x16x16).
.TP
\fB\-t\fR \fIhours\fR, \fB\-\-time\-limit\fR=\fIhours\fR
Stop after a time of
.I hours
(hours) has elapsed, outputting accumulated wisdom. (The problems are planned
in increasing order of size.) Defaults to 0, indicating no time limit.
.TP
\fB\-o\fR \fIfile\fR, \fB\-\-output-file\fR=\fIfile\fR
Send wisdom output to
.I file
rather than to standard output (the default).
.TP
\fB\-m\fR, \fB\-\-measure\fR; \fB\-e\fR, \fB\-\-estimate\fR; \fB\-x\fR, \fB\-\-exhaustive\fR
Normally,
.I fftw@PREC_SUFFIX@\-wisdom
creates plans in FFTW_PATIENT mode, but with these options you can instead
use FFTW_MEASURE, FFTW_ESTIMATE, or FFTW_EXHAUSTIVE modes, respectively,
as described in more detail by the FFTW manual.
Note that wisdom is tagged with the planning patience level, and a
single file can mix different levels of wisdom (e.g. you can mostly
use the patient default, but plan a few sizes that you especially care
about in
.B \-\-exhaustive
mode).
.TP
\fB\-n\fR, \fB\-\-no\-system\-wisdom\fR
Do not import the system wisdom from
.I /etc/fftw/wisdom@PREC_SUFFIX@
(which is normally read by default).
.TP
\fB\-w\fR \fIfile\fR, \fB\-\-wisdom\-file\fR=\fIfile\fR
Import wisdom from
.I file
(in addition to the system wisdom, unless
.B \-n
is specified). Multiple wisdom files can be read via multiple
.B \-w
options. If
.I file
is "\-", then read wisdom from standard input.
.TP
\fB\-T\fR \fIN\fR, \fB\--threads\fR=\fIN\fR
Plan with
.I N
threads. This option is only present if FFTW was configured with
thread support.
.SH BUGS
Send bug reports to fftw@fftw.org.
.SH AUTHORS
Written by Steven G. Johnson and Matteo Frigo.
Copyright (c) 2003, 2007-14 Matteo Frigo
.br
Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
.SH "SEE ALSO"
fftw-wisdom-to-conf(1)

View File

@@ -0,0 +1,196 @@
.\"
.\" Copyright (c) 2003, 2007-14 Matteo Frigo
.\" Copyright (c) 2003, 2007-14 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
.\"
.TH FFTW-WISDOM 1 "February, 2003" "fftw" "fftw"
.SH NAME
fftwf\-wisdom \- create wisdom (pre-optimized FFTs)
.SH SYNOPSIS
.B fftwf\-wisdom
[\fIOPTION\fR]... [\fISIZE\fR]...
.SH DESCRIPTION
.PP
.\" Add any additional description here
.I fftwf\-wisdom
is a utility to generate FFTW
.B wisdom
files, which contain saved information about how to optimally compute
(Fourier) transforms of various sizes. FFTW is a free library to
compute discrete Fourier transforms in one or more dimensions, for
arbitrary sizes, and of both real and complex data, among other
related operations. More information on FFTW can be found at the FFTW
home page:
.I http://www.fftw.org
Programs using FFTW can be written to load wisdom from an arbitrary file,
string, or other source. Moreover, it is likely that many FFTW-using
programs will load the \fBsystem wisdom\fR file, which is stored in
.I /etc/fftw/wisdomf
by default.
.I fftwf\-wisdom
can be used to create or add to such wisdom files. In its most
typical usage, the wisdom file can be created to pre-plan a canonical
set of sizes (see below) via:
.ce
fftwf\-wisdom \-v \-c \-o wisdomf
(this will take many hours, which can be limited by the
.B \-t
option) and the output
.I wisdomf
file can then be copied (as root) to
.I /etc/fftw/
or whatever.
The
.I fftwf\-wisdom
program normally writes the wisdom directly to standard output, but this
can be changed via the
.B \-o
option, as in the example above.
If the system wisdom file
.I /etc/fftw/wisdomf
already exists, then
.I fftwf\-wisdom
reads this existing wisdom (unless the
.B \-n
option is specified) and outputs both the old wisdom and any
newly created wisdom. In this way, it can be used to add new transform
sizes to the existing system wisdom (or other wisdom file, with the
.B \-w
option).
.SH SPECIFYING SIZES
Although a canonical set of sizes to optimize is specified by the
.B \-c
option, the user can also specify zero or more non-canonical transform
sizes and types to optimize, via the
.I SIZE
arguments following the option flags. Alternatively, the sizes to
optimize can be read from standard input (whitespace-separated), if a
.I SIZE
argument of "\-" is supplied.
Sizes are specified by the syntax:
.ce
<\fItype\fR><\fIinplace\fR><\fIdirection\fR><\fIgeometry\fR>
<\fItype\fR> is either \'c\' (complex), \'r\' (real, r2c/c2r), or
\'k\' (r2r, per-dimension kinds, specified in the geometry, below).
<\fIinplace\fR> is either \'i\' (in place) or \'o\' (out of place).
<\fIdirection\fR> is either \'f\' (forward) or \'b\' (backward). The
<\fIdirection\fR> should be omitted for \'k\' transforms, where it is
specified via the geometry instead.
<\fIgeometry\fR> is the size and dimensionality of the transform,
where different dimensions are separated by \'x\' (e.g. \'16x32\' for
a two-dimensional 16 by 32 transform). In the case of \'k\'
transforms, the size of each dimension is followed by a "type" string,
which can be one of f/b/h/e00/e01/e10/e11/o00/o01/o10/o11 for
R2HC/HC2R/DHT/REDFT00/.../RODFT11, respectively, as defined in the
FFTW manual.
For example, \'cif12x13x14\' is a three-dimensional 12 by 13 x 14
complex DFT operating in-place. \'rob65536\' is a one-dimensional
size-65536 out-of-place complex-to-real (backwards) transform
operating on Hermitian-symmetry input. \'ki10hx20e01\' is a
two-dimensional 10 by 20 r2r transform where the first dimension is a
DHT and the second dimension is an REDFT01 (DCT-III).
.SH OPTIONS
.TP
\fB\-h\fR, \fB\-\-help\fR
Display help on the command-line options and usage.
.TP
\fB\-V\fR, \fB\-\-version\fR
Print the version number and copyright information.
.TP
\fB\-v\fR, \fB\-\-verbose\fR
Verbose output. (You can specify this multiple times, or supply a numeric
argument greater than 1, to increase the verbosity level.) Note that the
verbose output will be mixed with the wisdom output (making it impossible
to import), unless you write the wisdom to a file via the
.B \-o
option.
.TP
\fB\-c\fR, \fB\-\-canonical\fR
Optimize/pre-plan a canonical set of sizes: all powers of two and ten
up to 2^20 (1048576), including both real and complex, forward and
backwards, in-place and out-of-place transforms. Also includes two-
and three-dimensional transforms of equal-size dimensions
(e.g. 16x16x16).
.TP
\fB\-t\fR \fIhours\fR, \fB\-\-time\-limit\fR=\fIhours\fR
Stop after a time of
.I hours
(hours) has elapsed, outputting accumulated wisdom. (The problems are planned
in increasing order of size.) Defaults to 0, indicating no time limit.
.TP
\fB\-o\fR \fIfile\fR, \fB\-\-output-file\fR=\fIfile\fR
Send wisdom output to
.I file
rather than to standard output (the default).
.TP
\fB\-m\fR, \fB\-\-measure\fR; \fB\-e\fR, \fB\-\-estimate\fR; \fB\-x\fR, \fB\-\-exhaustive\fR
Normally,
.I fftwf\-wisdom
creates plans in FFTW_PATIENT mode, but with these options you can instead
use FFTW_MEASURE, FFTW_ESTIMATE, or FFTW_EXHAUSTIVE modes, respectively,
as described in more detail by the FFTW manual.
Note that wisdom is tagged with the planning patience level, and a
single file can mix different levels of wisdom (e.g. you can mostly
use the patient default, but plan a few sizes that you especially care
about in
.B \-\-exhaustive
mode).
.TP
\fB\-n\fR, \fB\-\-no\-system\-wisdom\fR
Do not import the system wisdom from
.I /etc/fftw/wisdomf
(which is normally read by default).
.TP
\fB\-w\fR \fIfile\fR, \fB\-\-wisdom\-file\fR=\fIfile\fR
Import wisdom from
.I file
(in addition to the system wisdom, unless
.B \-n
is specified). Multiple wisdom files can be read via multiple
.B \-w
options. If
.I file
is "\-", then read wisdom from standard input.
.TP
\fB\-T\fR \fIN\fR, \fB\--threads\fR=\fIN\fR
Plan with
.I N
threads. This option is only present if FFTW was configured with
thread support.
.SH BUGS
Send bug reports to fftw@fftw.org.
.SH AUTHORS
Written by Steven G. Johnson and Matteo Frigo.
Copyright (c) 2003, 2007-14 Matteo Frigo
.br
Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
.SH "SEE ALSO"
fftw-wisdom-to-conf(1)