fftw_mpi_local_size_3d的返回值应取决于c2c、c2r或r2c,对吗?

fftw_mpi_local_size_3d的返回值应取决于c2c、c2r或r2c,对吗?,c,mpi,fftw,C,Mpi,Fftw,这可能是一个愚蠢的问题,因为这是我第一次在MPI中使用fftw 为了执行三维r2c和c2r转换,我试图在MPI代码中找到每个节点必须分配的内存量。在我的例子中,数组作为大小为n_grid^3的立方体分布,因此原则上,如果我只使用1个节点,我应该分配n_grid*n_grid*(n_grid/2+1)复杂元素和两倍于实际元素的元素(我使用的是就地变换) 现在,根据FFTW文档(),函数FFTW\u mpi\u local\u size\u 3d返回应在当前节点中为该转换分配的复杂数,而不管该转换是

这可能是一个愚蠢的问题,因为这是我第一次在MPI中使用fftw

为了执行三维r2c和c2r转换,我试图在MPI代码中找到每个节点必须分配的内存量。在我的例子中,数组作为大小为n_grid^3的立方体分布,因此原则上,如果我只使用1个节点,我应该分配n_grid*n_grid*(n_grid/2+1)复杂元素和两倍于实际元素的元素(我使用的是就地变换)

现在,根据FFTW文档(),函数FFTW\u mpi\u local\u size\u 3d返回应在当前节点中为该转换分配的复杂数,而不管该转换是c2c、c2r还是r2c。但是,给定传递给这个函数的参数,它无法判断您将执行哪一个,因此,在一个节点的情况下,它将始终返回n_grid*n_grid*n_grid,这大约是实际需要的两倍(我正试图尽可能节省内存)。知道了这一点,就可以将fftw_mpi_local_size_3d的输出除以n_grid,然后将其乘以(n_grid/2+1),以找到要分配给c2r/r2c的复杂元素的实际数量,但我担心这对于任意数量的节点是否安全(我想不出原因)

一个相关的问题是,当使用转置分布时,是否可以做完全相同的事情

提前非常感谢您的回答