fortran - fftw_mpi_plan_dft_3d fails with Segmentation fault -


the following 3d complex fft fortran mpi program runs when number of processes p = 1, 2, 4, 8, , 16. but, fails when p = 12 following error @ place function fftw_mpi_plan_dft_3d called.

"program received signal sigsegv: segmentation fault - invalid memory reference."

why program fail p = 12?

program test   use, intrinsic :: iso_c_binding    implicit none   include 'mpif.h'   include 'fftw3-mpi.f03'    integer :: ier   integer(c_intptr_t), parameter :: l = 256   integer(c_intptr_t), parameter :: n = 256   integer(c_intptr_t), parameter :: m = 48   type(c_ptr) :: plan, cdata   complex(c_double_complex), pointer :: data(:,:,:)   integer(c_intptr_t) :: i, j, alloc_local, local_m, local_j_offset    call mpi_init(ier)    call fftw_mpi_init    alloc_local = fftw_mpi_local_size_3d(m, n, l, mpi_comm_world, local_m, local_j_offset)   cdata = fftw_alloc_complex(alloc_local)   call c_f_pointer(cdata, data, [l, n, local_m])    plan = fftw_mpi_plan_dft_3d(m, n, l, data, data, mpi_comm_world, fftw_forward, fftw_estimate)    call fftw_destroy_plan(plan)   call fftw_free(cdata)    call mpi_finalize(ier)   stop  end program test 

i see same problem fftw_mpi_plan_dft_c2r on cray xe6 using cray-mpich 7.1.3. doesn't matter if fftw compiled gcc, cray cc, or intel icc. segmentation fault occurs combinations of array dimensions , number of processors. 1 combination results in segfault array size 1920,3840,3840 on 128 processes. original post, used fftw_estimate , no transform done planner. stack trace follows.

#0  0x00000000008f26f0 in ?? () #1  0x00000000004179bb in fftw_plan_destroy_internal (ego=0x8e2af0) @ plan.c:49 #2  0x000000000040d755 in mkplan (ego_=0x8def60, p_=0x8f1440, plnr=0x8d6110) @ transpose-pairwise.c:467 #3  0x0000000000418a07 in invoke_solver (ego=0x8d6110, p=0x8f1440, s=0x8def60, nflags=0x7fffffff4fc0) @ planner.c:486 #4  0x0000000000418b9c in search0 (ego=0x8d6110, p=0x8f1440, slvndx=0x7fffffff4fcc, flagsp=0x7fffffff4fc0) @ planner.c:529 #5  0x0000000000418db8 in search (ego=0x8d6110, p=0x8f1440, slvndx=0x7fffffff4fcc, flagsp=0x7fffffff4fc0) @ planner.c:600 #6  0x00000000004191d8 in mkplan (ego=0x8d6110, p=0x8f1440) @ planner.c:711 #7  0x0000000000419d35 in fftw_mkplan_d (ego=0x8d6110, p=0x8f1440) @ planner.c:970 #8  0x0000000000411d47 in mkplan (ego_=0x8df140, p_=0x8df930, plnr=0x8d6110) @ dft-rank1-bigvec.c:165 #9  0x0000000000418a07 in invoke_solver (ego=0x8d6110, p=0x8df930, s=0x8df140, nflags=0x7fffffff5290) @ planner.c:486 #10 0x0000000000418b9c in search0 (ego=0x8d6110, p=0x8df930, slvndx=0x7fffffff529c, flagsp=0x7fffffff5290) @ planner.c:529 #11 0x0000000000418db8 in search (ego=0x8d6110, p=0x8df930, slvndx=0x7fffffff529c, flagsp=0x7fffffff5290) @ planner.c:600 #12 0x00000000004191d8 in mkplan (ego=0x8d6110, p=0x8df930) @ planner.c:711 #13 0x0000000000419d35 in fftw_mkplan_d (ego=0x8d6110, p=0x8df930) @ planner.c:970 #14 0x00000000004157b1 in mkplan (ego_=0x8df4a0, p_=0x8df650, plnr=0x8d6110) @ rdft2-rank-geq2.c:179 #15 0x0000000000418a07 in invoke_solver (ego=0x8d6110, p=0x8df650, s=0x8df4a0, nflags=0x7fffffff5550) @ planner.c:486 #16 0x0000000000418b9c in search0 (ego=0x8d6110, p=0x8df650, slvndx=0x7fffffff555c, flagsp=0x7fffffff5550) @ planner.c:529 #17 0x0000000000418db8 in search (ego=0x8d6110, p=0x8df650, slvndx=0x7fffffff555c, flagsp=0x7fffffff5550) @ planner.c:600 #18 0x00000000004191d8 in mkplan (ego=0x8d6110, p=0x8df650) @ placner.c:711 #19 0x000000000041d1e2 in mkplan0 (plnr=0x8d6110, flags=64, prb=0x8df650, hash_info=0, wisdom_state=wisdom_normal) @ apiplan.c:34 #20 0x000000000041d229 in mkplan (plnr=0x8d6110, flags=64, prb=0x8df650, hash_info=0) @ apiplan.c:48 #21 0x000000000041d438 in fftw_mkapiplan (sign=0, flags=0, prb=0x8df650) @ apiplan.c:111 #22 0x000000000040a385 in plan_guru_rdft2 (rnk=3, dims0=0x8df540, howmany=1, r=0x2aab74c21010, c=0x2aab73000010, comm=1140850688, kind=hc2r00, flags=64) @ api.c:784 #23 0x000000000040a542 in fftw_mpi_plan_many_dft_c2r (rnk=3, n=0x7fffffff5830, howmany=1, iblock=0, oblock=0, in=0x2aab73000010, out=0x2aab74c21010, comm=1140850688, flags=64) @ api.c:831 

Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -