fftw_mpi_local_size_3d的返回值应该取决于c2c,c2r还是r2c,对吗?

时间:2014-06-04 17:00:57

标签: c mpi fftw

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

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

现在,根据FFTW文档(http://www.fftw.org/doc/MPI-Data-Distribution-Functions.html),函数fftw_mpi_local_size_3d返回您应该在当前节点中为该转换分配的复杂数字的数量,无论是否变换是c2c,c2r或r2c。但是,鉴于传递给该函数的参数,它无法确定您将要执行哪些操作,因此,在1个单节点的情况下,它将始终返回n_grid * n_grid * n_grid,大约是它真正必要的两倍(我试图尽可能多地节省内存)。知道了这一点,就可以将fftw_mpi_local_size_3d的输出除以n_grid,然后将其乘以(n_grid / 2 + 1),以便找到为c2r / r2c分配的复杂元素的实际数量,但是我&#39 ; m担心这对于任意数量的节点是否安全(我不能想到其中的原因)。

一个相关的问题是,在使用转置分布时,是否可以做同样的事情。

提前感谢您的答案。

0 个答案:

没有答案