Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
fftw_mpi_plan_dft_r2c_3d的奇怪行为_C_Openmpi_Fftw - Fatal编程技术网

fftw_mpi_plan_dft_r2c_3d的奇怪行为

fftw_mpi_plan_dft_r2c_3d的奇怪行为,c,openmpi,fftw,C,Openmpi,Fftw,fftw_mpi_plan_dft_r2c_3d的运行时行为似乎受到前三个参数的强烈影响。以下代码基本上是从fftw文档中复制的。通过将L设置为512并运行48个进程,它会给出分段错误,但只要将L更改为1024,一切都会好起来。我使用带有fftw-3.3.3的Linux服务器和带有fftw-3.3.4的mac获得了相同的结果 #include <fftw3-mpi.h> #include <stdio.h> int main(int argc, char **argv)

fftw_mpi_plan_dft_r2c_3d的运行时行为似乎受到前三个参数的强烈影响。以下代码基本上是从fftw文档中复制的。通过将L设置为512并运行48个进程,它会给出分段错误,但只要将L更改为1024,一切都会好起来。我使用带有fftw-3.3.3的Linux服务器和带有fftw-3.3.4的mac获得了相同的结果

#include <fftw3-mpi.h>
#include <stdio.h>

int main(int argc, char **argv){   
    const ptrdiff_t L = 512, M = 512, N = 512;
    fftw_plan plan;
    double *rin;
    fftw_complex *cout;
    ptrdiff_t alloc_local, local_n0, local_0_start, i, j, k;
    MPI_Init(&argc, &argv);
    fftw_mpi_init();

    /* get local data size and allocate */
    alloc_local = fftw_mpi_local_size_3d(L,M,N/2+1,MPI_COMM_WORLD,&local_n0, &local_0_start);
    rin = fftw_alloc_real(2 * alloc_local);
    cout = fftw_alloc_complex(alloc_local);
    printf("allocated\n");
    /* create plan for out-of-place r2c DFT */
    plan = fftw_mpi_plan_dft_r2c_3d(L,M,N,rin,cout, MPI_COMM_WORLD,FFTW_MEASURE);
    printf("plan made\n");
    fftw_destroy_plan(plan);
    MPI_Finalize();
}

崩溃发生在代码的哪一行?@PaulR fftw\u mpi\u plan\u dft\u r2c\u 3添加一些错误检查以确保rin、cout分配成功(即不为空)?@PaulR我确实这样做了。即使L=1024,它也运行良好,所以fftw_alloc不会有问题。它看起来像是OpenMPI中的一个错误。请向OpenMPI开发人员报告(发布到用户列表),否则可能是FFTW错误地计算了某种散射分布,从而导致重叠段。在任何情况下,请询问开放式MPI人员。
[MBP:01251] *** Process received signal ***
[MBP:01251] Signal: Segmentation fault: 11 (11)
[MBP:01251] Signal code:  (0)
[MBP:01251] Failing at address: 0x0
[MBP:01251] [ 0] 0   libsystem_platform.dylib            0x00007fff8fcc8f1a _sigtramp + 26
[MBP:01251] [ 1] 0   mca_pml_ob1.so                      0x0000000102eee422 append_frag_to_list + 594
[MBP:01251] *** End of error message ***