sdsc / p3dfft

P3DFFT stands for Parallel Three-Dimensional Fast Fourier Transforms. It is a library for large-scale computer simulations on parallel platforms. It implements 3D FFT and related algorithms such as Chebyshev transform (an important class of algorithm for simulations in a wide range of fields). P3DFFT uses 2D, or pencil, decomposition. For more information:
http://www.p3dfft.net
Other
54 stars 16 forks source link

pos0 bug again #5

Closed dkolom closed 7 years ago

dkolom commented 7 years ago

Thank you for dealing with the pos0 bug! Sorry to raise this point again, but it seems that pos0 = (x-1)*jjsize is not always the right value in that part of the code, but pos0 = 0 seems correct. The FFT was correct before the bug fix if the compiler initialized integers with zeros, I've been using it for years like that. Also it worked when I set pos0 = 0 and compiled with -finit-integer=10000000. I don't know why, but the new bug fix makes the FFT fail in those cases when it worked before (like nx=128 ny=128 nz=192, mpidims= 1 24). My config string is as follows: ./configure --prefix=$PWD --enable-gnu --enable-fftw --with-fftw=${FFT_ROOT} --enable-measure --enable-stride1 LDFLAGS="-lm"

Besides that, in ftran.F90 184 : call init_f_c(buf,1,nz, XYZg,1,nz,nz,jjsize,op) 542 : call init_f_c(buf,1,nz, XYZg,1,nz,nz,jjsize,op) Parameter 'op' probably shouldn't be there. Maybe it's not a big deal, I just noticed it because my new compiler gave a warning.

dmitrypek commented 7 years ago

HI, thanks again for catching this. I believe I have fixed it now. It works for all cases I've tried. Please give it a try.

dkolom commented 7 years ago

Now it works for me too. Thank you for taking care of those issues!