dealias / fftwpp Goto Github PK
View Code? Open in Web Editor NEWFast Fourier Transform C++ Header/MPI Transpose for FFTW3 with Implicitly Dealiased Convolutions
Home Page: http://fftwpp.sourceforge.net/
License: GNU General Public License v3.0
Fast Fourier Transform C++ Header/MPI Transpose for FFTW3 with Implicitly Dealiased Convolutions
Home Page: http://fftwpp.sourceforge.net/
License: GNU General Public License v3.0
Hello,
someone could help me to link this libary in Qt?
MZ
error "cannot find -lfftw3" pops up
I want to conduct a serial computation, how to set it? I have noticed that all the examples has set the maxthreads .
Hello John and/or Malcolm,
It's been a while. I have heard very good things about fftwpp recently and am very curious to try it out. I thought there was a wrapper for python. If yes do you have any advice on how one might set this up? If no maybe it's too much work.
Thanks for putting this together, it looks really great!
Francis
I have a Visual Studio project using FFTWpp and I have run into the following build problem. I am getting errors of unresolved external symbols. I am using fftwpp from vcpkg but I obtained the same errors using the library directly. The errors arise in the obj file. The output is the following.
error LNK2019: unresolved external symbol "public: __cdecl fftwpp::ThreadBase::ThreadBase(void)" (??0ThreadBase@fftwpp@@qeaa@XZ) referenced in function "public: __cdecl fftwpp::fftw::fftw(unsigned int,int,unsigned int,unsigned int)" (??0fftw@fftwpp@@qeaa@IHII@Z)
error LNK2001: unresolved external symbol "char const * const fftwpp::inout" (?inout@fftwpp@@3PEBDEB)
error LNK2001: unresolved external symbol "public: static unsigned int fftwpp::fftw::effort" (?effort@fftw@fftwpp@@2ia)
error LNK2001: unresolved external symbol "public: static unsigned int fftwpp::fftw::maxthreads" (?maxthreads@fftw@fftwpp@@2ia)
error LNK2001: unresolved external symbol "public: static double fftwpp::fftw::testseconds" (?testseconds@fftw@fftwpp@@2NA)
error LNK2001: unresolved external symbol "public: static struct fftw_plan_s * (__cdecl* fftwpp::fftw::planner)(class fftwpp::fftw *,class std::complex *,class std::complex *)" (?planner@fftw@fftwpp@@2P6APEAUfftw_plan_s@@PEAV12@PEAV?$complex@N@std@@1@ZEA)
Do you have any ideas on how to fix this?
I try to configure C code as follows:
./configure --with-fftw=/usr/local/fftw-3.3.6-pl2/
But I receive the error stated in the title.
I've tried adding the lib directory to the LD_LIBRARY_PATH and configure it with -L.
Thanks for the help
Error:
~/fftw++-2.02/Complex.h:31:7: error: expected identifier before numeric constant
class Complex
^
~/fftw++-2.02/Complex.h:31:7: error: expected unqualified-id before numeric constant
Used compiler: g++-4.8.5 and g++-5.3.0
With OpenMPI 1.6.5 / gcc 4.9.3
I have:
vhuber@machine: mpirun -npernode 16 ./cconv2 -i -S-1 -T1 -m64
Configuration: 16 nodes X 1 threads/node
Using MPI VERSION 2
N=244
A=2
mx=64, my=64
[irma-atlas:19263] *** An error occurred in MPI_Alltoall
[irma-atlas:19263] *** on communicator MPI COMMUNICATOR 4 SPLIT FROM 3
[irma-atlas:19263] *** MPI_ERR_ARG: invalid argument of some other kind
[irma-atlas:19263] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
--------------------------------------------------------------------------
mpirun has exited due to process rank 13 with PID 19270 on
node irma-atlas exiting improperly. There are two reasons this could occur:
1. this process did not call "init" before exiting, but others in
the job did. This can cause a job to hang indefinitely while it waits
for all processes to call "init". By rule, if one process calls "init",
then ALL processes must call "init" prior to termination.
2. this process called "init", but exited without calling "finalize".
By rule, all processes that call "init" MUST call "finalize" prior to
exiting or it will be considered an "abnormal termination"
This may have caused other processes in the application to be
terminated by signals sent by mpirun (as reported here).
--------------------------------------------------------------------------
[irma-atlas:19229] 15 more processes have sent help message help-mpi-errors.txt / mpi_errors_are_fatal
[irma-atlas:19229] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
Whith OpenMpi 1.10.3 / gcc 4.9.0
mpirun -np 4 ./cconv2 -i -S-1 -T1 -m64
Configuration: 4 nodes X 1 threads/node
Using MPI VERSION 3
N=244
A=2
mx=64, my=64
[irma-atlas:47509] *** An error occurred in MPI_Ialltoall
[irma-atlas:47509] *** reported by process [1019478017,0]
[irma-atlas:47509] *** on communicator MPI_COMM_WORLD
[irma-atlas:47509] *** MPI_ERR_INTERN: internal error
[irma-atlas:47509] *** MPI_ERRORS_ARE_FATAL (processes in this communicator will now abort,
[irma-atlas:47509] *** and potentially your MPI job)
Looking into the code, it appears that this fails when using MPI_IN_PLACE
I though that was linked to open-mpi/ompi#1023
Hi,
The isfinite() function in Complex.h calls isinf and isnan, but these should be std::isinf and std::isnan if including cmath (or include math.h instead), as per this discussion:
/usr/include/bits/getopt_core.h:91:12: error: declaration of βint getopt(int, char* const*, const char*) throw ()β has a different exception specifier
extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
clang-tidy is giving the following:
Array.h:192:5: warning: Call to virtual method 'array1::Dimension' during construction bypasses virtual dispatch [clang-analyzer-optin.cplusplus.VirtualCall]
Dimension(nx0);
^
fftw++.cpp:22:19: note: Calling constructor for 'array1<std::complex<double>>'
array1<Complex> f(n, align);
^
Array.h:204:5: note: Calling 'array1::Allocate'
Allocate(nx0,align);
^
Array.h:192:5: note: Call to virtual method 'array1::Dimension' during construction bypasses virtual dispatch
Dimension(nx0);
^
When compiling my code with fftw++, a bunch of errors popped up. After fixing my own, it looked like most of them were the result of a missing file in fftw++.h . I checked the folders I'd downloaded (and I downloaded fftw++ at most four days ago) and there is no fftw3.h in the folders. I also tried dropping one in from FFTW (one of the other problem areas was line extern "C" fftw_plan Planner(fftw *F, Complex *in, Complex *out);), but that didn't work either... which seems to indicate that the file was excluded on purpose but a number of parts weren't removed from the code. Okay.
If someone could reply soon, that would be great; I'm doing some time-sensitive stuff. If not... well, at least this stuff will be fixed for the next person.
I have noticed there are two kinds of array and Array. Could you please give me some suggestions about the differences between these two arries.
Can we set the storage format of the array. (c like or fortran like.)
I run into segmentation faults when running the tests (conv2 and conv3, all others seem ok).
I'm using clang, and to get convolution.cc to compile (non-POD variable-length arrays are not suported), I modified ImplicitHConvolution::convolve as follows
void ImplicitHConvolution::convolve(Complex **F,
realmultiplier *pmult, unsigned int offset)
475- Complex c1c[C] ;
475+ Complex * c1c = new Complex[C];
...
515- Complex S[B];
515+ Complex * S = new Complex[B]
...
601+ delete[] c1c;
602+ delete[] S;
The tests (conv2/conv3) give a segmentation fault when running
void ImplicitConvolution::convolve(Complex **F,
multiplier *pmult, unsigned int offset)
at the point where premult is called (more specifically at line 249)
213 void ImplicitHConvolution::premult(Complex ** F,
unsigned int offset,
Complex* f1c){
...
if(even) {
...
for(unsigned int i=0; i < A; ++i) {
...
249 STORE(f1c+i,CONJ(A+B)); //segmentation fault
}
}
}
I haven't tested with any other compilers. I was wondering if this is due to the changes I made, a clang issue, or something else?
Thanks for the help.
Just in case, this is the output
$ ./conv2
min padded buffer=10
min padded buffer=10
nx=16, ny=16
mx=4, my=4
N=39062
threads=1
Segmentation fault: 11
$ ./conv3
min padded buffer=10
min padded buffer=10
min padded buffer=10
nx=16, ny=16, nz=16
mx=4, my=4, mz=4
N=2441
threads=1
Segmentation fault: 11
I'm trying to use this library in Qt, and i cannot find where functions like fftw_export_wisdom_to_string() are located, either in this codebase or any online. Where were these functions expected to be defined?
Running the mpi unit tests, I had at least one failure using 68797f9. This is with fftw 3.3.6-pl2
Running the case
mpirun -n 8 ./conv3 -x2 -y2 -z2 -N1 -s1 -a1 -X0 -Y1 -Z1 -A2 -T3 -tq
fails with code 134, which is a memory corruption. This is reproducable on our cascade test machine.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.