kml_fft_mpi_plan_many_transpose

假设有一个n0×n1的数组,以行为主顺序,在n0维上分布块。将其转换为在n1维上块分布的n1×n0数组 。更一般地说,可以执行数字元组的转置,输入和输出的块大小由用户指定。

接口定义

C interface:

kml_fft_plan kml_fft_mpi_plan_many_transpose(ptrdiff_t n0, ptrdiff_t n1, ptrdiff_t howmany,ptrdiff_t block0, ptrdiff_t block1, double *in, double *out, MPI_Comm comm, unsigned flags);

kml_fft_plan kml_fftf_mpi_plan_many_transpose(ptrdiff_t n0, ptrdiff_t n1, ptrdiff_t howmany,ptrdiff_t block0, ptrdiff_t block1, float *in, float *out, MPI_Comm comm, unsigned flags);

返回值

函数返回一个kml_fft(f)_plan类型的结构体指针。将该对象作为参数传入kml_fft(f/h)_execute函数中使用,将对当前提供的输入in和输出out执行FFT变换。

如果函数返回非空指针,则表示plan执行成功,否则表示执行失败。

参数

参数名

数据类型

描述

输入/输出

n0

ptrdiff_t

输入FFT序列第一维的大小,约束:n0 ≥ 1。

输入

n1

ptrdiff_t

输入FFT序列第二维的大小,约束:n1 ≥ 1。

输入

howmany

int

howmany表示要多少个变换。

输入

block0

ptrdiff_t

n0维度上的block大小。

输入

block1

ptrdiff_t

n1维度上的block大小。

输入

in

  • 双精度:double*
  • 单精度:float*

输入待变换的数据。

输入

out

  • 双精度:double*
  • 单精度:float*

输出快速傅里叶变换后的数据。

输出

comm

MPI_Comm

MPI通信器的句柄。

输入

flags

unsigned int

对于转置plan,这些标志所指示的分别是输出和/或输入被局部转置。

输入

依赖

C: "kfft-mpi.h"

示例

kml_fft(f)_mpi_local_size_many_transposed的相关用例。