mpip / pfft

Parallel fast Fourier transforms
GNU General Public License v3.0
54 stars 23 forks source link

Triggering MPICH_NO_BUFFER_ALIAS_CHECK. #19

Open rainwoodman opened 9 years ago

rainwoodman commented 9 years ago

If I use the patched version of FFTW3 directly, I get this error with a r2c in place transformation:

PMPI_Alltoall(925): Buffers must not be aliased. Consider using MPI_IN_PLACE or setting MPICH_NO_BUFFER_ALIAS_CHECK Rank 118 [Mon Sep 14 16:51:53 2015] [c2-3c2s10n2] Fatal error in PMPI_Alltoall: Invalid buffer pointer, error stack: PMPI_Alltoall(966): MPI_Alltoall(sbuf=0x2aab0cf9a040, scount=524800, MPI_FLOAT, rbuf=0x2aab0cf9a040, rcount=524800, MPI_FLOAT, comm=0xc4000002) failed

I wonder why at all we are doing a Alltoall from the same address? Is it safe to just skip this transformation if I == O?

mpip commented 9 years ago

Does this error only occur with the patched version? An inplace Alltoall does not mean that we do not exchange any data between processes. It just means that all the incoming data is stored at the same memory location, where the outgoing data was before. However, in the case of in-place communication FFTW should not use Alltoall or Alltoallv but a hand coded point-wise communication pattern. This may be a bug in FFTW or in my patch. Therefore, the question if the patch make any difference. Do you have a minimal test that reproduces the bug?

rainwoodman commented 9 years ago

That makes sense. I have not yet seen this with the non-patched FFTW.

Looks like non-patched fftw prefers not to use MPI_Alltoall for in-place transformation; but the patched version prefers to use transpose-alltoall-transposed.c for in-place transform.

I tried to reproduce this with mpi-bench of fftw, but could figure how to use it. Do you know if there is a manual?